From 28e8bceb31f9a4b7a469d4ea750ea2986b48f439 Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Mon, 13 Oct 2025 17:35:26 +0200 Subject: [PATCH 01/77] chore: Merge duplicate v6 and v8 files --- contracts/facets/FacetBase.sol | 8 +-- contracts/facets/FacetBase.v8.sol | 35 ----------- contracts/libs/PocoStorageLib.sol | 25 ++++---- contracts/libs/PocoStorageLib.v8.sol | 92 ---------------------------- 4 files changed, 16 insertions(+), 144 deletions(-) delete mode 100644 contracts/facets/FacetBase.v8.sol delete mode 100644 contracts/libs/PocoStorageLib.v8.sol diff --git a/contracts/facets/FacetBase.sol b/contracts/facets/FacetBase.sol index f42f01523..bc6768e97 100644 --- a/contracts/facets/FacetBase.sol +++ b/contracts/facets/FacetBase.sol @@ -1,10 +1,10 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; +pragma solidity ^0.8.0; -import "../libs/PocoStorageLib.sol"; -import "../interfaces/IOwnable.sol"; +import {IERC5313} from "@openzeppelin/contracts-v5/interfaces/IERC5313.sol"; +import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; // TODO use LibDiamond.contractOwner() when migrating all contracts to v8. @@ -36,7 +36,7 @@ abstract contract FacetBase { function owner() internal view returns (address) { // TODO use LibDiamond.contractOwner() instead of an external call when migrating all contracts to v8. - return IOwnable(address(this)).owner(); + return IERC5313(address(this)).owner(); } function _msgSender() internal view returns (address) { diff --git a/contracts/facets/FacetBase.v8.sol b/contracts/facets/FacetBase.v8.sol deleted file mode 100644 index ed5a74cdb..000000000 --- a/contracts/facets/FacetBase.v8.sol +++ /dev/null @@ -1,35 +0,0 @@ -// SPDX-FileCopyrightText: 2023-2025 IEXEC BLOCKCHAIN TECH -// SPDX-License-Identifier: Apache-2.0 - -pragma solidity ^0.8.0; - -import {IERC5313} from "@openzeppelin/contracts-v5/interfaces/IERC5313.sol"; -import {PocoStorageLib} from "../libs/PocoStorageLib.v8.sol"; - -// TODO use LibDiamond.contractOwner() when migrating all contracts to v8. - -/** - * @title Base contract of all Facet contracts. - * @dev Every facet must inherit from this contract. - */ -abstract contract FacetBase { - // Poco - Constants - uint256 internal constant CONTRIBUTION_DEADLINE_RATIO = 7; - uint256 internal constant REVEAL_DEADLINE_RATIO = 2; - uint256 internal constant FINAL_DEADLINE_RATIO = 10; - uint256 internal constant WORKERPOOL_STAKE_RATIO = 30; - uint256 internal constant KITTY_RATIO = 10; - uint256 internal constant KITTY_MIN = 1e9; // ADJUSTEMENT VARIABLE - - // Seized funds of workerpools that do not honor their deals are sent - // out to this kitty address. - // It is determined with address(uint256(keccak256(bytes('iExecKitty'))) - 1). - address internal constant KITTY_ADDRESS = 0x99c2268479b93fDe36232351229815DF80837e23; - - // Used with ERC-734 Key Manager identity contract for authorization management. - uint256 internal constant GROUPMEMBER_PURPOSE = 4; - - function _msgSender() internal view returns (address) { - return msg.sender; - } -} diff --git a/contracts/libs/PocoStorageLib.sol b/contracts/libs/PocoStorageLib.sol index 8091578dd..f0ce3acfc 100644 --- a/contracts/libs/PocoStorageLib.sol +++ b/contracts/libs/PocoStorageLib.sol @@ -1,18 +1,14 @@ -// SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH +// SPDX-FileCopyrightText: 2023-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; +pragma solidity ^0.8.0; -import "@iexec/interface/contracts/IexecHub.sol"; -import "@iexec/solidity/contracts/Libs/SafeMathExtended.sol"; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import {IERC20} from "@openzeppelin/contracts-v5/interfaces/IERC20.sol"; +import {Ownable} from "@openzeppelin/contracts-v5/access/Ownable.sol"; +import {IexecLibCore_v5} from "./IexecLibCore_v5.sol"; +import {IRegistry} from "../registries/IRegistry.sol"; +import {IexecHubInterface} from "../interfaces/IexecHubInterface.sol"; -import "./IexecLibCore_v5.sol"; -import "./IexecLibOrders_v5.sol"; -import "./../registries/apps/App.sol"; -import "./../registries/datasets/Dataset.sol"; -import "./../registries/workerpools/Workerpool.sol"; -import "./../registries/IRegistry.sol"; /**************************************************************************** * WARNING: Be carefull when editing this file. * * * @@ -79,11 +75,14 @@ library PocoStorageLib { // Modified in IexecConfigurationFacet.configure IexecHubInterface m_v3_iexecHub; mapping(address /* worker */ => bool) m_v3_scoreImported; + // /!\ New storage variables not present in v6 store. + // A mapping to store PoCo Boost deals. + mapping(bytes32 /* dealId */ => IexecLibCore_v5.DealBoost) m_dealsBoost; } function getPocoStorage() internal pure returns (PocoStorage storage $) { - assembly { - $_slot := POCO_STORAGE_LOCATION + assembly ("memory-safe") { + $.slot := POCO_STORAGE_LOCATION } } } diff --git a/contracts/libs/PocoStorageLib.v8.sol b/contracts/libs/PocoStorageLib.v8.sol deleted file mode 100644 index c9785ced8..000000000 --- a/contracts/libs/PocoStorageLib.v8.sol +++ /dev/null @@ -1,92 +0,0 @@ -// SPDX-FileCopyrightText: 2023-2025 IEXEC BLOCKCHAIN TECH -// SPDX-License-Identifier: Apache-2.0 - -pragma solidity ^0.8.0; - -import {IERC20} from "@openzeppelin/contracts-v5/interfaces/IERC20.sol"; -import {IERC721Enumerable} from "@openzeppelin/contracts-v5/interfaces/IERC721Enumerable.sol"; -import {Ownable} from "@openzeppelin/contracts-v5/access/Ownable.sol"; -import {IexecLibCore_v5} from "./IexecLibCore_v5.sol"; - -/**************************************************************************** - * WARNING: Be carefull when editing this file. * - * * - * If you want to add new variables, add them to the end of the * - * struct `PocoStorage`. * - * Read more about: * - * - Diamond proxy storage https://eips.ethereum.org/EIPS/eip-2535 * - * - Namespaced storage https://eips.ethereum.org/EIPS/eip-7201 * - * * - ****************************************************************************/ - -library PocoStorageLib { - // keccak256(abi.encode(uint256(keccak256("iexec.poco.storage.PocoStorage")) - 1)) & ~bytes32(uint256(0xff)); - bytes32 private constant POCO_STORAGE_LOCATION = - 0x5862653c6982c162832160cf30593645e8487b257e44d77cdd6b51eee2651b00; - - /// @custom:storage-location erc7201:iexec.poco.storage.PocoStorage - struct PocoStorage { - // Registries - IRegistry m_appregistry; - IRegistry m_datasetregistry; - IRegistry m_workerpoolregistry; - // Escrow - IERC20 m_baseToken; - string m_name; - string m_symbol; - uint8 m_decimals; - uint256 m_totalSupply; - // In order to use the protocol, users have to deposit RLC - // and allow PoCo smart contracts to manage them. This state - // variable keeps track of users balances. - mapping(address /* account */ => uint256 /* amount */) m_balances; - // When a deal is created, the protocol temporarily locks an amount - // of RLC tokens from the balances of both the requester and the workerpool owners. - // This is to guarantee the payment of different actors later. Frozen funds - // are released when the computation is completed and the result is pushed. - mapping(address /* account */ => uint256 /* amount */) m_frozens; - mapping(address /* owner */ => mapping(address /* spender */ => uint256 /* amount */)) m_allowances; - // EIP-712 domain hash. - // Modified in IexecConfigurationFacet.updateDomainSeparator - bytes32 m_eip712DomainSeparator; - // Mapping an order hash to its owner. Since a smart contract cannot sign orders - // with a private key, it adds an entry to this mapping to provide presigned orders. - mapping(bytes32 /* orderHash */ => address /* owner */) m_presigned; - // Each order has a volume (>=1). This tracks how much is consumed from - // the volume of each order. Mapping an order hash to its consumed amount. - mapping(bytes32 /* orderHash */ => uint256 /* consumedAmount */) m_consumed; - // a mapping to store PoCo classic deals. - mapping(bytes32 /* dealId */ => IexecLibCore_v5.Deal) m_deals; - mapping(bytes32 /* taskId */ => IexecLibCore_v5.Task) m_tasks; - mapping(bytes32 /* taskId */ => IexecLibCore_v5.Consensus) m_consensus; - mapping(bytes32 /* taskId */ => mapping(address /* worker */ => IexecLibCore_v5.Contribution)) m_contributions; - mapping(address /* worker */ => uint256 /* score */) m_workerScores; - // Poco - Settings - // Address of a trusted TEE authority that manages enclave challenges. - // Modified in IexecConfigurationFacet.setTeeBroker - address m_teebroker; - // Max amount of gas to be used with callbacks. - // Modified in IexecConfigurationFacet.setCallbackGas - uint256 m_callbackgas; - // List of defined computation categories. - IexecLibCore_v5.Category[] m_categories; - // Backward compatibility - // Modified in IexecConfigurationFacet.configure - address m_v3_iexecHub; // IexecHubInterface - mapping(address /* worker */ => bool) m_v3_scoreImported; - // /!\ New storage variables not present in v6 store. - // A mapping to store PoCo Boost deals. - mapping(bytes32 /* dealId */ => IexecLibCore_v5.DealBoost) m_dealsBoost; - } - - function getPocoStorage() internal pure returns (PocoStorage storage $) { - assembly ("memory-safe") { - $.slot := POCO_STORAGE_LOCATION - } - } -} - -// Use in registries. -interface IRegistry is IERC721Enumerable { - function isRegistered(address _entry) external view returns (bool); -} From 9ca27e0768680bde0eaa56876993c389c838965f Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Mon, 13 Oct 2025 17:44:32 +0200 Subject: [PATCH 02/77] chore: Upgrade all contracts except registries to solidity v8 --- contracts/IexecInterfaceNative.sol | 2 +- contracts/IexecInterfaceToken.sol | 2 +- .../facets/IexecAccessorsABILegacyFacet.sol | 8 ++-- .../facets/IexecCategoryManagerFacet.sol | 8 ++-- .../facets/IexecConfigurationExtraFacet.sol | 9 ++-- contracts/facets/IexecConfigurationFacet.sol | 20 ++++----- contracts/facets/IexecERC20Core.sol | 25 +++++------ contracts/facets/IexecERC20Facet.sol | 17 ++++---- contracts/facets/IexecEscrow.v8.sol | 4 +- contracts/facets/IexecEscrowNativeFacet.sol | 22 +++++----- contracts/facets/IexecEscrowTokenFacet.sol | 14 +++---- .../facets/IexecOrderManagementFacet.sol | 4 +- contracts/facets/IexecPoco1Facet.sol | 4 +- contracts/facets/IexecPoco2Facet.sol | 4 +- contracts/facets/IexecPocoAccessorsFacet.sol | 4 +- .../facets/IexecPocoBoostAccessorsFacet.sol | 4 +- contracts/facets/IexecPocoBoostFacet.sol | 4 +- contracts/facets/IexecPocoCommon.sol | 4 +- contracts/facets/IexecRelayFacet.sol | 8 ++-- contracts/facets/SignatureVerifier.sol | 41 ++++++++++--------- contracts/facets/SignatureVerifier.v8.sol | 4 +- contracts/interfaces/IexecERC20.sol | 6 +-- contracts/interfaces/IexecERC20Common.sol | 3 ++ contracts/interfaces/IexecPocoAccessors.sol | 2 +- contracts/tools/diagrams/StorageDiagrams.sol | 2 +- .../tools/testing/IexecEscrowTestContract.sol | 2 +- contracts/tools/testing/TestClient.sol | 6 +-- contracts/tools/testing/TestReceiver.sol | 4 +- 28 files changed, 114 insertions(+), 123 deletions(-) diff --git a/contracts/IexecInterfaceNative.sol b/contracts/IexecInterfaceNative.sol index 7ccd1990d..6480bee09 100644 --- a/contracts/IexecInterfaceNative.sol +++ b/contracts/IexecInterfaceNative.sol @@ -32,8 +32,8 @@ interface IexecInterfaceNative is IexecCategoryManager, IexecConfiguration, IexecConfigurationExtra, - IexecERC20, IexecERC20Common, + IexecERC20, IexecEscrowNative, IexecOrderManagement, IexecPoco1, diff --git a/contracts/IexecInterfaceToken.sol b/contracts/IexecInterfaceToken.sol index 5016b9027..dbdda49e8 100644 --- a/contracts/IexecInterfaceToken.sol +++ b/contracts/IexecInterfaceToken.sol @@ -32,8 +32,8 @@ interface IexecInterfaceToken is IexecCategoryManager, IexecConfiguration, IexecConfigurationExtra, - IexecERC20, IexecERC20Common, + IexecERC20, IexecEscrowToken, IexecOrderManagement, IexecPoco1, diff --git a/contracts/facets/IexecAccessorsABILegacyFacet.sol b/contracts/facets/IexecAccessorsABILegacyFacet.sol index d275f9748..ecd6807d6 100644 --- a/contracts/facets/IexecAccessorsABILegacyFacet.sol +++ b/contracts/facets/IexecAccessorsABILegacyFacet.sol @@ -1,12 +1,12 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; -pragma experimental ABIEncoderV2; +pragma solidity ^0.8.0; -import "./FacetBase.sol"; -import "../interfaces/IexecAccessorsABILegacy.sol"; +import {FacetBase} from "./FacetBase.sol"; +import {IexecAccessorsABILegacy} from "../interfaces/IexecAccessorsABILegacy.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; +import {IexecLibCore_v5} from "../libs/IexecLibCore_v5.sol"; contract IexecAccessorsABILegacyFacet is IexecAccessorsABILegacy, FacetBase { function viewDealABILegacy_pt1( diff --git a/contracts/facets/IexecCategoryManagerFacet.sol b/contracts/facets/IexecCategoryManagerFacet.sol index 195f3d391..a1053f22b 100644 --- a/contracts/facets/IexecCategoryManagerFacet.sol +++ b/contracts/facets/IexecCategoryManagerFacet.sol @@ -1,12 +1,12 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; -pragma experimental ABIEncoderV2; +pragma solidity ^0.8.0; -import "./FacetBase.sol"; +import {FacetBase} from "./FacetBase.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; -import "../interfaces/IexecCategoryManager.sol"; +import {IexecCategoryManager} from "../interfaces/IexecCategoryManager.sol"; +import {IexecLibCore_v5} from "../libs/IexecLibCore_v5.sol"; contract IexecCategoryManagerFacet is IexecCategoryManager, FacetBase { /** diff --git a/contracts/facets/IexecConfigurationExtraFacet.sol b/contracts/facets/IexecConfigurationExtraFacet.sol index aa6f1de35..9492c6e93 100644 --- a/contracts/facets/IexecConfigurationExtraFacet.sol +++ b/contracts/facets/IexecConfigurationExtraFacet.sol @@ -1,12 +1,11 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; -pragma experimental ABIEncoderV2; +pragma solidity ^0.8.0; -import "./FacetBase.sol"; -import "../interfaces/IexecConfigurationExtra.sol"; -import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; +import {FacetBase } from "./FacetBase.sol"; +import {IexecConfigurationExtra} from "../interfaces/IexecConfigurationExtra.sol"; +import {PocoStorageLib, IRegistry} from "../libs/PocoStorageLib.sol"; contract IexecConfigurationExtraFacet is IexecConfigurationExtra, FacetBase { function changeRegistries( diff --git a/contracts/facets/IexecConfigurationFacet.sol b/contracts/facets/IexecConfigurationFacet.sol index 41aaac187..8a34b6074 100644 --- a/contracts/facets/IexecConfigurationFacet.sol +++ b/contracts/facets/IexecConfigurationFacet.sol @@ -1,17 +1,16 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; -pragma experimental ABIEncoderV2; +pragma solidity ^0.8.0; -import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; - -import "./FacetBase.sol"; -import "../interfaces/IexecConfiguration.sol"; -import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; +import {IERC20} from "@openzeppelin/contracts-v5/token/ERC20/IERC20.sol"; +import {Math} from "@openzeppelin/contracts-v5/utils/math/Math.sol"; +import {FacetBase} from "./FacetBase.sol"; +import {IexecConfiguration} from "../interfaces/IexecConfiguration.sol"; +import {PocoStorageLib, IRegistry, IexecHubInterface} from "../libs/PocoStorageLib.sol"; +import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; contract IexecConfigurationFacet is IexecConfiguration, FacetBase { - using SafeMathExtended for uint256; using IexecLibOrders_v5 for IexecLibOrders_v5.EIP712Domain; // TODO move this to DiamondInit.init(). @@ -52,7 +51,8 @@ contract IexecConfigurationFacet is IexecConfiguration, FacetBase { function importScore(address _worker) external override { PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); require(!$.m_v3_scoreImported[_worker], "score-already-imported"); - $.m_workerScores[_worker] = $.m_workerScores[_worker].max( + $.m_workerScores[_worker] = Math.max( + $.m_workerScores[_worker], $.m_v3_iexecHub.viewScore(_worker) ); $.m_v3_scoreImported[_worker] = true; @@ -68,7 +68,7 @@ contract IexecConfigurationFacet is IexecConfiguration, FacetBase { $.m_callbackgas = _callbackgas; } - function _chainId() internal pure returns (uint256 id) { + function _chainId() internal view returns (uint256 id) { assembly { id := chainid() } diff --git a/contracts/facets/IexecERC20Core.sol b/contracts/facets/IexecERC20Core.sol index 1c2adfe77..4177a7207 100644 --- a/contracts/facets/IexecERC20Core.sol +++ b/contracts/facets/IexecERC20Core.sol @@ -1,24 +1,19 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; -pragma experimental ABIEncoderV2; +pragma solidity ^0.8.0; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; -import "./FacetBase.sol"; - -contract IexecERC20Core is FacetBase { - using SafeMathExtended for uint256; - - event Transfer(address indexed from, address indexed to, uint256 value); - event Approval(address indexed owner, address indexed spender, uint256 value); +import {FacetBase} from "./FacetBase.sol"; +import {IexecERC20Common} from "../interfaces/IexecERC20Common.sol"; +contract IexecERC20Core is IexecERC20Common, FacetBase { function _transferUnchecked(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); - $.m_balances[sender] = $.m_balances[sender].sub(amount); - $.m_balances[recipient] = $.m_balances[recipient].add(amount); + $.m_balances[sender] = $.m_balances[sender] - amount; + $.m_balances[recipient] = $.m_balances[recipient] - amount; emit Transfer(sender, recipient, amount); } @@ -29,16 +24,16 @@ contract IexecERC20Core is FacetBase { function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address"); PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); - $.m_totalSupply = $.m_totalSupply.add(amount); - $.m_balances[account] = $.m_balances[account].add(amount); + $.m_totalSupply = $.m_totalSupply + amount; + $.m_balances[account] = $.m_balances[account] + amount; emit Transfer(address(0), account, amount); } function _burn(address account, uint256 amount) internal { require(account != address(0), "ERC20: burn from the zero address"); PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); - $.m_totalSupply = $.m_totalSupply.sub(amount); - $.m_balances[account] = $.m_balances[account].sub(amount); + $.m_totalSupply = $.m_totalSupply - amount; + $.m_balances[account] = $.m_balances[account] - amount; emit Transfer(account, address(0), amount); } diff --git a/contracts/facets/IexecERC20Facet.sol b/contracts/facets/IexecERC20Facet.sol index 490203977..24570e7ec 100644 --- a/contracts/facets/IexecERC20Facet.sol +++ b/contracts/facets/IexecERC20Facet.sol @@ -1,13 +1,12 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; -pragma experimental ABIEncoderV2; +pragma solidity ^0.8.0; -import "./IexecERC20Core.sol"; -import "./FacetBase.sol"; -import "../interfaces/IexecERC20.sol"; -import "../interfaces/IexecTokenSpender.sol"; +import {IexecERC20Core} from "./IexecERC20Core.sol"; +import {FacetBase} from "./FacetBase.sol"; +import {IexecERC20} from "../interfaces/IexecERC20.sol"; +import {IexecTokenSpender} from "../interfaces/IexecTokenSpender.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; contract IexecERC20Facet is IexecERC20, FacetBase, IexecERC20Core { @@ -46,7 +45,7 @@ contract IexecERC20Facet is IexecERC20, FacetBase, IexecERC20Core { ) external override returns (bool) { PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); _transfer(sender, recipient, amount); - _approve(sender, _msgSender(), $.m_allowances[sender][_msgSender()].sub(amount)); + _approve(sender, _msgSender(), $.m_allowances[sender][_msgSender()] - amount); return true; } @@ -55,7 +54,7 @@ contract IexecERC20Facet is IexecERC20, FacetBase, IexecERC20Core { uint256 addedValue ) external override returns (bool) { PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); - _approve(_msgSender(), spender, $.m_allowances[_msgSender()][spender].add(addedValue)); + _approve(_msgSender(), spender, $.m_allowances[_msgSender()][spender] + addedValue); return true; } @@ -64,7 +63,7 @@ contract IexecERC20Facet is IexecERC20, FacetBase, IexecERC20Core { uint256 subtractedValue ) external override returns (bool) { PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); - _approve(_msgSender(), spender, $.m_allowances[_msgSender()][spender].sub(subtractedValue)); + _approve(_msgSender(), spender, $.m_allowances[_msgSender()][spender] - subtractedValue); return true; } } diff --git a/contracts/facets/IexecEscrow.v8.sol b/contracts/facets/IexecEscrow.v8.sol index bfbb5daa7..e0efc2b1e 100644 --- a/contracts/facets/IexecEscrow.v8.sol +++ b/contracts/facets/IexecEscrow.v8.sol @@ -2,8 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; -import {PocoStorageLib} from "../libs/PocoStorageLib.v8.sol"; -import {FacetBase} from "./FacetBase.v8.sol"; +import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; +import {FacetBase} from "./FacetBase.sol"; /** * @title Manage (lock/unlock/reward/seize) user funds. diff --git a/contracts/facets/IexecEscrowNativeFacet.sol b/contracts/facets/IexecEscrowNativeFacet.sol index 42a1ef056..ee739f680 100644 --- a/contracts/facets/IexecEscrowNativeFacet.sol +++ b/contracts/facets/IexecEscrowNativeFacet.sol @@ -1,16 +1,14 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; -pragma experimental ABIEncoderV2; +pragma solidity ^0.8.0; -import "./IexecERC20Core.sol"; -import "./FacetBase.sol"; -import "../interfaces/IexecEscrowNative.sol"; +import {IexecERC20Core} from "./IexecERC20Core.sol"; +import {FacetBase} from "./FacetBase.sol"; +import {IexecEscrowNative} from "../interfaces/IexecEscrowNative.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; contract IexecEscrowNativeFacet is IexecEscrowNative, FacetBase, IexecERC20Core { - using SafeMathExtended for uint256; uint256 internal constant nRLCtoWei = 10 ** 9; /*************************************************************************** @@ -42,7 +40,7 @@ contract IexecEscrowNativeFacet is IexecEscrowNative, FacetBase, IexecERC20Core uint256 remaining = msg.value; for (uint i = 0; i < amounts.length; ++i) { _mint(targets[i], amounts[i]); - remaining = remaining.sub(amounts[i].mul(nRLCtoWei)); + remaining = remaining - amounts[i] * nRLCtoWei; } _withdraw(_msgSender(), remaining); return true; @@ -50,26 +48,26 @@ contract IexecEscrowNativeFacet is IexecEscrowNative, FacetBase, IexecERC20Core function withdraw(uint256 amount) external override returns (bool) { _burn(_msgSender(), amount); - _withdraw(_msgSender(), amount.mul(nRLCtoWei)); + _withdraw(_msgSender(), amount * nRLCtoWei); return true; } function withdrawTo(uint256 amount, address target) external override returns (bool) { _burn(_msgSender(), amount); - _withdraw(target, amount.mul(nRLCtoWei)); + _withdraw(target, amount * nRLCtoWei); return true; } function recover() external override onlyOwner returns (uint256) { PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); - uint256 delta = address(this).balance.div(nRLCtoWei).sub($.m_totalSupply); + uint256 delta = address(this).balance / nRLCtoWei - $.m_totalSupply; _mint(owner(), delta); return delta; } function _deposit(address target) internal { - _mint(target, msg.value.div(nRLCtoWei)); - _withdraw(_msgSender(), msg.value.mod(nRLCtoWei)); + _mint(target, msg.value / nRLCtoWei); + _withdraw(_msgSender(), msg.value % nRLCtoWei); } function _withdraw(address to, uint256 value) internal { diff --git a/contracts/facets/IexecEscrowTokenFacet.sol b/contracts/facets/IexecEscrowTokenFacet.sol index fd9e833cb..7d044e5df 100644 --- a/contracts/facets/IexecEscrowTokenFacet.sol +++ b/contracts/facets/IexecEscrowTokenFacet.sol @@ -1,17 +1,15 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; -pragma experimental ABIEncoderV2; +pragma solidity ^0.8.0; -import "./IexecERC20Core.sol"; -import "./FacetBase.sol"; -import "../interfaces/IexecEscrowToken.sol"; -import "../interfaces/IexecTokenSpender.sol"; +import {IexecERC20Core} from "./IexecERC20Core.sol"; +import {FacetBase} from "./FacetBase.sol"; +import {IexecEscrowToken} from "../interfaces/IexecEscrowToken.sol"; +import {IexecTokenSpender} from "../interfaces/IexecTokenSpender.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; contract IexecEscrowTokenFacet is IexecEscrowToken, IexecTokenSpender, FacetBase, IexecERC20Core { - using SafeMathExtended for uint256; /*************************************************************************** * Escrow methods: public * @@ -62,7 +60,7 @@ contract IexecEscrowTokenFacet is IexecEscrowToken, IexecTokenSpender, FacetBase function recover() external override onlyOwner returns (uint256) { PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); - uint256 delta = $.m_baseToken.balanceOf(address(this)).sub($.m_totalSupply); + uint256 delta = $.m_baseToken.balanceOf(address(this)) - $.m_totalSupply; _mint(owner(), delta); return delta; } diff --git a/contracts/facets/IexecOrderManagementFacet.sol b/contracts/facets/IexecOrderManagementFacet.sol index 81f0c9bf6..9bd6866e8 100644 --- a/contracts/facets/IexecOrderManagementFacet.sol +++ b/contracts/facets/IexecOrderManagementFacet.sol @@ -5,9 +5,9 @@ pragma solidity ^0.8.0; import {IERC5313} from "@openzeppelin/contracts-v5/interfaces/IERC5313.sol"; import {SignatureVerifier} from "./SignatureVerifier.v8.sol"; -import {FacetBase} from "./FacetBase.v8.sol"; +import {FacetBase} from "./FacetBase.sol"; import {IexecOrderManagement} from "../interfaces/IexecOrderManagement.sol"; -import {PocoStorageLib} from "../libs/PocoStorageLib.v8.sol"; +import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; contract IexecOrderManagementFacet is IexecOrderManagement, FacetBase, SignatureVerifier { diff --git a/contracts/facets/IexecPoco1Facet.sol b/contracts/facets/IexecPoco1Facet.sol index c1b4d00bc..b82af2eb3 100644 --- a/contracts/facets/IexecPoco1Facet.sol +++ b/contracts/facets/IexecPoco1Facet.sol @@ -8,8 +8,8 @@ import {Math} from "@openzeppelin/contracts-v5/utils/math/Math.sol"; import {IexecLibCore_v5} from "../libs/IexecLibCore_v5.sol"; import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; import {IWorkerpool} from "../registries/workerpools/IWorkerpool.v8.sol"; -import {FacetBase} from "./FacetBase.v8.sol"; -import {PocoStorageLib} from "../libs/PocoStorageLib.v8.sol"; +import {FacetBase} from "./FacetBase.sol"; +import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; import {IexecPoco1} from "../interfaces/IexecPoco1.sol"; import {IexecPoco1Errors} from "../interfaces/IexecPoco1Errors.sol"; import {IexecEscrow} from "./IexecEscrow.v8.sol"; diff --git a/contracts/facets/IexecPoco2Facet.sol b/contracts/facets/IexecPoco2Facet.sol index 18c130fa1..d671da415 100644 --- a/contracts/facets/IexecPoco2Facet.sol +++ b/contracts/facets/IexecPoco2Facet.sol @@ -4,11 +4,11 @@ pragma solidity ^0.8.0; import {Math} from "@openzeppelin/contracts-v5/utils/math/Math.sol"; -import {PocoStorageLib} from "../libs/PocoStorageLib.v8.sol"; +import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; import {IOracleConsumer} from "../external/interfaces/IOracleConsumer.sol"; import {IexecLibCore_v5} from "../libs/IexecLibCore_v5.sol"; import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; -import {FacetBase} from "./FacetBase.v8.sol"; +import {FacetBase} from "./FacetBase.sol"; import {IexecPoco2} from "../interfaces/IexecPoco2.sol"; import {IexecEscrow} from "./IexecEscrow.v8.sol"; import {SignatureVerifier} from "./SignatureVerifier.v8.sol"; diff --git a/contracts/facets/IexecPocoAccessorsFacet.sol b/contracts/facets/IexecPocoAccessorsFacet.sol index 9377ecf13..26c9997f2 100644 --- a/contracts/facets/IexecPocoAccessorsFacet.sol +++ b/contracts/facets/IexecPocoAccessorsFacet.sol @@ -3,8 +3,8 @@ pragma solidity ^0.8.0; -import {PocoStorageLib, IRegistry} from "../libs/PocoStorageLib.v8.sol"; -import {FacetBase} from "./FacetBase.v8.sol"; +import {PocoStorageLib, IRegistry} from "../libs/PocoStorageLib.sol"; +import {FacetBase} from "./FacetBase.sol"; import {IexecLibCore_v5} from "../libs/IexecLibCore_v5.sol"; import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; import {IDataset} from "../registries/datasets/IDataset.v8.sol"; diff --git a/contracts/facets/IexecPocoBoostAccessorsFacet.sol b/contracts/facets/IexecPocoBoostAccessorsFacet.sol index 3ecb8589e..48131f166 100644 --- a/contracts/facets/IexecPocoBoostAccessorsFacet.sol +++ b/contracts/facets/IexecPocoBoostAccessorsFacet.sol @@ -4,9 +4,9 @@ pragma solidity ^0.8.0; import {IexecLibCore_v5} from "../libs/IexecLibCore_v5.sol"; -import {FacetBase} from "./FacetBase.v8.sol"; +import {FacetBase} from "./FacetBase.sol"; import {IexecPocoBoostAccessors} from "../interfaces/IexecPocoBoostAccessors.sol"; -import {PocoStorageLib} from "../libs/PocoStorageLib.v8.sol"; +import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; /** * @title Getters contract for PoCo Boost facet. diff --git a/contracts/facets/IexecPocoBoostFacet.sol b/contracts/facets/IexecPocoBoostFacet.sol index 8aac8bcfc..e2770c96e 100644 --- a/contracts/facets/IexecPocoBoostFacet.sol +++ b/contracts/facets/IexecPocoBoostFacet.sol @@ -13,12 +13,12 @@ import {IOracleConsumer} from "../external/interfaces/IOracleConsumer.sol"; import {IexecLibCore_v5} from "../libs/IexecLibCore_v5.sol"; import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; import {IWorkerpool} from "../registries/workerpools/IWorkerpool.v8.sol"; -import {FacetBase} from "./FacetBase.v8.sol"; +import {FacetBase} from "./FacetBase.sol"; import {IexecPocoBoost} from "../interfaces/IexecPocoBoost.sol"; import {IexecEscrow} from "./IexecEscrow.v8.sol"; import {IexecPocoCommon} from "./IexecPocoCommon.sol"; import {SignatureVerifier} from "./SignatureVerifier.v8.sol"; -import {PocoStorageLib} from "../libs/PocoStorageLib.v8.sol"; +import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; /** * @title PoCo Boost to reduce latency and increase throughput of deals. diff --git a/contracts/facets/IexecPocoCommon.sol b/contracts/facets/IexecPocoCommon.sol index 1ccdf54f0..6c3e43231 100644 --- a/contracts/facets/IexecPocoCommon.sol +++ b/contracts/facets/IexecPocoCommon.sol @@ -4,9 +4,9 @@ pragma solidity ^0.8.0; import {Math} from "@openzeppelin/contracts-v5/utils/math/Math.sol"; -import {PocoStorageLib} from "../libs/PocoStorageLib.v8.sol"; +import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; -import {FacetBase} from "./FacetBase.v8.sol"; +import {FacetBase} from "./FacetBase.sol"; contract IexecPocoCommon is FacetBase { using Math for uint256; diff --git a/contracts/facets/IexecRelayFacet.sol b/contracts/facets/IexecRelayFacet.sol index 11109108c..a5273dfce 100644 --- a/contracts/facets/IexecRelayFacet.sol +++ b/contracts/facets/IexecRelayFacet.sol @@ -1,11 +1,11 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; -pragma experimental ABIEncoderV2; +pragma solidity ^0.8.0; -import "./FacetBase.sol"; -import "../interfaces/IexecRelay.sol"; +import {FacetBase} from "./FacetBase.sol"; +import {IexecRelay} from "../interfaces/IexecRelay.sol"; +import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; contract IexecRelayFacet is IexecRelay, FacetBase { function broadcastAppOrder(IexecLibOrders_v5.AppOrder calldata _apporder) external override { diff --git a/contracts/facets/SignatureVerifier.sol b/contracts/facets/SignatureVerifier.sol index 00dbd9c46..0e993ba81 100644 --- a/contracts/facets/SignatureVerifier.sol +++ b/contracts/facets/SignatureVerifier.sol @@ -1,15 +1,18 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; -pragma experimental ABIEncoderV2; +pragma solidity ^0.8.0; -import "@iexec/solidity/contracts/ERC734/IERC734.sol"; -import "@iexec/solidity/contracts/ERC1271/IERC1271.sol"; -import "@iexec/solidity/contracts/ERC1654/IERC1654.sol"; +import {IERC1271} from "@openzeppelin/contracts-v5/interfaces/IERC1271.sol"; +import {MessageHashUtils} from "@openzeppelin/contracts-v5/utils/cryptography/MessageHashUtils.sol"; +import {FacetBase} from "./FacetBase.sol"; +import {IERC734} from "../external/interfaces/IERC734.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; -import "./FacetBase.sol"; +// import "@iexec/solidity/contracts/ERC1654/IERC1654.sol"; +import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; +import {FacetBase} from "./FacetBase.sol"; +// TODO uncomment and fix file contract SignatureVerifier is FacetBase { /** * Prepare message/structure predicat used for signing @@ -79,7 +82,7 @@ contract SignatureVerifier is FacetBase { * Address to bytes32 casting to ERC734 */ function _addrToKey(address _addr) internal pure returns (bytes32) { - return bytes32(uint256(_addr)); + return bytes32(uint256(uint160(_addr))); } /** @@ -106,9 +109,9 @@ contract SignatureVerifier is FacetBase { bytes memory _signature ) internal view returns (bool) { if (_isContract(_identity)) { - try IERC1654(_identity).isValidSignature(_hash, _signature) returns (bytes4 value) { - return value == IERC1654(0).isValidSignature.selector; - } catch (bytes memory /*lowLevelData*/) {} + // try address(0)(_identity).isValidSignature(_hash, _signature) returns (bytes4 value) { + // return value == address(0)(address(0)).isValidSignature.selector; + // } catch (bytes memory /*lowLevelData*/) {} return false; } else { @@ -122,15 +125,15 @@ contract SignatureVerifier is FacetBase { bytes memory _signature ) internal view returns (bool) { if (_isContract(_identity)) { - try IERC1271(_identity).isValidSignature(_predicat, _signature) returns (bytes4 value) { - return value == IERC1271(0).isValidSignature.selector; - } catch (bytes memory /*lowLevelData*/) {} - - try IERC1654(_identity).isValidSignature(keccak256(_predicat), _signature) returns ( - bytes4 value - ) { - return value == IERC1654(0).isValidSignature.selector; - } catch (bytes memory /*lowLevelData*/) {} + // try IERC1271(_identity).isValidSignature(_predicat, _signature) returns (bytes4 value) { + // return value == IERC1271(address(0)).isValidSignature.selector; + // } catch (bytes memory /*lowLevelData*/) {} + + // try IERC1654(_identity).isValidSignature(keccak256(_predicat), _signature) returns ( + // bytes4 value + // ) { + // return value == IERC1654(0).isValidSignature.selector; + // } catch (bytes memory /*lowLevelData*/) {} return false; } else { diff --git a/contracts/facets/SignatureVerifier.v8.sol b/contracts/facets/SignatureVerifier.v8.sol index 4f8a9bda1..f9dd7a049 100644 --- a/contracts/facets/SignatureVerifier.v8.sol +++ b/contracts/facets/SignatureVerifier.v8.sol @@ -6,9 +6,9 @@ pragma solidity ^0.8.0; import {IERC1271} from "@openzeppelin/contracts-v5/interfaces/IERC1271.sol"; import {ECDSA} from "@openzeppelin/contracts-v5/utils/cryptography/ECDSA.sol"; import {MessageHashUtils} from "@openzeppelin/contracts-v5/utils/cryptography/MessageHashUtils.sol"; -import {FacetBase} from "./FacetBase.v8.sol"; +import {FacetBase} from "./FacetBase.sol"; import {IERC734} from "../external/interfaces/IERC734.sol"; -import {PocoStorageLib} from "../libs/PocoStorageLib.v8.sol"; +import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; contract SignatureVerifier is FacetBase { using ECDSA for bytes32; diff --git a/contracts/interfaces/IexecERC20.sol b/contracts/interfaces/IexecERC20.sol index 1b4451532..281589934 100644 --- a/contracts/interfaces/IexecERC20.sol +++ b/contracts/interfaces/IexecERC20.sol @@ -4,9 +4,9 @@ pragma solidity >=0.6.0; pragma experimental ABIEncoderV2; -interface IexecERC20 { - event Transfer(address indexed from, address indexed to, uint256 value); - event Approval(address indexed owner, address indexed spender, uint256 value); +import {IexecERC20Common} from "./IexecERC20Common.sol"; + +interface IexecERC20 is IexecERC20Common { function transfer(address, uint256) external returns (bool); function approve(address, uint256) external returns (bool); diff --git a/contracts/interfaces/IexecERC20Common.sol b/contracts/interfaces/IexecERC20Common.sol index c2a6247aa..650770883 100644 --- a/contracts/interfaces/IexecERC20Common.sol +++ b/contracts/interfaces/IexecERC20Common.sol @@ -4,7 +4,10 @@ pragma solidity >=0.6.0; pragma experimental ABIEncoderV2; +// TODO merge with IexecERC20 interface. interface IexecERC20Common { + event Transfer(address indexed from, address indexed to, uint256 value); + event Approval(address indexed owner, address indexed spender, uint256 value); event Reward(address owner, uint256 amount, bytes32 ref); event Seize(address owner, uint256 amount, bytes32 ref); event Lock(address owner, uint256 amount); diff --git a/contracts/interfaces/IexecPocoAccessors.sol b/contracts/interfaces/IexecPocoAccessors.sol index 01dd4c61d..6809124e3 100644 --- a/contracts/interfaces/IexecPocoAccessors.sol +++ b/contracts/interfaces/IexecPocoAccessors.sol @@ -5,7 +5,7 @@ pragma solidity ^0.8.0; import {IexecLibCore_v5} from "../libs/IexecLibCore_v5.sol"; import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; -import {IRegistry} from "../libs/PocoStorageLib.v8.sol"; +import {IRegistry} from "../libs/PocoStorageLib.sol"; interface IexecPocoAccessors { // ========= Deal and Task Accessors ========= diff --git a/contracts/tools/diagrams/StorageDiagrams.sol b/contracts/tools/diagrams/StorageDiagrams.sol index 659838437..735c70fd0 100644 --- a/contracts/tools/diagrams/StorageDiagrams.sol +++ b/contracts/tools/diagrams/StorageDiagrams.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.0; import {LibDiamond} from "@mudgen/diamond-1/contracts/libraries/LibDiamond.sol"; -import {PocoStorageLib} from "../../libs/PocoStorageLib.v8.sol"; +import {PocoStorageLib} from "../../libs/PocoStorageLib.sol"; // /!\ These contracts are only used to generate storage diagrams, they are not meant // to be deployed or used in any way. diff --git a/contracts/tools/testing/IexecEscrowTestContract.sol b/contracts/tools/testing/IexecEscrowTestContract.sol index 9fce2bf49..13863259d 100644 --- a/contracts/tools/testing/IexecEscrowTestContract.sol +++ b/contracts/tools/testing/IexecEscrowTestContract.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.0; import {IexecEscrow} from "../../facets/IexecEscrow.v8.sol"; -import {PocoStorageLib} from "../../libs/PocoStorageLib.v8.sol"; +import {PocoStorageLib} from "../../libs/PocoStorageLib.sol"; /** * @notice a wrapper contract to make internal functions of diff --git a/contracts/tools/testing/TestClient.sol b/contracts/tools/testing/TestClient.sol index f5e11e949..3486508b8 100644 --- a/contracts/tools/testing/TestClient.sol +++ b/contracts/tools/testing/TestClient.sol @@ -1,9 +1,9 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; +pragma solidity ^0.8.0; -import "@iexec/solidity/contracts/ERC1154/IERC1154.sol"; +import {IOracleConsumer} from "../../external/interfaces/IOracleConsumer.sol"; contract TestClient is IOracleConsumer { event GotResult(bytes32 indexed id, bytes result); @@ -11,8 +11,6 @@ contract TestClient is IOracleConsumer { mapping(bytes32 => uint256) public gstore; mapping(bytes32 => bytes) public store; - constructor() public {} - function receiveResult(bytes32 id, bytes calldata result) external override { gstore[id] = gasleft(); store[id] = result; diff --git a/contracts/tools/testing/TestReceiver.sol b/contracts/tools/testing/TestReceiver.sol index bf6da27f4..2d2821723 100644 --- a/contracts/tools/testing/TestReceiver.sol +++ b/contracts/tools/testing/TestReceiver.sol @@ -1,15 +1,13 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; +pragma solidity ^0.8.0; import "../../interfaces/IexecTokenSpender.sol"; contract TestReceiver is IexecTokenSpender { event GotApproval(address sender, uint256 value, address token, bytes extraData); - constructor() public {} - function receiveApproval( address _sender, uint256 _value, From 52306f893bccc273c25072420ceb278d210a398f Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Mon, 13 Oct 2025 17:49:58 +0200 Subject: [PATCH 03/77] chore: Remove unused token swap facet --- config/config.json | 2 +- .../facets/IexecEscrowTokenSwapFacet.sol | 214 ------------------ contracts/interfaces/IexecEscrowTokenSwap.sol | 38 ---- deploy/0_deploy.ts | 1 - hardhat.config.ts | 3 - scripts/tools/sol-to-uml.mjs | 9 +- 6 files changed, 3 insertions(+), 264 deletions(-) delete mode 100644 contracts/facets/IexecEscrowTokenSwapFacet.sol delete mode 100644 contracts/interfaces/IexecEscrowTokenSwap.sol diff --git a/config/config.json b/config/config.json index f86c652bf..cc793c538 100644 --- a/config/config.json +++ b/config/config.json @@ -135,7 +135,7 @@ "_tokenComment": "Address of the RLC token contract", "richman": null, "uniswap": false, - "_uniswapComment": "TODO remove when removing `IexecEscrowTokenSwap`", + "_uniswapComment": "Defines whether the PoCo is integrated with Uniswap or not", "v3": { "Hub": null, "AppRegistry": null, diff --git a/contracts/facets/IexecEscrowTokenSwapFacet.sol b/contracts/facets/IexecEscrowTokenSwapFacet.sol deleted file mode 100644 index 62bce85a1..000000000 --- a/contracts/facets/IexecEscrowTokenSwapFacet.sol +++ /dev/null @@ -1,214 +0,0 @@ -// SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH -// SPDX-License-Identifier: Apache-2.0 - -pragma solidity ^0.6.0; -pragma experimental ABIEncoderV2; - -import "./IexecERC20Core.sol"; -import "./SignatureVerifier.sol"; -import "./FacetBase.sol"; -import "../interfaces/IexecEscrowTokenSwap.sol"; -import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; -import "../interfaces/IexecPoco1.sol"; - -contract IexecEscrowTokenSwapFacet is - IexecEscrowTokenSwap, - FacetBase, - IexecERC20Core, - SignatureVerifier -{ - using SafeMathExtended for uint256; - using IexecLibOrders_v5 for IexecLibOrders_v5.AppOrder; - using IexecLibOrders_v5 for IexecLibOrders_v5.DatasetOrder; - using IexecLibOrders_v5 for IexecLibOrders_v5.WorkerpoolOrder; - using IexecLibOrders_v5 for IexecLibOrders_v5.RequestOrder; - - IUniswapV2Router02 internal constant router = - IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); - - /*************************************************************************** - * Accessor * - ***************************************************************************/ - function UniswapV2Router() external view override returns (IUniswapV2Router02) { - return router; - } - - /*************************************************************************** - * Uniswap path - Internal * - ***************************************************************************/ - function _eth2token() internal view returns (address[] memory) { - PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); - address[] memory path = new address[](2); - path[0] = router.WETH(); - path[1] = address($.m_baseToken); - return path; - } - - function _token2eth() internal view returns (address[] memory) { - PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); - address[] memory path = new address[](2); - path[0] = address($.m_baseToken); - path[1] = router.WETH(); - return path; - } - - /*************************************************************************** - * Prediction methods - Public * - ***************************************************************************/ - function estimateDepositEthSent(uint256 eth) external view override returns (uint256 token) { - return router.getAmountsOut(eth, _eth2token())[1]; - } - function estimateDepositTokenWanted( - uint256 token - ) external view override returns (uint256 eth) { - return router.getAmountsIn(token, _eth2token())[0]; - } - function estimateWithdrawTokenSent(uint256 token) external view override returns (uint256 eth) { - return router.getAmountsOut(token, _token2eth())[1]; - } - function estimateWithdrawEthWanted(uint256 eth) external view override returns (uint256 token) { - return router.getAmountsIn(eth, _token2eth())[0]; - } - - /*************************************************************************** - * Swapping methods - Public * - ***************************************************************************/ - receive() external payable override { - address sender = _msgSender(); - if (sender != address(router)) { - _deposit(sender, msg.value, 0); - } - } - - fallback() external payable override { - revert("fallback-disabled"); - } - - function depositEth() external payable override { - _deposit(_msgSender(), msg.value, 0); - } - function depositEthFor(address target) external payable override { - _deposit(target, msg.value, 0); - } - function safeDepositEth(uint256 minimum) external payable override { - _deposit(_msgSender(), msg.value, minimum); - } - function safeDepositEthFor(uint256 minimum, address target) external payable override { - _deposit(target, msg.value, minimum); - } - function requestToken(uint256 amount) external payable override { - _request(_msgSender(), msg.value, amount); - } - function requestTokenFor(uint256 amount, address target) external payable override { - _request(target, msg.value, amount); - } - function withdrawEth(uint256 amount) external override { - _withdraw(_msgSender(), amount, 0); - } - function withdrawEthTo(uint256 amount, address target) external override { - _withdraw(target, amount, 0); - } - function safeWithdrawEth(uint256 amount, uint256 minimum) external override { - _withdraw(_msgSender(), amount, minimum); - } - function safeWithdrawEthTo(uint256 amount, uint256 minimum, address target) external override { - _withdraw(target, amount, minimum); - } - - /*************************************************************************** - * Swapping methods - Internal * - ***************************************************************************/ - function _deposit(address target, uint256 value, uint256 minimum) internal { - uint256[] memory amounts = router.swapExactETHForTokens{value: value}( - minimum, - _eth2token(), - address(this), - now + 1 - ); - _mint(target, amounts[1]); - } - - function _request(address target, uint256 value, uint256 amount) internal { - uint256[] memory amounts = router.swapETHForExactTokens{value: value}( - amount, - _eth2token(), - address(this), - now + 1 - ); - _mint(target, amounts[1]); - // Refund remaining ETH - (bool success, ) = _msgSender().call{value: value.sub(amounts[0])}(""); - require(success, "native-transfer-failed"); - } - - function _withdraw(address target, uint256 amount, uint256 minimum) internal { - PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); - $.m_baseToken.approve(address(router), amount); - uint256[] memory amounts = router.swapExactTokensForETH( - amount, - minimum, - _token2eth(), - target, - now + 1 - ); - _burn(_msgSender(), amounts[0]); - } - - /*************************************************************************** - * Extra public methods * - ***************************************************************************/ - function matchOrdersWithEth( - IexecLibOrders_v5.AppOrder memory _apporder, - IexecLibOrders_v5.DatasetOrder memory _datasetorder, - IexecLibOrders_v5.WorkerpoolOrder memory _workerpoolorder, - IexecLibOrders_v5.RequestOrder memory _requestorder - ) public payable override returns (bytes32) { - PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); - uint256 volume; - volume = _apporder.volume.sub( - $.m_consumed[keccak256(_toEthTypedStruct(_apporder.hash(), $.m_eip712DomainSeparator))] - ); - if (_datasetorder.dataset != address(0)) - volume = volume.min( - _datasetorder.volume.sub( - $.m_consumed[ - keccak256( - _toEthTypedStruct(_datasetorder.hash(), $.m_eip712DomainSeparator) - ) - ] - ) - ); - volume = volume.min( - _workerpoolorder.volume.sub( - $.m_consumed[ - keccak256(_toEthTypedStruct(_workerpoolorder.hash(), $.m_eip712DomainSeparator)) - ] - ) - ); - volume = volume.min( - _requestorder.volume.sub( - $.m_consumed[ - keccak256(_toEthTypedStruct(_requestorder.hash(), $.m_eip712DomainSeparator)) - ] - ) - ); - - _request( - _requestorder.requester, - msg.value, - _apporder - .appprice - .add(_datasetorder.dataset != address(0) ? _datasetorder.datasetprice : 0) - .add(_workerpoolorder.workerpoolprice) - .mul(volume) - ); - - return - IexecPoco1(address(this)).matchOrders( - _apporder, - _datasetorder, - _workerpoolorder, - _requestorder - ); - } -} diff --git a/contracts/interfaces/IexecEscrowTokenSwap.sol b/contracts/interfaces/IexecEscrowTokenSwap.sol deleted file mode 100644 index 660bb88a7..000000000 --- a/contracts/interfaces/IexecEscrowTokenSwap.sol +++ /dev/null @@ -1,38 +0,0 @@ -// SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH -// SPDX-License-Identifier: Apache-2.0 - -pragma solidity ^0.6.0; -pragma experimental ABIEncoderV2; - -import "@uniswap/v2-periphery/contracts/interfaces/IUniswapV2Router02.sol"; -import "../libs/IexecLibOrders_v5.sol"; - -// TODO add this to IexecInterfaceToken when the facet is deployed. -interface IexecEscrowTokenSwap { - receive() external payable; - fallback() external payable; - - function UniswapV2Router() external view returns (IUniswapV2Router02); - function estimateDepositEthSent(uint256) external view returns (uint256); - function estimateDepositTokenWanted(uint256) external view returns (uint256); - function estimateWithdrawTokenSent(uint256) external view returns (uint256); - function estimateWithdrawEthWanted(uint256) external view returns (uint256); - - function depositEth() external payable; - function depositEthFor(address) external payable; - function safeDepositEth(uint256) external payable; - function safeDepositEthFor(uint256, address) external payable; - function requestToken(uint256) external payable; - function requestTokenFor(uint256, address) external payable; - function withdrawEth(uint256) external; - function withdrawEthTo(uint256, address) external; - function safeWithdrawEth(uint256, uint256) external; - function safeWithdrawEthTo(uint256, uint256, address) external; - - function matchOrdersWithEth( - IexecLibOrders_v5.AppOrder memory, - IexecLibOrders_v5.DatasetOrder memory, - IexecLibOrders_v5.WorkerpoolOrder memory, - IexecLibOrders_v5.RequestOrder memory - ) external payable returns (bytes32); -} diff --git a/deploy/0_deploy.ts b/deploy/0_deploy.ts index 764bcf94e..6c50fc55e 100644 --- a/deploy/0_deploy.ts +++ b/deploy/0_deploy.ts @@ -96,7 +96,6 @@ export default async function deploy() { new IexecConfigurationFacet__factory(iexecLibOrders), new IexecERC20Facet__factory(), isTokenMode ? new IexecEscrowTokenFacet__factory() : new IexecEscrowNativeFacet__factory(), - // new IexecEscrowTokenSwapFacet__factory(), not deployed. new IexecOrderManagementFacet__factory(iexecLibOrders), new IexecPoco1Facet__factory(iexecLibOrders), new IexecPoco2Facet__factory(), diff --git a/hardhat.config.ts b/hardhat.config.ts index db0437fdd..90a890584 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -251,7 +251,6 @@ const config: HardhatUserConfig = { 'facets/FacetBase.sol', // duplicated in FacetBase.v8.sol 'facets/IexecAccessorsABILegacyFacet.sol', // not relevant // kept for events 'facets/IexecERC20Core.sol', // contains only internal/private - 'facets/IexecEscrowTokenSwapFacet.sol', // not relevant // kept for events 'facets/IexecEscrow.v8.sol', // contains only internal/private 'facets/IexecPocoCommon.sol', // contains only internal/private 'facets/SignatureVerifier.sol', // contains only internal/private @@ -259,8 +258,6 @@ const config: HardhatUserConfig = { 'interfaces', // interesting for events but too much doc duplication if enabled 'tools', 'Diamond.sol', // not relevant - 'IexecInterfaceNativeABILegacy.sol', // not relevant - 'IexecInterfaceTokenABILegacy.sol', // not relevant ], }, mocha: { timeout: 300000 }, diff --git a/scripts/tools/sol-to-uml.mjs b/scripts/tools/sol-to-uml.mjs index af32a3dcd..71b6d7c1c 100644 --- a/scripts/tools/sol-to-uml.mjs +++ b/scripts/tools/sol-to-uml.mjs @@ -21,14 +21,9 @@ await generateClassDiagramOfContracts( ) await generateClassDiagramOfContracts( - [ - 'IexecEscrowNativeFacet', - 'IexecEscrowTokenFacet', - 'IexecEscrowTokenSwapFacet', - 'IexecEscrow', - ], + ['IexecEscrowNativeFacet', 'IexecEscrowTokenFacet', 'IexecEscrow'], 'IexecEscrows', -) +); await generateClassDiagramOfContracts( ['IexecPocoBoostFacet'], From d5ed77ed71daa2be97654b8883381f46c34a585a Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Mon, 13 Oct 2025 17:51:28 +0200 Subject: [PATCH 04/77] chore: Create new solidity v8 IexecHubInterface --- contracts/interfaces/IexecHubInterface.sol | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 contracts/interfaces/IexecHubInterface.sol diff --git a/contracts/interfaces/IexecHubInterface.sol b/contracts/interfaces/IexecHubInterface.sol new file mode 100644 index 000000000..8baf50a4d --- /dev/null +++ b/contracts/interfaces/IexecHubInterface.sol @@ -0,0 +1,11 @@ +// SPDX-FileCopyrightText: 2023-2025 IEXEC BLOCKCHAIN TECH +// SPDX-License-Identifier: Apache-2.0 + +pragma solidity ^0.8.0; + +/** + * iExec PoCo v3 interface. + */ +interface IexecHubInterface { + function viewScore(address worker) external returns (uint256); +} From aa240861b461ce9673d0f4ab66992f7117110304 Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Tue, 14 Oct 2025 10:54:38 +0200 Subject: [PATCH 05/77] chore: Copy referenced iexec-solidity contracts --- .../registries/upgradeability/Address.sol | 141 ++++++++++++++++++ .../BaseUpgradeabilityProxy.sol | 77 ++++++++++ .../InitializableUpgradeabilityProxy.sol | 46 ++++++ contracts/registries/upgradeability/Proxy.sol | 93 ++++++++++++ 4 files changed, 357 insertions(+) create mode 100644 contracts/registries/upgradeability/Address.sol create mode 100644 contracts/registries/upgradeability/BaseUpgradeabilityProxy.sol create mode 100644 contracts/registries/upgradeability/InitializableUpgradeabilityProxy.sol create mode 100644 contracts/registries/upgradeability/Proxy.sol diff --git a/contracts/registries/upgradeability/Address.sol b/contracts/registries/upgradeability/Address.sol new file mode 100644 index 000000000..fe3ba6537 --- /dev/null +++ b/contracts/registries/upgradeability/Address.sol @@ -0,0 +1,141 @@ +// SPDX-License-Identifier: MIT + +pragma solidity ^0.6.2; + +/** + * @dev Collection of functions related to the address type + */ +library Address { + /** + * @dev Returns true if `account` is a contract. + * + * [IMPORTANT] + * ==== + * It is unsafe to assume that an address for which this function returns + * false is an externally-owned account (EOA) and not a contract. + * + * Among others, `isContract` will return false for the following + * types of addresses: + * + * - an externally-owned account + * - a contract in construction + * - an address where a contract will be created + * - an address where a contract lived, but was destroyed + * ==== + */ + function isContract(address account) internal view returns (bool) { + // This method relies in extcodesize, which returns 0 for contracts in + // construction, since the code is only stored at the end of the + // constructor execution. + + uint256 size; + // solhint-disable-next-line no-inline-assembly + assembly { size := extcodesize(account) } + return size > 0; + } + + /** + * @dev Replacement for Solidity's `transfer`: sends `amount` wei to + * `recipient`, forwarding all available gas and reverting on errors. + * + * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost + * of certain opcodes, possibly making contracts go over the 2300 gas limit + * imposed by `transfer`, making them unable to receive funds via + * `transfer`. {sendValue} removes this limitation. + * + * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. + * + * IMPORTANT: because control is transferred to `recipient`, care must be + * taken to not create reentrancy vulnerabilities. Consider using + * {ReentrancyGuard} or the + * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. + */ + function sendValue(address payable recipient, uint256 amount) internal { + require(address(this).balance >= amount, "Address: insufficient balance"); + + // solhint-disable-next-line avoid-low-level-calls, avoid-call-value + (bool success, ) = recipient.call{ value: amount }(""); + require(success, "Address: unable to send value, recipient may have reverted"); + } + + /** + * @dev Performs a Solidity function call using a low level `call`. A + * plain`call` is an unsafe replacement for a function call: use this + * function instead. + * + * If `target` reverts with a revert reason, it is bubbled up by this + * function (like regular Solidity function calls). + * + * Returns the raw returned data. To convert to the expected return value, + * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. + * + * Requirements: + * + * - `target` must be a contract. + * - calling `target` with `data` must not revert. + * + * _Available since v3.1._ + */ + function functionCall(address target, bytes memory data) internal returns (bytes memory) { + return functionCall(target, data, "Address: low-level call failed"); + } + + /** + * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with + * `errorMessage` as a fallback revert reason when `target` reverts. + * + * _Available since v3.1._ + */ + function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { + return _functionCallWithValue(target, data, 0, errorMessage); + } + + /** + * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], + * but also transferring `value` wei to `target`. + * + * Requirements: + * + * - the calling contract must have an ETH balance of at least `value`. + * - the called Solidity function must be `payable`. + * + * _Available since v3.1._ + */ + function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { + return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); + } + + /** + * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but + * with `errorMessage` as a fallback revert reason when `target` reverts. + * + * _Available since v3.1._ + */ + function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { + require(address(this).balance >= value, "Address: insufficient balance for call"); + return _functionCallWithValue(target, data, value, errorMessage); + } + + function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { + require(isContract(target), "Address: call to non-contract"); + + // solhint-disable-next-line avoid-low-level-calls + (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); + if (success) { + return returndata; + } else { + // Look for revert reason and bubble it up if present + if (returndata.length > 0) { + // The easiest way to bubble the revert reason is using memory via assembly + + // solhint-disable-next-line no-inline-assembly + assembly { + let returndata_size := mload(returndata) + revert(add(32, returndata), returndata_size) + } + } else { + revert(errorMessage); + } + } + } +} diff --git a/contracts/registries/upgradeability/BaseUpgradeabilityProxy.sol b/contracts/registries/upgradeability/BaseUpgradeabilityProxy.sol new file mode 100644 index 000000000..537ef1142 --- /dev/null +++ b/contracts/registries/upgradeability/BaseUpgradeabilityProxy.sol @@ -0,0 +1,77 @@ +// SPDX-License-Identifier: Apache-2.0 + +/****************************************************************************** + * Copyright 2020 IEXEC BLOCKCHAIN TECH * + * * + * Licensed under the Apache License, Version 2.0 (the "License"); * + * you may not use this file except in compliance with the License. * + * You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, software * + * distributed under the License is distributed on an "AS IS" BASIS, * + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * + * See the License for the specific language governing permissions and * + * limitations under the License. * + ******************************************************************************/ + +pragma solidity ^0.6.0; + +import '@openzeppelin/contracts/utils/Address.sol'; +import './Proxy.sol'; + +/** + * @title BaseUpgradeabilityProxy + * @dev This contract implements a proxy that allows to change the + * implementation address to which it will delegate. + * Such a change is called an implementation upgrade. + */ +contract BaseUpgradeabilityProxy is Proxy { + /** + * @dev Emitted when the implementation is upgraded. + * @param implementation Address of the new implementation. + */ + event Upgraded(address indexed implementation); + + /** + * @dev Storage slot with the address of the current implementation. + * This is the keccak-256 hash of "org.zeppelinos.proxy.implementation", and is + * validated in the constructor. + */ + bytes32 internal constant IMPLEMENTATION_SLOT = 0x7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3; + + /** + * @dev Returns the current implementation. + * @return impl Address of the current implementation + */ + function _implementation() internal override view returns (address impl) { + bytes32 slot = IMPLEMENTATION_SLOT; + assembly { + impl := sload(slot) + } + } + + /** + * @dev Upgrades the proxy to a new implementation. + * @param newImplementation Address of the new implementation. + */ + function _upgradeTo(address newImplementation) internal { + _setImplementation(newImplementation); + emit Upgraded(newImplementation); + } + + /** + * @dev Sets the implementation address of the proxy. + * @param newImplementation Address of the new implementation. + */ + function _setImplementation(address newImplementation) internal { + require(Address.isContract(newImplementation), "Cannot set a proxy implementation to a non-contract address"); + + bytes32 slot = IMPLEMENTATION_SLOT; + + assembly { + sstore(slot, newImplementation) + } + } +} diff --git a/contracts/registries/upgradeability/InitializableUpgradeabilityProxy.sol b/contracts/registries/upgradeability/InitializableUpgradeabilityProxy.sol new file mode 100644 index 000000000..7d4037256 --- /dev/null +++ b/contracts/registries/upgradeability/InitializableUpgradeabilityProxy.sol @@ -0,0 +1,46 @@ +// SPDX-License-Identifier: Apache-2.0 + +/****************************************************************************** + * Copyright 2020 IEXEC BLOCKCHAIN TECH * + * * + * Licensed under the Apache License, Version 2.0 (the "License"); * + * you may not use this file except in compliance with the License. * + * You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, software * + * distributed under the License is distributed on an "AS IS" BASIS, * + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * + * See the License for the specific language governing permissions and * + * limitations under the License. * + ******************************************************************************/ + +pragma solidity ^0.6.0; + +import './BaseUpgradeabilityProxy.sol'; + +/** + * @title InitializableUpgradeabilityProxy + * @dev Extends BaseUpgradeabilityProxy with an initializer for initializing + * implementation and init data. + */ +contract InitializableUpgradeabilityProxy is BaseUpgradeabilityProxy { + /** + * @dev Contract initializer. + * @param _logic Address of the initial implementation. + * @param _data Data to send as msg.data to the implementation to initialize the proxied contract. + * It should include the signature and the parameters of the function to be called, as described in + * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. + * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. + */ + function initialize(address _logic, bytes memory _data) public payable { + require(_implementation() == address(0)); + assert(IMPLEMENTATION_SLOT == keccak256("org.zeppelinos.proxy.implementation")); + _setImplementation(_logic); + if(_data.length > 0) { + (bool success,) = _logic.delegatecall(_data); + require(success); + } + } +} diff --git a/contracts/registries/upgradeability/Proxy.sol b/contracts/registries/upgradeability/Proxy.sol new file mode 100644 index 000000000..46c5b6bdb --- /dev/null +++ b/contracts/registries/upgradeability/Proxy.sol @@ -0,0 +1,93 @@ +// SPDX-License-Identifier: Apache-2.0 + +/****************************************************************************** + * Copyright 2020 IEXEC BLOCKCHAIN TECH * + * * + * Licensed under the Apache License, Version 2.0 (the "License"); * + * you may not use this file except in compliance with the License. * + * You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, software * + * distributed under the License is distributed on an "AS IS" BASIS, * + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * + * See the License for the specific language governing permissions and * + * limitations under the License. * + ******************************************************************************/ + +pragma solidity ^0.6.0; + +/** + * @title Proxy + * @dev Implements delegation of calls to other contracts, with proper + * forwarding of return values and bubbling of failures. + * It defines a fallback function that delegates all calls to the address + * returned by the abstract _implementation() internal function. + */ +abstract contract Proxy { + /** + * @dev Receive function. + * Implemented entirely in `_fallback`. + */ + receive() external payable virtual { + _fallback(); + } + + /** + * @dev Fallback function. + * Implemented entirely in `_fallback`. + */ + fallback() external payable { + _fallback(); + } + + /** + * @return impl The Address of the implementation. + */ + function _implementation() internal virtual view returns (address impl); + + /** + * @dev Delegates execution to an implementation contract. + * This is a low level function that doesn't return to its internal call site. + * It will return to the external caller whatever the implementation returns. + * @param implementation Address to delegate. + */ + function _delegate(address implementation) internal { + assembly { + // Copy msg.data. We take full control of memory in this inline assembly + // block because it will not return to Solidity code. We overwrite the + // Solidity scratch pad at memory position 0. + calldatacopy(0, 0, calldatasize()) + + // Call the implementation. + // out and outsize are 0 because we don't know the size yet. + let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0) + + // Copy the returned data. + returndatacopy(0, 0, returndatasize()) + + switch result + // delegatecall returns 0 on error. + case 0 { revert(0, returndatasize()) } + default { return(0, returndatasize()) } + } + } + + /** + * @dev Function that is run as the first thing in the fallback function. + * Can be redefined in derived contracts to add functionality. + * Redefinitions must call super._willFallback(). + */ + function _willFallback() internal virtual { + } + + /** + * @dev fallback implementation. + * Extracted to enable manual triggering. + */ + function _fallback() internal { + _willFallback(); + _delegate(_implementation()); + } +} From 6253cb1ec1da92dba38295a89c072a77be2895c8 Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Tue, 14 Oct 2025 11:03:48 +0200 Subject: [PATCH 06/77] chore: Bump upgradability contracts to solidity v8 --- .../registries/upgradeability/Address.sol | 10 ++++++- .../BaseUpgradeabilityProxy.sol | 28 ++++++++----------- .../InitializableUpgradeabilityProxy.sol | 25 ++++++----------- contracts/registries/upgradeability/Proxy.sol | 26 ++++++----------- 4 files changed, 38 insertions(+), 51 deletions(-) diff --git a/contracts/registries/upgradeability/Address.sol b/contracts/registries/upgradeability/Address.sol index fe3ba6537..ab70cc495 100644 --- a/contracts/registries/upgradeability/Address.sol +++ b/contracts/registries/upgradeability/Address.sol @@ -1,6 +1,14 @@ // SPDX-License-Identifier: MIT -pragma solidity ^0.6.2; +/** + * Copied and adapted from: + * https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v3.2.0/contracts/utils/Address.sol + * + * Changes: + * - Bump pragma solidity from 0.6.2 to 0.8.0; + */ + +pragma solidity ^0.8.0; /** * @dev Collection of functions related to the address type diff --git a/contracts/registries/upgradeability/BaseUpgradeabilityProxy.sol b/contracts/registries/upgradeability/BaseUpgradeabilityProxy.sol index 537ef1142..43f4a8b34 100644 --- a/contracts/registries/upgradeability/BaseUpgradeabilityProxy.sol +++ b/contracts/registries/upgradeability/BaseUpgradeabilityProxy.sol @@ -1,24 +1,18 @@ +// SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -/****************************************************************************** - * Copyright 2020 IEXEC BLOCKCHAIN TECH * - * * - * Licensed under the Apache License, Version 2.0 (the "License"); * - * you may not use this file except in compliance with the License. * - * You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, software * - * distributed under the License is distributed on an "AS IS" BASIS, * - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * - * See the License for the specific language governing permissions and * - * limitations under the License. * - ******************************************************************************/ +/** + * Copied and adapted from: + * https://github.com/iExecBlockchainComputing/iexec-solidity/tree/fec925a/contracts/Upgradeability + * + * Changes: + * - Bump pragma solidity from 0.6.0 to 0.8.0; + * - Use custom Address library instead of OpenZeppelin's; + */ -pragma solidity ^0.6.0; +pragma solidity ^0.8.0; -import '@openzeppelin/contracts/utils/Address.sol'; +import './Address.sol'; import './Proxy.sol'; /** diff --git a/contracts/registries/upgradeability/InitializableUpgradeabilityProxy.sol b/contracts/registries/upgradeability/InitializableUpgradeabilityProxy.sol index 7d4037256..b621080d4 100644 --- a/contracts/registries/upgradeability/InitializableUpgradeabilityProxy.sol +++ b/contracts/registries/upgradeability/InitializableUpgradeabilityProxy.sol @@ -1,22 +1,15 @@ +// SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -/****************************************************************************** - * Copyright 2020 IEXEC BLOCKCHAIN TECH * - * * - * Licensed under the Apache License, Version 2.0 (the "License"); * - * you may not use this file except in compliance with the License. * - * You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, software * - * distributed under the License is distributed on an "AS IS" BASIS, * - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * - * See the License for the specific language governing permissions and * - * limitations under the License. * - ******************************************************************************/ +/** + * Copied and adapted from: + * https://github.com/iExecBlockchainComputing/iexec-solidity/tree/fec925a/contracts/Upgradeability + * + * Changes: + * - Bump pragma solidity from 0.6.0 to 0.8.0; + */ -pragma solidity ^0.6.0; +pragma solidity ^0.8.0; import './BaseUpgradeabilityProxy.sol'; diff --git a/contracts/registries/upgradeability/Proxy.sol b/contracts/registries/upgradeability/Proxy.sol index 46c5b6bdb..c67b81079 100644 --- a/contracts/registries/upgradeability/Proxy.sol +++ b/contracts/registries/upgradeability/Proxy.sol @@ -1,22 +1,14 @@ +// SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -/****************************************************************************** - * Copyright 2020 IEXEC BLOCKCHAIN TECH * - * * - * Licensed under the Apache License, Version 2.0 (the "License"); * - * you may not use this file except in compliance with the License. * - * You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, software * - * distributed under the License is distributed on an "AS IS" BASIS, * - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * - * See the License for the specific language governing permissions and * - * limitations under the License. * - ******************************************************************************/ - -pragma solidity ^0.6.0; +/** + * Copied and adapted from: + * https://github.com/iExecBlockchainComputing/iexec-solidity/tree/fec925a/contracts/Upgradeability + * + * Changes: + * - Bump pragma solidity from 0.6.0 to 0.8.0; + */ +pragma solidity ^0.8.0; /** * @title Proxy From 74e680c35287cb4b1213710e5a3532b3e8fc0a07 Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Tue, 14 Oct 2025 15:59:14 +0200 Subject: [PATCH 07/77] chore: Fix deploy script --- deploy/0_deploy.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/0_deploy.ts b/deploy/0_deploy.ts index 6c50fc55e..6e677c1d0 100644 --- a/deploy/0_deploy.ts +++ b/deploy/0_deploy.ts @@ -30,12 +30,12 @@ import { IexecPocoBoostAccessorsFacet__factory, IexecPocoBoostFacet__factory, IexecRelayFacet__factory, + Ownable__factory, OwnershipFacet__factory, RLC__factory, WorkerpoolRegistry__factory, } from '../typechain'; import { DiamondArgsStruct } from '../typechain/contracts/Diamond'; -import { Ownable__factory } from '../typechain/factories/@openzeppelin/contracts/access'; import { FactoryDeployer } from '../utils/FactoryDeployer'; import config from '../utils/config'; import { getDeployerAndOwnerSigners } from '../utils/deploy-tools'; From 4c8fff65c3eb6337be2d35890ee72a295637f523 Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Tue, 14 Oct 2025 15:59:35 +0200 Subject: [PATCH 08/77] fix: Fix migrated function --- contracts/facets/IexecERC20Core.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/facets/IexecERC20Core.sol b/contracts/facets/IexecERC20Core.sol index 4177a7207..567d84719 100644 --- a/contracts/facets/IexecERC20Core.sol +++ b/contracts/facets/IexecERC20Core.sol @@ -13,7 +13,7 @@ contract IexecERC20Core is IexecERC20Common, FacetBase { require(recipient != address(0), "ERC20: transfer to the zero address"); PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); $.m_balances[sender] = $.m_balances[sender] - amount; - $.m_balances[recipient] = $.m_balances[recipient] - amount; + $.m_balances[recipient] = $.m_balances[recipient] + amount; emit Transfer(sender, recipient, amount); } From 0bd5fc9eb4d5c146b9283501de999f5f95ff666b Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Tue, 14 Oct 2025 16:20:42 +0200 Subject: [PATCH 09/77] chore: Migrate registries to Solidity v8 --- contracts/registries/IRegistry.sol | 4 +- contracts/registries/Registry.sol | 52 +++++++++++++------ contracts/registries/RegistryEntry.sol | 4 +- contracts/registries/apps/App.sol | 2 +- contracts/registries/apps/AppRegistry.sol | 7 +-- contracts/registries/datasets/Dataset.sol | 2 +- .../registries/datasets/DatasetRegistry.sol | 3 +- .../registries/workerpools/Workerpool.sol | 2 +- .../workerpools/WorkerpoolRegistry.sol | 3 +- 9 files changed, 47 insertions(+), 32 deletions(-) diff --git a/contracts/registries/IRegistry.sol b/contracts/registries/IRegistry.sol index ccdd27b18..5ff342780 100644 --- a/contracts/registries/IRegistry.sol +++ b/contracts/registries/IRegistry.sol @@ -1,9 +1,9 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; +pragma solidity ^0.8.0; -import "@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol"; +import {IERC721Enumerable} from "@openzeppelin/contracts-v5/token/ERC721/extensions/IERC721Enumerable.sol"; interface IRegistry is IERC721Enumerable { function isRegistered(address _entry) external view returns (bool); diff --git a/contracts/registries/Registry.sol b/contracts/registries/Registry.sol index 901d4ae47..e1a26d8fa 100644 --- a/contracts/registries/Registry.sol +++ b/contracts/registries/Registry.sol @@ -1,26 +1,28 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; +pragma solidity ^0.8.0; -import "@iexec/solidity/contracts/Upgradeability/InitializableUpgradeabilityProxy.sol"; -import "@openzeppelin/contracts/access/Ownable.sol"; -import "@openzeppelin/contracts/token/ERC721/ERC721.sol"; -import "@openzeppelin/contracts/utils/Create2.sol"; -import "./IRegistry.sol"; +import "./upgradeability/InitializableUpgradeabilityProxy.sol"; +import {Ownable} from "@openzeppelin/contracts-v5/access/Ownable.sol"; +import {ERC721} from "@openzeppelin/contracts-v5/token/ERC721/ERC721.sol"; +import {ERC721Enumerable} from "@openzeppelin/contracts-v5/token/ERC721/extensions/ERC721Enumerable.sol"; +import {Create2} from "@openzeppelin/contracts-v5/utils/Create2.sol"; +import {IRegistry} from "./IRegistry.sol"; -abstract contract Registry is IRegistry, ERC721, Ownable { +abstract contract Registry is IRegistry, ERC721Enumerable, Ownable { address public master; bytes public proxyCode; bytes32 public proxyCodeHash; IRegistry public previous; bool public initialized; + string private _baseUri; constructor( address _master, string memory _name, string memory _symbol - ) public ERC721(_name, _symbol) { + ) ERC721(_name, _symbol) Ownable(msg.sender) { master = _master; proxyCode = type(InitializableUpgradeabilityProxy).creationCode; proxyCodeHash = keccak256(proxyCode); @@ -32,14 +34,24 @@ abstract contract Registry is IRegistry, ERC721, Ownable { previous = IRegistry(_previous); } - function setBaseURI(string calldata _baseURI) external onlyOwner { - _setBaseURI(_baseURI); + function setBaseURI(string calldata baseUri) external onlyOwner { + _baseUri = baseUri; + } + + /** + * @dev Added for retrocompatibility! + * + * @dev Returns the base URI set via {setBaseURI}. This will be + * automatically added as a prefix in {tokenURI} to each token's ID. + */ + function baseURI() public view returns (string memory) { + return _baseURI(); } /* Interface */ function isRegistered(address _entry) external view override returns (bool) { return - _exists(uint256(_entry)) || + _ownerOf(uint256(uint160(_entry))) != address(0) || (address(previous) != address(0) && previous.isRegistered(_entry)); } @@ -55,21 +67,29 @@ abstract contract Registry is IRegistry, ERC721, Ownable { } /* Factory */ - function _mintCreate(address _owner, bytes memory _args) internal returns (uint256) { + function _mintCreate(address _owner, bytes memory _args) internal returns (address) { // Create entry (proxy) address entry = Create2.deploy(0, keccak256(abi.encodePacked(_args, _owner)), proxyCode); // Initialize entry (casting to address payable is a pain in ^0.5.0) InitializableUpgradeabilityProxy(payable(entry)).initialize(master, _args); // Mint corresponding token - _mint(_owner, uint256(entry)); - return uint256(entry); + _mint(_owner, uint256(uint160(entry))); + return entry; } - function _mintPredict(address _owner, bytes memory _args) internal view returns (uint256) { + function _mintPredict(address _owner, bytes memory _args) internal view returns (address) { address entry = Create2.computeAddress( keccak256(abi.encodePacked(_args, _owner)), proxyCodeHash ); - return uint256(entry); + return entry; + } + + /** + * Overridden to use `_baseUri`. + * @dev See {ERC721-_baseURI}. + */ + function _baseURI() internal view override returns (string memory) { + return _baseUri; } } diff --git a/contracts/registries/RegistryEntry.sol b/contracts/registries/RegistryEntry.sol index 8c3874a2b..8624b823c 100644 --- a/contracts/registries/RegistryEntry.sol +++ b/contracts/registries/RegistryEntry.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; +pragma solidity ^0.8.0; import "./Registry.sol"; @@ -18,7 +18,7 @@ abstract contract RegistryEntry { } function owner() public view returns (address) { - return registry.ownerOf(uint256(address(this))); + return registry.ownerOf(uint256(uint160(address(this)))); } /** diff --git a/contracts/registries/apps/App.sol b/contracts/registries/apps/App.sol index ba1adff69..d8884aedc 100644 --- a/contracts/registries/apps/App.sol +++ b/contracts/registries/apps/App.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; +pragma solidity ^0.8.0; import "../RegistryEntry.sol"; diff --git a/contracts/registries/apps/AppRegistry.sol b/contracts/registries/apps/AppRegistry.sol index 6d542a561..9e8680765 100644 --- a/contracts/registries/apps/AppRegistry.sol +++ b/contracts/registries/apps/AppRegistry.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; +pragma solidity ^0.8.0; import "../Registry.sol"; import "./App.sol"; @@ -14,10 +14,7 @@ contract AppRegistry is Registry { /** * Constructor */ - constructor() - public - Registry(address(new App()), "iExec Application Registry (V5)", "iExecAppsV5") - {} + constructor() Registry(address(new App()), "iExec Application Registry (V5)", "iExecAppsV5") {} /** * App creation diff --git a/contracts/registries/datasets/Dataset.sol b/contracts/registries/datasets/Dataset.sol index d6d7bb514..2e6037cbc 100644 --- a/contracts/registries/datasets/Dataset.sol +++ b/contracts/registries/datasets/Dataset.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; +pragma solidity ^0.8.0; import "../RegistryEntry.sol"; diff --git a/contracts/registries/datasets/DatasetRegistry.sol b/contracts/registries/datasets/DatasetRegistry.sol index ca5cfd818..fcf580b1d 100644 --- a/contracts/registries/datasets/DatasetRegistry.sol +++ b/contracts/registries/datasets/DatasetRegistry.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; +pragma solidity ^0.8.0; import "../Registry.sol"; import "./Dataset.sol"; @@ -15,7 +15,6 @@ contract DatasetRegistry is Registry { * Constructor */ constructor() - public Registry(address(new Dataset()), "iExec Dataset Registry (V5)", "iExecDatasetsV5") {} diff --git a/contracts/registries/workerpools/Workerpool.sol b/contracts/registries/workerpools/Workerpool.sol index c9ad8e95f..2c6f1e5eb 100644 --- a/contracts/registries/workerpools/Workerpool.sol +++ b/contracts/registries/workerpools/Workerpool.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; +pragma solidity ^0.8.0; import "../RegistryEntry.sol"; diff --git a/contracts/registries/workerpools/WorkerpoolRegistry.sol b/contracts/registries/workerpools/WorkerpoolRegistry.sol index 26908e863..91df9dffa 100644 --- a/contracts/registries/workerpools/WorkerpoolRegistry.sol +++ b/contracts/registries/workerpools/WorkerpoolRegistry.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity ^0.6.0; +pragma solidity ^0.8.0; import "../Registry.sol"; import "./Workerpool.sol"; @@ -15,7 +15,6 @@ contract WorkerpoolRegistry is Registry { * Constructor */ constructor() - public Registry(address(new Workerpool()), "iExec Workerpool Registry (V5)", "iExecWorkerpoolV5") {} From c4555ec67f0ee995a549c9e093144b203ee5b6b4 Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Tue, 14 Oct 2025 16:35:30 +0200 Subject: [PATCH 10/77] chore: Remove comment --- contracts/registries/Registry.sol | 1 - 1 file changed, 1 deletion(-) diff --git a/contracts/registries/Registry.sol b/contracts/registries/Registry.sol index e1a26d8fa..4416b6da3 100644 --- a/contracts/registries/Registry.sol +++ b/contracts/registries/Registry.sol @@ -70,7 +70,6 @@ abstract contract Registry is IRegistry, ERC721Enumerable, Ownable { function _mintCreate(address _owner, bytes memory _args) internal returns (address) { // Create entry (proxy) address entry = Create2.deploy(0, keccak256(abi.encodePacked(_args, _owner)), proxyCode); - // Initialize entry (casting to address payable is a pain in ^0.5.0) InitializableUpgradeabilityProxy(payable(entry)).initialize(master, _args); // Mint corresponding token _mint(_owner, uint256(uint160(entry))); From 22908711e856555c6d33eee0798a3cfefad71c40 Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Tue, 14 Oct 2025 16:45:41 +0200 Subject: [PATCH 11/77] test: Fix tests --- test/byContract/IexecERC20/IexecERC20.test.ts | 8 ++-- .../IexecEscrow/IexecEscrowNative.test.ts | 12 +++--- .../IexecEscrow/IexecEscrowToken.test.ts | 8 ++-- test/byContract/registries/registries.test.ts | 42 +++++++++---------- 4 files changed, 35 insertions(+), 35 deletions(-) diff --git a/test/byContract/IexecERC20/IexecERC20.test.ts b/test/byContract/IexecERC20/IexecERC20.test.ts index c812e0a6d..1708f9eb7 100644 --- a/test/byContract/IexecERC20/IexecERC20.test.ts +++ b/test/byContract/IexecERC20/IexecERC20.test.ts @@ -97,7 +97,7 @@ describe('ERC20', async () => { it('Should not transfer when sender balance is too low', async () => { await expect( iexecPocoAsHolder.transfer(recipient.address, value + 1n), - ).to.be.revertedWithoutReason(); + ).to.be.revertedWithPanic(0x11); }); }); @@ -201,13 +201,13 @@ describe('ERC20', async () => { it('Should not transferFrom when owner balance is too low', async () => { await expect( iexecPocoAsSpender.transferFrom(holder.address, spender.address, value + 1n), - ).to.be.revertedWithoutReason(); + ).to.be.revertedWithPanic(0x11); }); it('Should not transferFrom when spender allowance is too low', async () => { await iexecPocoAsHolder.approve(spender.address, value - 1n).then((tx) => tx.wait()); await expect( iexecPocoAsSpender.transferFrom(holder.address, spender.address, value), - ).to.be.revertedWithoutReason(); + ).to.be.revertedWithPanic(0x11); }); }); @@ -260,7 +260,7 @@ describe('ERC20', async () => { it('Should not decrease allowance of a value greater than old allowance', async () => { await expect( iexecPocoAsHolder.decreaseAllowance(spender.address, 1), - ).to.be.revertedWithoutReason(); + ).to.be.revertedWithPanic(0x11); }); it('Should not decrease allowance from the zero address', async () => { await expect( diff --git a/test/byContract/IexecEscrow/IexecEscrowNative.test.ts b/test/byContract/IexecEscrow/IexecEscrowNative.test.ts index 0c396a957..657c8334d 100644 --- a/test/byContract/IexecEscrow/IexecEscrowNative.test.ts +++ b/test/byContract/IexecEscrow/IexecEscrowNative.test.ts @@ -254,9 +254,9 @@ if (config.isNativeChain()) { }); it('Should not withdraw native tokens with empty balance', async () => { - await expect( - iexecPocoAsAccountA.withdraw(...withdrawArg), - ).to.be.revertedWithoutReason(); + await expect(iexecPocoAsAccountA.withdraw(...withdrawArg)).to.be.revertedWithPanic( + 0x11, + ); }); it('Should not withdraw native tokens with insufficient balance', async () => { @@ -264,7 +264,7 @@ if (config.isNativeChain()) { await expect( iexecPocoAsAccountA.withdraw(depositAmount * 2n), - ).to.be.revertedWithoutReason(); + ).to.be.revertedWithPanic(0x11); }); }); @@ -289,7 +289,7 @@ if (config.isNativeChain()) { const withdrawToArgs = [...withdrawArg, accountB.address] as [bigint, string]; await expect( iexecPocoAsAccountA.withdrawTo(...withdrawToArgs), - ).to.be.revertedWithoutReason(); + ).to.be.revertedWithPanic(0x11); }); it('Should not withdraw To native tokens with insufficient balance', async () => { @@ -297,7 +297,7 @@ if (config.isNativeChain()) { const withdrawToArgs = [...withdrawArg, accountB.address] as [bigint, string]; await expect( iexecPocoAsAccountA.withdrawTo(withdrawToArgs[0] * 2n, withdrawToArgs[1]), - ).to.be.revertedWithoutReason(); + ).to.be.revertedWithPanic(0x11); }); }); diff --git a/test/byContract/IexecEscrow/IexecEscrowToken.test.ts b/test/byContract/IexecEscrow/IexecEscrowToken.test.ts index f7bf57223..10978d2ec 100644 --- a/test/byContract/IexecEscrow/IexecEscrowToken.test.ts +++ b/test/byContract/IexecEscrow/IexecEscrowToken.test.ts @@ -305,13 +305,13 @@ describe('IexecEscrowToken', () => { .withArgs(proxyAddress, accountA.address, 0); }); it('Should not withdraw tokens with empty balance', async () => { - await expect(iexecPocoAsAccountA.withdraw(amount)).to.be.revertedWithoutReason(); + await expect(iexecPocoAsAccountA.withdraw(amount)).to.be.revertedWithPanic(0x11); }); it('Should not withdraw tokens with insufficient balance', async () => { await rlcInstanceAsAccountA.approve(proxyAddress, amount).then((tx) => tx.wait()); await iexecPocoAsAccountA.deposit(amount).then((tx) => tx.wait()); - await expect(iexecPocoAsAccountA.withdraw(amount + 1n)).to.be.revertedWithoutReason(); + await expect(iexecPocoAsAccountA.withdraw(amount + 1n)).to.be.revertedWithPanic(0x11); }); }); @@ -366,7 +366,7 @@ describe('IexecEscrowToken', () => { it('Should not withdraw to another address with empty balance', async () => { await expect( iexecPocoAsAccountA.withdrawTo(amount, accountB.address), - ).to.be.revertedWithoutReason(); + ).to.be.revertedWithPanic(0x11); }); it('Should not withdraw to another address with insufficient balance', async () => { await rlcInstanceAsAccountA.approve(proxyAddress, amount).then((tx) => tx.wait()); @@ -374,7 +374,7 @@ describe('IexecEscrowToken', () => { await expect( iexecPocoAsAccountA.withdrawTo(amount + 1n, accountB.address), - ).to.be.revertedWithoutReason(); + ).to.be.revertedWithPanic(0x11); }); }); diff --git a/test/byContract/registries/registries.test.ts b/test/byContract/registries/registries.test.ts index 96f4837d5..ce03677f9 100644 --- a/test/byContract/registries/registries.test.ts +++ b/test/byContract/registries/registries.test.ts @@ -97,15 +97,15 @@ describe('Registries', () => { }); it('Should not initialize when user is not the owner', async () => { - await expect(appRegistry.initialize(ZeroAddress)).to.be.revertedWith( - 'Ownable: caller is not the owner', - ); - await expect(datasetRegistry.initialize(ZeroAddress)).to.be.revertedWith( - 'Ownable: caller is not the owner', - ); - await expect(workerpoolRegistry.initialize(ZeroAddress)).to.be.revertedWith( - 'Ownable: caller is not the owner', - ); + await expect(appRegistry.initialize(ZeroAddress)) + .to.be.revertedWithCustomError(appRegistry, 'OwnableUnauthorizedAccount') + .withArgs(anyone.address); + await expect(datasetRegistry.initialize(ZeroAddress)) + .to.be.revertedWithCustomError(datasetRegistry, 'OwnableUnauthorizedAccount') + .withArgs(anyone.address); + await expect(workerpoolRegistry.initialize(ZeroAddress)) + .to.be.revertedWithCustomError(workerpoolRegistry, 'OwnableUnauthorizedAccount') + .withArgs(anyone.address); }); it('Should not reinitialize', async () => { @@ -131,15 +131,15 @@ describe('Registries', () => { }); it('Should not set base URI when user is not the owner', async () => { - await expect(appRegistry.setBaseURI(`https://new.url.iex.ec/app/`)).to.be.revertedWith( - 'Ownable: caller is not the owner', - ); - await expect( - datasetRegistry.setBaseURI(`https://new.url.iex.ec/dataset/`), - ).to.be.revertedWith('Ownable: caller is not the owner'); - await expect( - workerpoolRegistry.setBaseURI(`https://new.url.iex.ec/workerpool/`), - ).to.be.revertedWith('Ownable: caller is not the owner'); + await expect(appRegistry.setBaseURI(`https://new.url.iex.ec/app/`)) + .to.be.revertedWithCustomError(appRegistry, 'OwnableUnauthorizedAccount') + .withArgs(anyone.address); + await expect(datasetRegistry.setBaseURI(`https://new.url.iex.ec/dataset/`)) + .to.be.revertedWithCustomError(datasetRegistry, 'OwnableUnauthorizedAccount') + .withArgs(anyone.address); + await expect(workerpoolRegistry.setBaseURI(`https://new.url.iex.ec/workerpool/`)) + .to.be.revertedWithCustomError(workerpoolRegistry, 'OwnableUnauthorizedAccount') + .withArgs(anyone.address); }); }); @@ -280,7 +280,7 @@ describe('Registries', () => { await expect( appRegistry.createApp(appProvider.address, ...createAppArgs), - ).to.be.revertedWith('Create2: Failed on deploy'); + ).to.be.revertedWithCustomError(appRegistry, 'Create2FailedDeployment'); }); it('Should check that a new app is well registered on new app registry', async () => { @@ -385,7 +385,7 @@ describe('Registries', () => { await expect( datasetRegistry.createDataset(datasetProvider.address, ...createDatasetArgs), - ).to.be.revertedWith('Create2: Failed on deploy'); + ).to.be.revertedWithCustomError(appRegistry, 'Create2FailedDeployment'); }); }); @@ -469,7 +469,7 @@ describe('Registries', () => { await expect( workerpoolRegistry.createWorkerpool(scheduler.address, ...createWorkerpoolArgs), - ).to.be.revertedWith('Create2: Failed on deploy'); + ).to.be.revertedWithCustomError(appRegistry, 'Create2FailedDeployment'); }); }); From ed949b6de881e3352070e1fca5a05c8b345900a3 Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Tue, 14 Oct 2025 17:06:47 +0200 Subject: [PATCH 12/77] chore: Clean IexecHub v3 interface --- contracts/facets/IexecConfigurationFacet.sol | 6 ++++-- .../{IexecHubInterface.sol => IexecHubV3Interface.sol} | 2 +- contracts/libs/PocoStorageLib.sol | 4 ++-- docs/solidity/index.md | 2 +- 4 files changed, 8 insertions(+), 6 deletions(-) rename contracts/interfaces/{IexecHubInterface.sol => IexecHubV3Interface.sol} (88%) diff --git a/contracts/facets/IexecConfigurationFacet.sol b/contracts/facets/IexecConfigurationFacet.sol index 8a34b6074..99dddaa9a 100644 --- a/contracts/facets/IexecConfigurationFacet.sol +++ b/contracts/facets/IexecConfigurationFacet.sol @@ -7,7 +7,9 @@ import {IERC20} from "@openzeppelin/contracts-v5/token/ERC20/IERC20.sol"; import {Math} from "@openzeppelin/contracts-v5/utils/math/Math.sol"; import {FacetBase} from "./FacetBase.sol"; import {IexecConfiguration} from "../interfaces/IexecConfiguration.sol"; -import {PocoStorageLib, IRegistry, IexecHubInterface} from "../libs/PocoStorageLib.sol"; +import {IexecHubV3Interface} from "../interfaces/IexecHubV3Interface.sol"; +import {IRegistry} from "../registries/IRegistry.sol"; +import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; contract IexecConfigurationFacet is IexecConfiguration, FacetBase { @@ -34,7 +36,7 @@ contract IexecConfigurationFacet is IexecConfiguration, FacetBase { $.m_appregistry = IRegistry(_appregistryAddress); $.m_datasetregistry = IRegistry(_datasetregistryAddress); $.m_workerpoolregistry = IRegistry(_workerpoolregistryAddress); - $.m_v3_iexecHub = IexecHubInterface(_v3_iexecHubAddress); + $.m_v3_iexecHub = IexecHubV3Interface(_v3_iexecHubAddress); $.m_callbackgas = 100000; } diff --git a/contracts/interfaces/IexecHubInterface.sol b/contracts/interfaces/IexecHubV3Interface.sol similarity index 88% rename from contracts/interfaces/IexecHubInterface.sol rename to contracts/interfaces/IexecHubV3Interface.sol index 8baf50a4d..51820ab00 100644 --- a/contracts/interfaces/IexecHubInterface.sol +++ b/contracts/interfaces/IexecHubV3Interface.sol @@ -6,6 +6,6 @@ pragma solidity ^0.8.0; /** * iExec PoCo v3 interface. */ -interface IexecHubInterface { +interface IexecHubV3Interface { function viewScore(address worker) external returns (uint256); } diff --git a/contracts/libs/PocoStorageLib.sol b/contracts/libs/PocoStorageLib.sol index f0ce3acfc..ed220486b 100644 --- a/contracts/libs/PocoStorageLib.sol +++ b/contracts/libs/PocoStorageLib.sol @@ -7,7 +7,7 @@ import {IERC20} from "@openzeppelin/contracts-v5/interfaces/IERC20.sol"; import {Ownable} from "@openzeppelin/contracts-v5/access/Ownable.sol"; import {IexecLibCore_v5} from "./IexecLibCore_v5.sol"; import {IRegistry} from "../registries/IRegistry.sol"; -import {IexecHubInterface} from "../interfaces/IexecHubInterface.sol"; +import {IexecHubV3Interface} from "../interfaces/IexecHubV3Interface.sol"; /**************************************************************************** * WARNING: Be carefull when editing this file. * @@ -73,7 +73,7 @@ library PocoStorageLib { IexecLibCore_v5.Category[] m_categories; // Backward compatibility // Modified in IexecConfigurationFacet.configure - IexecHubInterface m_v3_iexecHub; + IexecHubV3Interface m_v3_iexecHub; mapping(address /* worker */ => bool) m_v3_scoreImported; // /!\ New storage variables not present in v6 store. // A mapping to store PoCo Boost deals. diff --git a/docs/solidity/index.md b/docs/solidity/index.md index bfd22411d..3e68599db 100644 --- a/docs/solidity/index.md +++ b/docs/solidity/index.md @@ -1302,7 +1302,7 @@ struct PocoStorage { address m_teebroker; uint256 m_callbackgas; struct IexecLibCore_v5.Category[] m_categories; - contract IexecHubInterface m_v3_iexecHub; + contract IexecHubV3Interface m_v3_iexecHub; mapping(address => bool) m_v3_scoreImported; } ``` From fe64f64720f9c9ba0356d984be436366f28106b9 Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Tue, 14 Oct 2025 17:10:49 +0200 Subject: [PATCH 13/77] chore: Clean copied `Address` library --- .../registries/upgradeability/Address.sol | 109 +----------------- 1 file changed, 1 insertion(+), 108 deletions(-) diff --git a/contracts/registries/upgradeability/Address.sol b/contracts/registries/upgradeability/Address.sol index ab70cc495..5fffe0b63 100644 --- a/contracts/registries/upgradeability/Address.sol +++ b/contracts/registries/upgradeability/Address.sol @@ -6,13 +6,11 @@ * * Changes: * - Bump pragma solidity from 0.6.2 to 0.8.0; + * - Removed all functions except `isContract`. */ pragma solidity ^0.8.0; -/** - * @dev Collection of functions related to the address type - */ library Address { /** * @dev Returns true if `account` is a contract. @@ -41,109 +39,4 @@ library Address { assembly { size := extcodesize(account) } return size > 0; } - - /** - * @dev Replacement for Solidity's `transfer`: sends `amount` wei to - * `recipient`, forwarding all available gas and reverting on errors. - * - * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost - * of certain opcodes, possibly making contracts go over the 2300 gas limit - * imposed by `transfer`, making them unable to receive funds via - * `transfer`. {sendValue} removes this limitation. - * - * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more]. - * - * IMPORTANT: because control is transferred to `recipient`, care must be - * taken to not create reentrancy vulnerabilities. Consider using - * {ReentrancyGuard} or the - * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. - */ - function sendValue(address payable recipient, uint256 amount) internal { - require(address(this).balance >= amount, "Address: insufficient balance"); - - // solhint-disable-next-line avoid-low-level-calls, avoid-call-value - (bool success, ) = recipient.call{ value: amount }(""); - require(success, "Address: unable to send value, recipient may have reverted"); - } - - /** - * @dev Performs a Solidity function call using a low level `call`. A - * plain`call` is an unsafe replacement for a function call: use this - * function instead. - * - * If `target` reverts with a revert reason, it is bubbled up by this - * function (like regular Solidity function calls). - * - * Returns the raw returned data. To convert to the expected return value, - * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. - * - * Requirements: - * - * - `target` must be a contract. - * - calling `target` with `data` must not revert. - * - * _Available since v3.1._ - */ - function functionCall(address target, bytes memory data) internal returns (bytes memory) { - return functionCall(target, data, "Address: low-level call failed"); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with - * `errorMessage` as a fallback revert reason when `target` reverts. - * - * _Available since v3.1._ - */ - function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { - return _functionCallWithValue(target, data, 0, errorMessage); - } - - /** - * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], - * but also transferring `value` wei to `target`. - * - * Requirements: - * - * - the calling contract must have an ETH balance of at least `value`. - * - the called Solidity function must be `payable`. - * - * _Available since v3.1._ - */ - function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { - return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); - } - - /** - * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but - * with `errorMessage` as a fallback revert reason when `target` reverts. - * - * _Available since v3.1._ - */ - function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { - require(address(this).balance >= value, "Address: insufficient balance for call"); - return _functionCallWithValue(target, data, value, errorMessage); - } - - function _functionCallWithValue(address target, bytes memory data, uint256 weiValue, string memory errorMessage) private returns (bytes memory) { - require(isContract(target), "Address: call to non-contract"); - - // solhint-disable-next-line avoid-low-level-calls - (bool success, bytes memory returndata) = target.call{ value: weiValue }(data); - if (success) { - return returndata; - } else { - // Look for revert reason and bubble it up if present - if (returndata.length > 0) { - // The easiest way to bubble the revert reason is using memory via assembly - - // solhint-disable-next-line no-inline-assembly - assembly { - let returndata_size := mload(returndata) - revert(add(32, returndata), returndata_size) - } - } else { - revert(errorMessage); - } - } - } } From 8939418f910e883d21e9a92b47b0b5f7e89d6f1b Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Tue, 14 Oct 2025 17:12:50 +0200 Subject: [PATCH 14/77] chore: Update ABIs --- abis/contracts/facets/IexecERC20Core.json | 88 +++ abis/contracts/facets/IexecERC20Facet.json | 88 +++ .../facets/IexecEscrowNativeFacet.json | 88 +++ .../facets/IexecEscrowTokenFacet.json | 88 +++ .../facets/IexecEscrowTokenSwapFacet.json | 570 ------------------ abis/contracts/interfaces/IexecERC20.json | 88 +++ .../interfaces/IexecERC20Common.json | 50 ++ .../interfaces/IexecEscrowTokenSwap.json | 520 ---------------- .../interfaces/IexecHubV3Interface.json | 21 + abis/contracts/libs/IRegistry.json | 362 ----------- abis/contracts/registries/IRegistry.json | 4 +- abis/contracts/registries/Registry.json | 147 ++++- .../registries/apps/AppRegistry.json | 176 +++++- .../registries/datasets/DatasetRegistry.json | 176 +++++- .../registries/upgradeability/Address.json | 1 + .../BaseUpgradeabilityProxy.json | 23 + .../InitializableUpgradeabilityProxy.json | 41 ++ .../registries/upgradeability/Proxy.json | 10 + .../workerpools/WorkerpoolRegistry.json | 176 +++++- 19 files changed, 1246 insertions(+), 1471 deletions(-) delete mode 100644 abis/contracts/facets/IexecEscrowTokenSwapFacet.json delete mode 100644 abis/contracts/interfaces/IexecEscrowTokenSwap.json create mode 100644 abis/contracts/interfaces/IexecHubV3Interface.json delete mode 100644 abis/contracts/libs/IRegistry.json create mode 100644 abis/contracts/registries/upgradeability/Address.json create mode 100644 abis/contracts/registries/upgradeability/BaseUpgradeabilityProxy.json create mode 100644 abis/contracts/registries/upgradeability/InitializableUpgradeabilityProxy.json create mode 100644 abis/contracts/registries/upgradeability/Proxy.json diff --git a/abis/contracts/facets/IexecERC20Core.json b/abis/contracts/facets/IexecERC20Core.json index e7ef0d5a6..afb815d48 100644 --- a/abis/contracts/facets/IexecERC20Core.json +++ b/abis/contracts/facets/IexecERC20Core.json @@ -24,6 +24,75 @@ "name": "Approval", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Lock", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "ref", + "type": "bytes32" + } + ], + "name": "Reward", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "ref", + "type": "bytes32" + } + ], + "name": "Seize", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -48,5 +117,24 @@ ], "name": "Transfer", "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Unlock", + "type": "event" } ] \ No newline at end of file diff --git a/abis/contracts/facets/IexecERC20Facet.json b/abis/contracts/facets/IexecERC20Facet.json index c7c52b667..01918fc16 100644 --- a/abis/contracts/facets/IexecERC20Facet.json +++ b/abis/contracts/facets/IexecERC20Facet.json @@ -24,6 +24,75 @@ "name": "Approval", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Lock", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "ref", + "type": "bytes32" + } + ], + "name": "Reward", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "ref", + "type": "bytes32" + } + ], + "name": "Seize", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -49,6 +118,25 @@ "name": "Transfer", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Unlock", + "type": "event" + }, { "inputs": [ { diff --git a/abis/contracts/facets/IexecEscrowNativeFacet.json b/abis/contracts/facets/IexecEscrowNativeFacet.json index 12ae21a07..fdbb04ebd 100644 --- a/abis/contracts/facets/IexecEscrowNativeFacet.json +++ b/abis/contracts/facets/IexecEscrowNativeFacet.json @@ -24,6 +24,75 @@ "name": "Approval", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Lock", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "ref", + "type": "bytes32" + } + ], + "name": "Reward", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "ref", + "type": "bytes32" + } + ], + "name": "Seize", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -49,6 +118,25 @@ "name": "Transfer", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Unlock", + "type": "event" + }, { "stateMutability": "payable", "type": "fallback" diff --git a/abis/contracts/facets/IexecEscrowTokenFacet.json b/abis/contracts/facets/IexecEscrowTokenFacet.json index f8fb2f53a..2ac4a0beb 100644 --- a/abis/contracts/facets/IexecEscrowTokenFacet.json +++ b/abis/contracts/facets/IexecEscrowTokenFacet.json @@ -24,6 +24,75 @@ "name": "Approval", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Lock", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "ref", + "type": "bytes32" + } + ], + "name": "Reward", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "ref", + "type": "bytes32" + } + ], + "name": "Seize", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -49,6 +118,25 @@ "name": "Transfer", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Unlock", + "type": "event" + }, { "stateMutability": "payable", "type": "fallback" diff --git a/abis/contracts/facets/IexecEscrowTokenSwapFacet.json b/abis/contracts/facets/IexecEscrowTokenSwapFacet.json deleted file mode 100644 index b4216d024..000000000 --- a/abis/contracts/facets/IexecEscrowTokenSwapFacet.json +++ /dev/null @@ -1,570 +0,0 @@ -[ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "spender", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "UniswapV2Router", - "outputs": [ - { - "internalType": "contract IUniswapV2Router02", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "depositEth", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "target", - "type": "address" - } - ], - "name": "depositEthFor", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "eth", - "type": "uint256" - } - ], - "name": "estimateDepositEthSent", - "outputs": [ - { - "internalType": "uint256", - "name": "token", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "token", - "type": "uint256" - } - ], - "name": "estimateDepositTokenWanted", - "outputs": [ - { - "internalType": "uint256", - "name": "eth", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "eth", - "type": "uint256" - } - ], - "name": "estimateWithdrawEthWanted", - "outputs": [ - { - "internalType": "uint256", - "name": "token", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "token", - "type": "uint256" - } - ], - "name": "estimateWithdrawTokenSent", - "outputs": [ - { - "internalType": "uint256", - "name": "eth", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "app", - "type": "address" - }, - { - "internalType": "uint256", - "name": "appprice", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "volume", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "tag", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "datasetrestrict", - "type": "address" - }, - { - "internalType": "address", - "name": "workerpoolrestrict", - "type": "address" - }, - { - "internalType": "address", - "name": "requesterrestrict", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "sign", - "type": "bytes" - } - ], - "internalType": "struct IexecLibOrders_v5.AppOrder", - "name": "_apporder", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "address", - "name": "dataset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "datasetprice", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "volume", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "tag", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "apprestrict", - "type": "address" - }, - { - "internalType": "address", - "name": "workerpoolrestrict", - "type": "address" - }, - { - "internalType": "address", - "name": "requesterrestrict", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "sign", - "type": "bytes" - } - ], - "internalType": "struct IexecLibOrders_v5.DatasetOrder", - "name": "_datasetorder", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "address", - "name": "workerpool", - "type": "address" - }, - { - "internalType": "uint256", - "name": "workerpoolprice", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "volume", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "tag", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "category", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "trust", - "type": "uint256" - }, - { - "internalType": "address", - "name": "apprestrict", - "type": "address" - }, - { - "internalType": "address", - "name": "datasetrestrict", - "type": "address" - }, - { - "internalType": "address", - "name": "requesterrestrict", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "sign", - "type": "bytes" - } - ], - "internalType": "struct IexecLibOrders_v5.WorkerpoolOrder", - "name": "_workerpoolorder", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "address", - "name": "app", - "type": "address" - }, - { - "internalType": "uint256", - "name": "appmaxprice", - "type": "uint256" - }, - { - "internalType": "address", - "name": "dataset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "datasetmaxprice", - "type": "uint256" - }, - { - "internalType": "address", - "name": "workerpool", - "type": "address" - }, - { - "internalType": "uint256", - "name": "workerpoolmaxprice", - "type": "uint256" - }, - { - "internalType": "address", - "name": "requester", - "type": "address" - }, - { - "internalType": "uint256", - "name": "volume", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "tag", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "category", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "trust", - "type": "uint256" - }, - { - "internalType": "address", - "name": "beneficiary", - "type": "address" - }, - { - "internalType": "address", - "name": "callback", - "type": "address" - }, - { - "internalType": "string", - "name": "params", - "type": "string" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "sign", - "type": "bytes" - } - ], - "internalType": "struct IexecLibOrders_v5.RequestOrder", - "name": "_requestorder", - "type": "tuple" - } - ], - "name": "matchOrdersWithEth", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "requestToken", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "target", - "type": "address" - } - ], - "name": "requestTokenFor", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "minimum", - "type": "uint256" - } - ], - "name": "safeDepositEth", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "minimum", - "type": "uint256" - }, - { - "internalType": "address", - "name": "target", - "type": "address" - } - ], - "name": "safeDepositEthFor", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "minimum", - "type": "uint256" - } - ], - "name": "safeWithdrawEth", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "minimum", - "type": "uint256" - }, - { - "internalType": "address", - "name": "target", - "type": "address" - } - ], - "name": "safeWithdrawEthTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - } - ], - "name": "withdrawEth", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "amount", - "type": "uint256" - }, - { - "internalType": "address", - "name": "target", - "type": "address" - } - ], - "name": "withdrawEthTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } -] \ No newline at end of file diff --git a/abis/contracts/interfaces/IexecERC20.json b/abis/contracts/interfaces/IexecERC20.json index e1a04e342..397064757 100644 --- a/abis/contracts/interfaces/IexecERC20.json +++ b/abis/contracts/interfaces/IexecERC20.json @@ -24,6 +24,75 @@ "name": "Approval", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Lock", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "ref", + "type": "bytes32" + } + ], + "name": "Reward", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "ref", + "type": "bytes32" + } + ], + "name": "Seize", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -49,6 +118,25 @@ "name": "Transfer", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "Unlock", + "type": "event" + }, { "inputs": [ { diff --git a/abis/contracts/interfaces/IexecERC20Common.json b/abis/contracts/interfaces/IexecERC20Common.json index 6437e41f3..afb815d48 100644 --- a/abis/contracts/interfaces/IexecERC20Common.json +++ b/abis/contracts/interfaces/IexecERC20Common.json @@ -1,4 +1,29 @@ [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -68,6 +93,31 @@ "name": "Seize", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, { "anonymous": false, "inputs": [ diff --git a/abis/contracts/interfaces/IexecEscrowTokenSwap.json b/abis/contracts/interfaces/IexecEscrowTokenSwap.json deleted file mode 100644 index 377d4b0a0..000000000 --- a/abis/contracts/interfaces/IexecEscrowTokenSwap.json +++ /dev/null @@ -1,520 +0,0 @@ -[ - { - "stateMutability": "payable", - "type": "fallback" - }, - { - "inputs": [], - "name": "UniswapV2Router", - "outputs": [ - { - "internalType": "contract IUniswapV2Router02", - "name": "", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "depositEth", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "depositEthFor", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "estimateDepositEthSent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "estimateDepositTokenWanted", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "estimateWithdrawEthWanted", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "estimateWithdrawTokenSent", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "app", - "type": "address" - }, - { - "internalType": "uint256", - "name": "appprice", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "volume", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "tag", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "datasetrestrict", - "type": "address" - }, - { - "internalType": "address", - "name": "workerpoolrestrict", - "type": "address" - }, - { - "internalType": "address", - "name": "requesterrestrict", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "sign", - "type": "bytes" - } - ], - "internalType": "struct IexecLibOrders_v5.AppOrder", - "name": "", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "address", - "name": "dataset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "datasetprice", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "volume", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "tag", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "apprestrict", - "type": "address" - }, - { - "internalType": "address", - "name": "workerpoolrestrict", - "type": "address" - }, - { - "internalType": "address", - "name": "requesterrestrict", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "sign", - "type": "bytes" - } - ], - "internalType": "struct IexecLibOrders_v5.DatasetOrder", - "name": "", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "address", - "name": "workerpool", - "type": "address" - }, - { - "internalType": "uint256", - "name": "workerpoolprice", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "volume", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "tag", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "category", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "trust", - "type": "uint256" - }, - { - "internalType": "address", - "name": "apprestrict", - "type": "address" - }, - { - "internalType": "address", - "name": "datasetrestrict", - "type": "address" - }, - { - "internalType": "address", - "name": "requesterrestrict", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "sign", - "type": "bytes" - } - ], - "internalType": "struct IexecLibOrders_v5.WorkerpoolOrder", - "name": "", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "address", - "name": "app", - "type": "address" - }, - { - "internalType": "uint256", - "name": "appmaxprice", - "type": "uint256" - }, - { - "internalType": "address", - "name": "dataset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "datasetmaxprice", - "type": "uint256" - }, - { - "internalType": "address", - "name": "workerpool", - "type": "address" - }, - { - "internalType": "uint256", - "name": "workerpoolmaxprice", - "type": "uint256" - }, - { - "internalType": "address", - "name": "requester", - "type": "address" - }, - { - "internalType": "uint256", - "name": "volume", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "tag", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "category", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "trust", - "type": "uint256" - }, - { - "internalType": "address", - "name": "beneficiary", - "type": "address" - }, - { - "internalType": "address", - "name": "callback", - "type": "address" - }, - { - "internalType": "string", - "name": "params", - "type": "string" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "sign", - "type": "bytes" - } - ], - "internalType": "struct IexecLibOrders_v5.RequestOrder", - "name": "", - "type": "tuple" - } - ], - "name": "matchOrdersWithEth", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "requestToken", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "requestTokenFor", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "safeDepositEth", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "safeDepositEthFor", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "safeWithdrawEth", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "safeWithdrawEthTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "name": "withdrawEth", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - }, - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "name": "withdrawEthTo", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } -] \ No newline at end of file diff --git a/abis/contracts/interfaces/IexecHubV3Interface.json b/abis/contracts/interfaces/IexecHubV3Interface.json new file mode 100644 index 000000000..4299d0a84 --- /dev/null +++ b/abis/contracts/interfaces/IexecHubV3Interface.json @@ -0,0 +1,21 @@ +[ + { + "inputs": [ + { + "internalType": "address", + "name": "worker", + "type": "address" + } + ], + "name": "viewScore", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abis/contracts/libs/IRegistry.json b/abis/contracts/libs/IRegistry.json deleted file mode 100644 index c1cecf1fb..000000000 --- a/abis/contracts/libs/IRegistry.json +++ /dev/null @@ -1,362 +0,0 @@ -[ - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "approved", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "indexed": false, - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "ApprovalForAll", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "approve", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "balance", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "getApproved", - "outputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "isApprovedForAll", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "_entry", - "type": "address" - } - ], - "name": "isRegistered", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ownerOf", - "outputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "safeTransferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, - { - "internalType": "bool", - "name": "approved", - "type": "bool" - } - ], - "name": "setApprovalForAll", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "tokenByIndex", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "tokenOfOwnerByIndex", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "transferFrom", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - } -] \ No newline at end of file diff --git a/abis/contracts/registries/IRegistry.json b/abis/contracts/registries/IRegistry.json index 91766f066..c1cecf1fb 100644 --- a/abis/contracts/registries/IRegistry.json +++ b/abis/contracts/registries/IRegistry.json @@ -252,7 +252,7 @@ }, { "internalType": "bool", - "name": "_approved", + "name": "approved", "type": "bool" } ], @@ -316,7 +316,7 @@ "outputs": [ { "internalType": "uint256", - "name": "tokenId", + "name": "", "type": "uint256" } ], diff --git a/abis/contracts/registries/Registry.json b/abis/contracts/registries/Registry.json index afc54638a..7aeaed4e4 100644 --- a/abis/contracts/registries/Registry.json +++ b/abis/contracts/registries/Registry.json @@ -1,24 +1,149 @@ [ + { + "inputs": [], + "name": "ERC721EnumerableForbiddenBatchMint", + "type": "error" + }, { "inputs": [ { "internalType": "address", - "name": "_master", + "name": "sender", "type": "address" }, { - "internalType": "string", - "name": "_name", - "type": "string" + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" }, { - "internalType": "string", - "name": "_symbol", - "type": "string" + "internalType": "address", + "name": "owner", + "type": "address" } ], - "stateMutability": "nonpayable", - "type": "constructor" + "name": "ERC721IncorrectOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721InsufficientApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC721InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC721InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721InvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC721InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC721InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721NonexistentToken", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "ERC721OutOfBoundsIndex", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnableInvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "OwnableUnauthorizedAccount", + "type": "error" }, { "anonymous": false, @@ -398,7 +523,7 @@ }, { "internalType": "bytes", - "name": "_data", + "name": "data", "type": "bytes" } ], @@ -429,7 +554,7 @@ "inputs": [ { "internalType": "string", - "name": "_baseURI", + "name": "baseUri", "type": "string" } ], diff --git a/abis/contracts/registries/apps/AppRegistry.json b/abis/contracts/registries/apps/AppRegistry.json index 880542c75..afa6ae9d5 100644 --- a/abis/contracts/registries/apps/AppRegistry.json +++ b/abis/contracts/registries/apps/AppRegistry.json @@ -4,6 +4,178 @@ "stateMutability": "nonpayable", "type": "constructor" }, + { + "inputs": [], + "name": "Create2EmptyBytecode", + "type": "error" + }, + { + "inputs": [], + "name": "Create2FailedDeployment", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "Create2InsufficientBalance", + "type": "error" + }, + { + "inputs": [], + "name": "ERC721EnumerableForbiddenBatchMint", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721IncorrectOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721InsufficientApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC721InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC721InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721InvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC721InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC721InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721NonexistentToken", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "ERC721OutOfBoundsIndex", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnableInvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "OwnableUnauthorizedAccount", + "type": "error" + }, { "anonymous": false, "inputs": [ @@ -470,7 +642,7 @@ }, { "internalType": "bytes", - "name": "_data", + "name": "data", "type": "bytes" } ], @@ -501,7 +673,7 @@ "inputs": [ { "internalType": "string", - "name": "_baseURI", + "name": "baseUri", "type": "string" } ], diff --git a/abis/contracts/registries/datasets/DatasetRegistry.json b/abis/contracts/registries/datasets/DatasetRegistry.json index 85e464f62..91d3e3d80 100644 --- a/abis/contracts/registries/datasets/DatasetRegistry.json +++ b/abis/contracts/registries/datasets/DatasetRegistry.json @@ -4,6 +4,178 @@ "stateMutability": "nonpayable", "type": "constructor" }, + { + "inputs": [], + "name": "Create2EmptyBytecode", + "type": "error" + }, + { + "inputs": [], + "name": "Create2FailedDeployment", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "Create2InsufficientBalance", + "type": "error" + }, + { + "inputs": [], + "name": "ERC721EnumerableForbiddenBatchMint", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721IncorrectOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721InsufficientApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC721InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC721InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721InvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC721InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC721InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721NonexistentToken", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "ERC721OutOfBoundsIndex", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnableInvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "OwnableUnauthorizedAccount", + "type": "error" + }, { "anonymous": false, "inputs": [ @@ -450,7 +622,7 @@ }, { "internalType": "bytes", - "name": "_data", + "name": "data", "type": "bytes" } ], @@ -481,7 +653,7 @@ "inputs": [ { "internalType": "string", - "name": "_baseURI", + "name": "baseUri", "type": "string" } ], diff --git a/abis/contracts/registries/upgradeability/Address.json b/abis/contracts/registries/upgradeability/Address.json new file mode 100644 index 000000000..0637a088a --- /dev/null +++ b/abis/contracts/registries/upgradeability/Address.json @@ -0,0 +1 @@ +[] \ No newline at end of file diff --git a/abis/contracts/registries/upgradeability/BaseUpgradeabilityProxy.json b/abis/contracts/registries/upgradeability/BaseUpgradeabilityProxy.json new file mode 100644 index 000000000..0aa87b9fa --- /dev/null +++ b/abis/contracts/registries/upgradeability/BaseUpgradeabilityProxy.json @@ -0,0 +1,23 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "stateMutability": "payable", + "type": "receive" + } +] \ No newline at end of file diff --git a/abis/contracts/registries/upgradeability/InitializableUpgradeabilityProxy.json b/abis/contracts/registries/upgradeability/InitializableUpgradeabilityProxy.json new file mode 100644 index 000000000..dd7301942 --- /dev/null +++ b/abis/contracts/registries/upgradeability/InitializableUpgradeabilityProxy.json @@ -0,0 +1,41 @@ +[ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "implementation", + "type": "address" + } + ], + "name": "Upgraded", + "type": "event" + }, + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_logic", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } +] \ No newline at end of file diff --git a/abis/contracts/registries/upgradeability/Proxy.json b/abis/contracts/registries/upgradeability/Proxy.json new file mode 100644 index 000000000..fcf60d442 --- /dev/null +++ b/abis/contracts/registries/upgradeability/Proxy.json @@ -0,0 +1,10 @@ +[ + { + "stateMutability": "payable", + "type": "fallback" + }, + { + "stateMutability": "payable", + "type": "receive" + } +] \ No newline at end of file diff --git a/abis/contracts/registries/workerpools/WorkerpoolRegistry.json b/abis/contracts/registries/workerpools/WorkerpoolRegistry.json index 59eea8a6b..1dc237753 100644 --- a/abis/contracts/registries/workerpools/WorkerpoolRegistry.json +++ b/abis/contracts/registries/workerpools/WorkerpoolRegistry.json @@ -4,6 +4,178 @@ "stateMutability": "nonpayable", "type": "constructor" }, + { + "inputs": [], + "name": "Create2EmptyBytecode", + "type": "error" + }, + { + "inputs": [], + "name": "Create2FailedDeployment", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "needed", + "type": "uint256" + } + ], + "name": "Create2InsufficientBalance", + "type": "error" + }, + { + "inputs": [], + "name": "ERC721EnumerableForbiddenBatchMint", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721IncorrectOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721InsufficientApproval", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approver", + "type": "address" + } + ], + "name": "ERC721InvalidApprover", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "ERC721InvalidOperator", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "ERC721InvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "receiver", + "type": "address" + } + ], + "name": "ERC721InvalidReceiver", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "ERC721InvalidSender", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ERC721NonexistentToken", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "ERC721OutOfBoundsIndex", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnableInvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "OwnableUnauthorizedAccount", + "type": "error" + }, { "anonymous": false, "inputs": [ @@ -430,7 +602,7 @@ }, { "internalType": "bytes", - "name": "_data", + "name": "data", "type": "bytes" } ], @@ -461,7 +633,7 @@ "inputs": [ { "internalType": "string", - "name": "_baseURI", + "name": "baseUri", "type": "string" } ], From 8a849329fb66ccebfcc69fa922f13b3414f3f74e Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Tue, 14 Oct 2025 17:27:02 +0200 Subject: [PATCH 15/77] test: Fix tests --- test/000_fullchain-boost.test.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/000_fullchain-boost.test.ts b/test/000_fullchain-boost.test.ts index 16956acd4..9f47385f9 100644 --- a/test/000_fullchain-boost.test.ts +++ b/test/000_fullchain-boost.test.ts @@ -14,7 +14,7 @@ import { IexecPocoBoostFacet, IexecPocoBoostFacet__factory, TestClient__factory, - WorkerpoolInterface__factory, + IWorkerpool__factory, } from '../typechain'; import * as constants from '../utils/constants'; import { TAG_TEE } from '../utils/constants'; @@ -204,7 +204,7 @@ describe('IexecPocoBoostFacet (IT)', function () { expect(deal.workerpoolOwner).to.be.equal(scheduler.address); expect(deal.workerpoolPrice).to.be.equal(workerpoolPrice); expect(deal.requester).to.be.equal(requester.address); - const schedulerRewardRatio = await WorkerpoolInterface__factory.connect( + const schedulerRewardRatio = await IWorkerpool__factory.connect( workerpoolAddress, anyone, ).m_schedulerRewardRatioPolicy(); @@ -369,7 +369,7 @@ describe('IexecPocoBoostFacet (IT)', function () { expect(deal.workerpoolPrice).to.be.equal(workerpoolPrice); expect(deal.requester).to.be.equal(requester.address); expect(deal.sponsor).to.be.equal(sponsor.address); - const schedulerRewardRatio = await WorkerpoolInterface__factory.connect( + const schedulerRewardRatio = await IWorkerpool__factory.connect( workerpoolAddress, anyone, ).m_schedulerRewardRatioPolicy(); From 172fb20367a2558e75b6d15c9f30aa00e434aa64 Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Tue, 14 Oct 2025 18:46:13 +0200 Subject: [PATCH 16/77] chore: Clean --- .../registries/{upgradeability => proxy}/Address.json | 0 .../{upgradeability => proxy}/BaseUpgradeabilityProxy.json | 0 .../InitializableUpgradeabilityProxy.json | 0 .../registries/{upgradeability => proxy}/Proxy.json | 0 contracts/facets/FacetBase.sol | 2 +- contracts/facets/IexecConfigurationExtraFacet.sol | 3 ++- contracts/facets/IexecPocoAccessorsFacet.sol | 3 ++- contracts/facets/SignatureVerifier.sol | 7 +++---- contracts/interfaces/IexecPocoAccessors.sol | 2 +- contracts/libs/PocoStorageLib.sol | 5 ++--- contracts/registries/Registry.sol | 4 ++-- contracts/registries/{upgradeability => proxy}/Address.sol | 1 + .../{upgradeability => proxy}/BaseUpgradeabilityProxy.sol | 0 .../InitializableUpgradeabilityProxy.sol | 0 contracts/registries/{upgradeability => proxy}/Proxy.sol | 0 15 files changed, 14 insertions(+), 13 deletions(-) rename abis/contracts/registries/{upgradeability => proxy}/Address.json (100%) rename abis/contracts/registries/{upgradeability => proxy}/BaseUpgradeabilityProxy.json (100%) rename abis/contracts/registries/{upgradeability => proxy}/InitializableUpgradeabilityProxy.json (100%) rename abis/contracts/registries/{upgradeability => proxy}/Proxy.json (100%) rename contracts/registries/{upgradeability => proxy}/Address.sol (95%) rename contracts/registries/{upgradeability => proxy}/BaseUpgradeabilityProxy.sol (100%) rename contracts/registries/{upgradeability => proxy}/InitializableUpgradeabilityProxy.sol (100%) rename contracts/registries/{upgradeability => proxy}/Proxy.sol (100%) diff --git a/abis/contracts/registries/upgradeability/Address.json b/abis/contracts/registries/proxy/Address.json similarity index 100% rename from abis/contracts/registries/upgradeability/Address.json rename to abis/contracts/registries/proxy/Address.json diff --git a/abis/contracts/registries/upgradeability/BaseUpgradeabilityProxy.json b/abis/contracts/registries/proxy/BaseUpgradeabilityProxy.json similarity index 100% rename from abis/contracts/registries/upgradeability/BaseUpgradeabilityProxy.json rename to abis/contracts/registries/proxy/BaseUpgradeabilityProxy.json diff --git a/abis/contracts/registries/upgradeability/InitializableUpgradeabilityProxy.json b/abis/contracts/registries/proxy/InitializableUpgradeabilityProxy.json similarity index 100% rename from abis/contracts/registries/upgradeability/InitializableUpgradeabilityProxy.json rename to abis/contracts/registries/proxy/InitializableUpgradeabilityProxy.json diff --git a/abis/contracts/registries/upgradeability/Proxy.json b/abis/contracts/registries/proxy/Proxy.json similarity index 100% rename from abis/contracts/registries/upgradeability/Proxy.json rename to abis/contracts/registries/proxy/Proxy.json diff --git a/contracts/facets/FacetBase.sol b/contracts/facets/FacetBase.sol index bc6768e97..ffcf7fe1e 100644 --- a/contracts/facets/FacetBase.sol +++ b/contracts/facets/FacetBase.sol @@ -3,8 +3,8 @@ pragma solidity ^0.8.0; -import {IERC5313} from "@openzeppelin/contracts-v5/interfaces/IERC5313.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; +import {IERC5313} from "@openzeppelin/contracts-v5/interfaces/IERC5313.sol"; // TODO use LibDiamond.contractOwner() when migrating all contracts to v8. diff --git a/contracts/facets/IexecConfigurationExtraFacet.sol b/contracts/facets/IexecConfigurationExtraFacet.sol index 9492c6e93..6a33aba3e 100644 --- a/contracts/facets/IexecConfigurationExtraFacet.sol +++ b/contracts/facets/IexecConfigurationExtraFacet.sol @@ -5,7 +5,8 @@ pragma solidity ^0.8.0; import {FacetBase } from "./FacetBase.sol"; import {IexecConfigurationExtra} from "../interfaces/IexecConfigurationExtra.sol"; -import {PocoStorageLib, IRegistry} from "../libs/PocoStorageLib.sol"; +import {IRegistry} from "../registries/Registry.sol"; +import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; contract IexecConfigurationExtraFacet is IexecConfigurationExtra, FacetBase { function changeRegistries( diff --git a/contracts/facets/IexecPocoAccessorsFacet.sol b/contracts/facets/IexecPocoAccessorsFacet.sol index 26c9997f2..546abb89a 100644 --- a/contracts/facets/IexecPocoAccessorsFacet.sol +++ b/contracts/facets/IexecPocoAccessorsFacet.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; -import {PocoStorageLib, IRegistry} from "../libs/PocoStorageLib.sol"; +import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; import {FacetBase} from "./FacetBase.sol"; import {IexecLibCore_v5} from "../libs/IexecLibCore_v5.sol"; import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; @@ -11,6 +11,7 @@ import {IDataset} from "../registries/datasets/IDataset.v8.sol"; import {IApp} from "../registries/apps/IApp.v8.sol"; import {IWorkerpool} from "../registries/workerpools/IWorkerpool.v8.sol"; import {IexecPocoAccessors} from "../interfaces/IexecPocoAccessors.sol"; +import {IRegistry} from "../registries/Registry.sol"; import {IexecPocoCommon} from "./IexecPocoCommon.sol"; import {SignatureVerifier} from "./SignatureVerifier.v8.sol"; diff --git a/contracts/facets/SignatureVerifier.sol b/contracts/facets/SignatureVerifier.sol index 0e993ba81..68bf10902 100644 --- a/contracts/facets/SignatureVerifier.sol +++ b/contracts/facets/SignatureVerifier.sol @@ -3,14 +3,12 @@ pragma solidity ^0.8.0; -import {IERC1271} from "@openzeppelin/contracts-v5/interfaces/IERC1271.sol"; -import {MessageHashUtils} from "@openzeppelin/contracts-v5/utils/cryptography/MessageHashUtils.sol"; -import {FacetBase} from "./FacetBase.sol"; import {IERC734} from "../external/interfaces/IERC734.sol"; -import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; +import {IERC1271} from "@openzeppelin/contracts-v5/interfaces/IERC1271.sol"; // import "@iexec/solidity/contracts/ERC1654/IERC1654.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; import {FacetBase} from "./FacetBase.sol"; +import {MessageHashUtils} from "@openzeppelin/contracts-v5/utils/cryptography/MessageHashUtils.sol"; // TODO uncomment and fix file contract SignatureVerifier is FacetBase { @@ -65,6 +63,7 @@ contract SignatureVerifier is FacetBase { /** * Check if contract exist, otherwize assumed to be EOA */ + // TODO refactor this with Address library. function _isContract(address account) internal view returns (bool) { // According to EIP-1052, 0x0 is the value returned for not-yet created accounts // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned diff --git a/contracts/interfaces/IexecPocoAccessors.sol b/contracts/interfaces/IexecPocoAccessors.sol index 6809124e3..1c8d38dab 100644 --- a/contracts/interfaces/IexecPocoAccessors.sol +++ b/contracts/interfaces/IexecPocoAccessors.sol @@ -5,7 +5,7 @@ pragma solidity ^0.8.0; import {IexecLibCore_v5} from "../libs/IexecLibCore_v5.sol"; import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; -import {IRegistry} from "../libs/PocoStorageLib.sol"; +import {IRegistry} from "../registries/IRegistry.sol"; interface IexecPocoAccessors { // ========= Deal and Task Accessors ========= diff --git a/contracts/libs/PocoStorageLib.sol b/contracts/libs/PocoStorageLib.sol index ed220486b..709a47c2c 100644 --- a/contracts/libs/PocoStorageLib.sol +++ b/contracts/libs/PocoStorageLib.sol @@ -1,13 +1,12 @@ -// SPDX-FileCopyrightText: 2023-2025 IEXEC BLOCKCHAIN TECH +// SPDX-FileCopyrightText: 2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.0; +import {IexecHubV3Interface} from "../interfaces/IexecHubV3Interface.sol"; import {IERC20} from "@openzeppelin/contracts-v5/interfaces/IERC20.sol"; -import {Ownable} from "@openzeppelin/contracts-v5/access/Ownable.sol"; import {IexecLibCore_v5} from "./IexecLibCore_v5.sol"; import {IRegistry} from "../registries/IRegistry.sol"; -import {IexecHubV3Interface} from "../interfaces/IexecHubV3Interface.sol"; /**************************************************************************** * WARNING: Be carefull when editing this file. * diff --git a/contracts/registries/Registry.sol b/contracts/registries/Registry.sol index 4416b6da3..72b6a08ba 100644 --- a/contracts/registries/Registry.sol +++ b/contracts/registries/Registry.sol @@ -3,12 +3,12 @@ pragma solidity ^0.8.0; -import "./upgradeability/InitializableUpgradeabilityProxy.sol"; +import "./proxy/InitializableUpgradeabilityProxy.sol"; import {Ownable} from "@openzeppelin/contracts-v5/access/Ownable.sol"; import {ERC721} from "@openzeppelin/contracts-v5/token/ERC721/ERC721.sol"; -import {ERC721Enumerable} from "@openzeppelin/contracts-v5/token/ERC721/extensions/ERC721Enumerable.sol"; import {Create2} from "@openzeppelin/contracts-v5/utils/Create2.sol"; import {IRegistry} from "./IRegistry.sol"; +import {ERC721Enumerable} from "@openzeppelin/contracts-v5/token/ERC721/extensions/ERC721Enumerable.sol"; abstract contract Registry is IRegistry, ERC721Enumerable, Ownable { address public master; diff --git a/contracts/registries/upgradeability/Address.sol b/contracts/registries/proxy/Address.sol similarity index 95% rename from contracts/registries/upgradeability/Address.sol rename to contracts/registries/proxy/Address.sol index 5fffe0b63..f182a7114 100644 --- a/contracts/registries/upgradeability/Address.sol +++ b/contracts/registries/proxy/Address.sol @@ -11,6 +11,7 @@ pragma solidity ^0.8.0; +// TODO refactor this with SignatureVerifier._isContract library Address { /** * @dev Returns true if `account` is a contract. diff --git a/contracts/registries/upgradeability/BaseUpgradeabilityProxy.sol b/contracts/registries/proxy/BaseUpgradeabilityProxy.sol similarity index 100% rename from contracts/registries/upgradeability/BaseUpgradeabilityProxy.sol rename to contracts/registries/proxy/BaseUpgradeabilityProxy.sol diff --git a/contracts/registries/upgradeability/InitializableUpgradeabilityProxy.sol b/contracts/registries/proxy/InitializableUpgradeabilityProxy.sol similarity index 100% rename from contracts/registries/upgradeability/InitializableUpgradeabilityProxy.sol rename to contracts/registries/proxy/InitializableUpgradeabilityProxy.sol diff --git a/contracts/registries/upgradeability/Proxy.sol b/contracts/registries/proxy/Proxy.sol similarity index 100% rename from contracts/registries/upgradeability/Proxy.sol rename to contracts/registries/proxy/Proxy.sol From 6e9655eb21b6d32a0772d155ed043df4165a30da Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Fri, 24 Oct 2025 11:17:48 +0200 Subject: [PATCH 17/77] chore: Fix deployment --- utils/proxy-tools.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/utils/proxy-tools.ts b/utils/proxy-tools.ts index f12fae65f..fe7a56c98 100644 --- a/utils/proxy-tools.ts +++ b/utils/proxy-tools.ts @@ -18,7 +18,6 @@ import { IexecERC20Facet__factory, IexecEscrowNativeFacet__factory, IexecEscrowTokenFacet__factory, - IexecEscrowTokenSwapFacet__factory, IexecOrderManagementFacet__factory, IexecPoco1Facet__factory, IexecPoco2Facet__factory, @@ -144,7 +143,6 @@ export function getAllLocalFacetFunctions(): Map { IexecERC20Facet__factory.createInterface(), IexecEscrowNativeFacet__factory.createInterface(), IexecEscrowTokenFacet__factory.createInterface(), - IexecEscrowTokenSwapFacet__factory.createInterface(), IexecOrderManagementFacet__factory.createInterface(), IexecPoco1Facet__factory.createInterface(), IexecPoco2Facet__factory.createInterface(), From d26565faead271be3b9941780fcf73eb1494119e Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Tue, 28 Oct 2025 13:03:49 +0100 Subject: [PATCH 18/77] refactor: Update test assertions to use revertedWithoutReason for better clarity --- test/000_fullchain-boost.test.ts | 6 +-- test/byContract/IexecERC20/IexecERC20.test.ts | 8 ++-- .../IexecEscrow/IexecEscrowNative.test.ts | 12 +++--- .../IexecEscrow/IexecEscrowToken.test.ts | 8 ++-- test/byContract/registries/registries.test.ts | 42 +++++++++---------- 5 files changed, 38 insertions(+), 38 deletions(-) diff --git a/test/000_fullchain-boost.test.ts b/test/000_fullchain-boost.test.ts index 9f47385f9..16956acd4 100644 --- a/test/000_fullchain-boost.test.ts +++ b/test/000_fullchain-boost.test.ts @@ -14,7 +14,7 @@ import { IexecPocoBoostFacet, IexecPocoBoostFacet__factory, TestClient__factory, - IWorkerpool__factory, + WorkerpoolInterface__factory, } from '../typechain'; import * as constants from '../utils/constants'; import { TAG_TEE } from '../utils/constants'; @@ -204,7 +204,7 @@ describe('IexecPocoBoostFacet (IT)', function () { expect(deal.workerpoolOwner).to.be.equal(scheduler.address); expect(deal.workerpoolPrice).to.be.equal(workerpoolPrice); expect(deal.requester).to.be.equal(requester.address); - const schedulerRewardRatio = await IWorkerpool__factory.connect( + const schedulerRewardRatio = await WorkerpoolInterface__factory.connect( workerpoolAddress, anyone, ).m_schedulerRewardRatioPolicy(); @@ -369,7 +369,7 @@ describe('IexecPocoBoostFacet (IT)', function () { expect(deal.workerpoolPrice).to.be.equal(workerpoolPrice); expect(deal.requester).to.be.equal(requester.address); expect(deal.sponsor).to.be.equal(sponsor.address); - const schedulerRewardRatio = await IWorkerpool__factory.connect( + const schedulerRewardRatio = await WorkerpoolInterface__factory.connect( workerpoolAddress, anyone, ).m_schedulerRewardRatioPolicy(); diff --git a/test/byContract/IexecERC20/IexecERC20.test.ts b/test/byContract/IexecERC20/IexecERC20.test.ts index 1708f9eb7..c812e0a6d 100644 --- a/test/byContract/IexecERC20/IexecERC20.test.ts +++ b/test/byContract/IexecERC20/IexecERC20.test.ts @@ -97,7 +97,7 @@ describe('ERC20', async () => { it('Should not transfer when sender balance is too low', async () => { await expect( iexecPocoAsHolder.transfer(recipient.address, value + 1n), - ).to.be.revertedWithPanic(0x11); + ).to.be.revertedWithoutReason(); }); }); @@ -201,13 +201,13 @@ describe('ERC20', async () => { it('Should not transferFrom when owner balance is too low', async () => { await expect( iexecPocoAsSpender.transferFrom(holder.address, spender.address, value + 1n), - ).to.be.revertedWithPanic(0x11); + ).to.be.revertedWithoutReason(); }); it('Should not transferFrom when spender allowance is too low', async () => { await iexecPocoAsHolder.approve(spender.address, value - 1n).then((tx) => tx.wait()); await expect( iexecPocoAsSpender.transferFrom(holder.address, spender.address, value), - ).to.be.revertedWithPanic(0x11); + ).to.be.revertedWithoutReason(); }); }); @@ -260,7 +260,7 @@ describe('ERC20', async () => { it('Should not decrease allowance of a value greater than old allowance', async () => { await expect( iexecPocoAsHolder.decreaseAllowance(spender.address, 1), - ).to.be.revertedWithPanic(0x11); + ).to.be.revertedWithoutReason(); }); it('Should not decrease allowance from the zero address', async () => { await expect( diff --git a/test/byContract/IexecEscrow/IexecEscrowNative.test.ts b/test/byContract/IexecEscrow/IexecEscrowNative.test.ts index 657c8334d..0c396a957 100644 --- a/test/byContract/IexecEscrow/IexecEscrowNative.test.ts +++ b/test/byContract/IexecEscrow/IexecEscrowNative.test.ts @@ -254,9 +254,9 @@ if (config.isNativeChain()) { }); it('Should not withdraw native tokens with empty balance', async () => { - await expect(iexecPocoAsAccountA.withdraw(...withdrawArg)).to.be.revertedWithPanic( - 0x11, - ); + await expect( + iexecPocoAsAccountA.withdraw(...withdrawArg), + ).to.be.revertedWithoutReason(); }); it('Should not withdraw native tokens with insufficient balance', async () => { @@ -264,7 +264,7 @@ if (config.isNativeChain()) { await expect( iexecPocoAsAccountA.withdraw(depositAmount * 2n), - ).to.be.revertedWithPanic(0x11); + ).to.be.revertedWithoutReason(); }); }); @@ -289,7 +289,7 @@ if (config.isNativeChain()) { const withdrawToArgs = [...withdrawArg, accountB.address] as [bigint, string]; await expect( iexecPocoAsAccountA.withdrawTo(...withdrawToArgs), - ).to.be.revertedWithPanic(0x11); + ).to.be.revertedWithoutReason(); }); it('Should not withdraw To native tokens with insufficient balance', async () => { @@ -297,7 +297,7 @@ if (config.isNativeChain()) { const withdrawToArgs = [...withdrawArg, accountB.address] as [bigint, string]; await expect( iexecPocoAsAccountA.withdrawTo(withdrawToArgs[0] * 2n, withdrawToArgs[1]), - ).to.be.revertedWithPanic(0x11); + ).to.be.revertedWithoutReason(); }); }); diff --git a/test/byContract/IexecEscrow/IexecEscrowToken.test.ts b/test/byContract/IexecEscrow/IexecEscrowToken.test.ts index 10978d2ec..f7bf57223 100644 --- a/test/byContract/IexecEscrow/IexecEscrowToken.test.ts +++ b/test/byContract/IexecEscrow/IexecEscrowToken.test.ts @@ -305,13 +305,13 @@ describe('IexecEscrowToken', () => { .withArgs(proxyAddress, accountA.address, 0); }); it('Should not withdraw tokens with empty balance', async () => { - await expect(iexecPocoAsAccountA.withdraw(amount)).to.be.revertedWithPanic(0x11); + await expect(iexecPocoAsAccountA.withdraw(amount)).to.be.revertedWithoutReason(); }); it('Should not withdraw tokens with insufficient balance', async () => { await rlcInstanceAsAccountA.approve(proxyAddress, amount).then((tx) => tx.wait()); await iexecPocoAsAccountA.deposit(amount).then((tx) => tx.wait()); - await expect(iexecPocoAsAccountA.withdraw(amount + 1n)).to.be.revertedWithPanic(0x11); + await expect(iexecPocoAsAccountA.withdraw(amount + 1n)).to.be.revertedWithoutReason(); }); }); @@ -366,7 +366,7 @@ describe('IexecEscrowToken', () => { it('Should not withdraw to another address with empty balance', async () => { await expect( iexecPocoAsAccountA.withdrawTo(amount, accountB.address), - ).to.be.revertedWithPanic(0x11); + ).to.be.revertedWithoutReason(); }); it('Should not withdraw to another address with insufficient balance', async () => { await rlcInstanceAsAccountA.approve(proxyAddress, amount).then((tx) => tx.wait()); @@ -374,7 +374,7 @@ describe('IexecEscrowToken', () => { await expect( iexecPocoAsAccountA.withdrawTo(amount + 1n, accountB.address), - ).to.be.revertedWithPanic(0x11); + ).to.be.revertedWithoutReason(); }); }); diff --git a/test/byContract/registries/registries.test.ts b/test/byContract/registries/registries.test.ts index ce03677f9..96f4837d5 100644 --- a/test/byContract/registries/registries.test.ts +++ b/test/byContract/registries/registries.test.ts @@ -97,15 +97,15 @@ describe('Registries', () => { }); it('Should not initialize when user is not the owner', async () => { - await expect(appRegistry.initialize(ZeroAddress)) - .to.be.revertedWithCustomError(appRegistry, 'OwnableUnauthorizedAccount') - .withArgs(anyone.address); - await expect(datasetRegistry.initialize(ZeroAddress)) - .to.be.revertedWithCustomError(datasetRegistry, 'OwnableUnauthorizedAccount') - .withArgs(anyone.address); - await expect(workerpoolRegistry.initialize(ZeroAddress)) - .to.be.revertedWithCustomError(workerpoolRegistry, 'OwnableUnauthorizedAccount') - .withArgs(anyone.address); + await expect(appRegistry.initialize(ZeroAddress)).to.be.revertedWith( + 'Ownable: caller is not the owner', + ); + await expect(datasetRegistry.initialize(ZeroAddress)).to.be.revertedWith( + 'Ownable: caller is not the owner', + ); + await expect(workerpoolRegistry.initialize(ZeroAddress)).to.be.revertedWith( + 'Ownable: caller is not the owner', + ); }); it('Should not reinitialize', async () => { @@ -131,15 +131,15 @@ describe('Registries', () => { }); it('Should not set base URI when user is not the owner', async () => { - await expect(appRegistry.setBaseURI(`https://new.url.iex.ec/app/`)) - .to.be.revertedWithCustomError(appRegistry, 'OwnableUnauthorizedAccount') - .withArgs(anyone.address); - await expect(datasetRegistry.setBaseURI(`https://new.url.iex.ec/dataset/`)) - .to.be.revertedWithCustomError(datasetRegistry, 'OwnableUnauthorizedAccount') - .withArgs(anyone.address); - await expect(workerpoolRegistry.setBaseURI(`https://new.url.iex.ec/workerpool/`)) - .to.be.revertedWithCustomError(workerpoolRegistry, 'OwnableUnauthorizedAccount') - .withArgs(anyone.address); + await expect(appRegistry.setBaseURI(`https://new.url.iex.ec/app/`)).to.be.revertedWith( + 'Ownable: caller is not the owner', + ); + await expect( + datasetRegistry.setBaseURI(`https://new.url.iex.ec/dataset/`), + ).to.be.revertedWith('Ownable: caller is not the owner'); + await expect( + workerpoolRegistry.setBaseURI(`https://new.url.iex.ec/workerpool/`), + ).to.be.revertedWith('Ownable: caller is not the owner'); }); }); @@ -280,7 +280,7 @@ describe('Registries', () => { await expect( appRegistry.createApp(appProvider.address, ...createAppArgs), - ).to.be.revertedWithCustomError(appRegistry, 'Create2FailedDeployment'); + ).to.be.revertedWith('Create2: Failed on deploy'); }); it('Should check that a new app is well registered on new app registry', async () => { @@ -385,7 +385,7 @@ describe('Registries', () => { await expect( datasetRegistry.createDataset(datasetProvider.address, ...createDatasetArgs), - ).to.be.revertedWithCustomError(appRegistry, 'Create2FailedDeployment'); + ).to.be.revertedWith('Create2: Failed on deploy'); }); }); @@ -469,7 +469,7 @@ describe('Registries', () => { await expect( workerpoolRegistry.createWorkerpool(scheduler.address, ...createWorkerpoolArgs), - ).to.be.revertedWithCustomError(appRegistry, 'Create2FailedDeployment'); + ).to.be.revertedWith('Create2: Failed on deploy'); }); }); From b727db91207e8ddc043e29688ff303849781735c Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Tue, 28 Oct 2025 13:04:18 +0100 Subject: [PATCH 19/77] docs: Expand Solidity documentation with new facets and methods for Iexec contracts --- docs/solidity/index.md | 825 +++++++++++++++++++++++++---------------- 1 file changed, 509 insertions(+), 316 deletions(-) diff --git a/docs/solidity/index.md b/docs/solidity/index.md index 88fdf3fb9..9b9dd0759 100644 --- a/docs/solidity/index.md +++ b/docs/solidity/index.md @@ -16,9 +16,101 @@ the PoCo contracts in token mode. _Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. Changing the name or the path would cause a breaking change in the SDK._ -## FacetBase +## IexecCategoryManagerFacet -_Every facet must inherit from this contract._ +### createCategory + +```solidity +function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) +``` + +Methods + +## IexecConfigurationExtraFacet + +### changeRegistries + +```solidity +function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external +``` + +## IexecConfigurationFacet + +### configure + +```solidity +function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external +``` + +### domain + +```solidity +function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) +``` + +### updateDomainSeparator + +```solidity +function updateDomainSeparator() external +``` + +### importScore + +```solidity +function importScore(address _worker) external +``` + +### setTeeBroker + +```solidity +function setTeeBroker(address _teebroker) external +``` + +### setCallbackGas + +```solidity +function setCallbackGas(uint256 _callbackgas) external +``` + +## IexecERC20Core + +## IexecERC20Facet + +### transfer + +```solidity +function transfer(address recipient, uint256 amount) external returns (bool) +``` + +### approve + +```solidity +function approve(address spender, uint256 value) external returns (bool) +``` + +### approveAndCall + +```solidity +function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) +``` + +### transferFrom + +```solidity +function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) +``` + +### increaseAllowance + +```solidity +function increaseAllowance(address spender, uint256 addedValue) external returns (bool) +``` + +### decreaseAllowance + +```solidity +function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) +``` ## IexecEscrow @@ -52,6 +144,112 @@ event Reward(address owner, uint256 amount, bytes32 ref) event Seize(address owner, uint256 amount, bytes32 ref) ``` +## IexecEscrowNativeFacet + +### receive + +```solidity +receive() external payable +``` + +### fallback + +```solidity +fallback() external payable +``` + +### deposit + +```solidity +function deposit() external payable returns (bool) +``` + +### depositFor + +```solidity +function depositFor(address target) external payable returns (bool) +``` + +### depositForArray + +```solidity +function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) +``` + +### withdraw + +```solidity +function withdraw(uint256 amount) external returns (bool) +``` + +### withdrawTo + +```solidity +function withdrawTo(uint256 amount, address target) external returns (bool) +``` + +### recover + +```solidity +function recover() external returns (uint256) +``` + +## IexecEscrowTokenFacet + +### receive + +```solidity +receive() external payable +``` + +### fallback + +```solidity +fallback() external payable +``` + +### deposit + +```solidity +function deposit(uint256 amount) external returns (bool) +``` + +### depositFor + +```solidity +function depositFor(uint256 amount, address target) external returns (bool) +``` + +### depositForArray + +```solidity +function depositForArray(uint256[] amounts, address[] targets) external returns (bool) +``` + +### withdraw + +```solidity +function withdraw(uint256 amount) external returns (bool) +``` + +### withdrawTo + +```solidity +function withdrawTo(uint256 amount, address target) external returns (bool) +``` + +### recover + +```solidity +function recover() external returns (uint256) +``` + +### receiveApproval + +```solidity +function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) +``` + ## IexecOrderManagementFacet ### manageAppOrder @@ -606,6 +804,32 @@ Claim task to get a refund if task is not completed after deadline. | dealId | bytes32 | The ID of the deal. | | index | uint256 | The index of the task. | +## IexecRelayFacet + +### broadcastAppOrder + +```solidity +function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external +``` + +### broadcastDatasetOrder + +```solidity +function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external +``` + +### broadcastWorkerpoolOrder + +```solidity +function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external +``` + +### broadcastRequestOrder + +```solidity +function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external +``` + ## IexecLibCore_v5 ### Account @@ -1065,7 +1289,7 @@ struct PocoStorage { address m_teebroker; uint256 m_callbackgas; struct IexecLibCore_v5.Category[] m_categories; - address m_v3_iexecHub; + contract IexecHubV3Interface m_v3_iexecHub; mapping(address => bool) m_v3_scoreImported; mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; } @@ -1079,671 +1303,640 @@ struct PocoStorage { function isRegistered(address _entry) external view returns (bool) ``` -## IApp +## Registry -### owner +### master ```solidity -function owner() external view returns (address) +address master ``` -### m_appName +### proxyCode ```solidity -function m_appName() external view returns (string) +bytes proxyCode ``` -### m_appType +### proxyCodeHash ```solidity -function m_appType() external view returns (string) +bytes32 proxyCodeHash ``` -### m_appMultiaddr +### previous ```solidity -function m_appMultiaddr() external view returns (bytes) +contract IRegistry previous ``` -### m_appChecksum +### initialized ```solidity -function m_appChecksum() external view returns (bytes32) +bool initialized ``` -### m_appMREnclave +### initialize ```solidity -function m_appMREnclave() external view returns (bytes) +function initialize(address _previous) external ``` -## IDataset - -### owner +### setBaseURI ```solidity -function owner() external view returns (address) +function setBaseURI(string baseUri) external ``` -### m_datasetName +### baseURI ```solidity -function m_datasetName() external view returns (string) +function baseURI() public view returns (string) ``` -### m_datasetMultiaddr +_Added for retrocompatibility! + +Returns the base URI set via {setBaseURI}. This will be +automatically added as a prefix in {tokenURI} to each token's ID._ + +### isRegistered ```solidity -function m_datasetMultiaddr() external view returns (bytes) +function isRegistered(address _entry) external view returns (bool) ``` -### m_datasetChecksum +### setName ```solidity -function m_datasetChecksum() external view returns (bytes32) +function setName(address, string) external ``` -## IWorkerpool +Sets the reverse registration name for a registry contract. -### owner +_This functionality is supported only on Bellecour Sidechain, calls on other chains +will revert. The function is kept as nonpayable to maintain retrocompatibility with the +iExec SDK._ -```solidity -function owner() external view returns (address) -``` +## RegistryEntry -### m_workerpoolDescription +_Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### registry ```solidity -function m_workerpoolDescription() external view returns (string) +contract IRegistry registry ``` -### m_schedulerRewardRatioPolicy +### owner ```solidity -function m_schedulerRewardRatioPolicy() external view returns (uint256) +function owner() public view returns (address) ``` -### m_workerStakeRatioPolicy +### setName ```solidity -function m_workerStakeRatioPolicy() external view returns (uint256) +function setName(address, string) external ``` -## IexecCategoryManagerFacet - -### createCategory +Sets the reverse registration name for a registry entry contract. -```solidity -function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) -``` +_This functionality is supported only on Bellecour Sidechain, calls on other chains +will revert. The function is kept as nonpayable to maintain retrocompatibility with the +iExec SDK._ -Methods +## App -## IexecConfigurationExtraFacet +_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### changeRegistries +### m_appName ```solidity -function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external +string m_appName ``` -## IexecConfigurationFacet +Members -### configure +### m_appType ```solidity -function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external +string m_appType ``` -### domain +### m_appMultiaddr ```solidity -function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) +bytes m_appMultiaddr ``` -### updateDomainSeparator +### m_appChecksum ```solidity -function updateDomainSeparator() external +bytes32 m_appChecksum ``` -### importScore +### m_appMREnclave ```solidity -function importScore(address _worker) external +bytes m_appMREnclave ``` -### setTeeBroker +### initialize ```solidity -function setTeeBroker(address _teebroker) external +function initialize(string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) public ``` -### setCallbackGas +Constructor -```solidity -function setCallbackGas(uint256 _callbackgas) external -``` +## AppRegistry -## IexecERC20Core +_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### Transfer +### constructor ```solidity -event Transfer(address from, address to, uint256 value) +constructor() public ``` -### Approval +Constructor + +### createApp ```solidity -event Approval(address owner, address spender, uint256 value) +function createApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external returns (contract App) ``` -## IexecERC20Facet - -### transfer +### predictApp ```solidity -function transfer(address recipient, uint256 amount) external returns (bool) +function predictApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external view returns (contract App) ``` -### approve +## IApp + +### owner ```solidity -function approve(address spender, uint256 value) external returns (bool) +function owner() external view returns (address) ``` -### approveAndCall +### m_appName ```solidity -function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) +function m_appName() external view returns (string) ``` -### transferFrom +### m_appType ```solidity -function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) +function m_appType() external view returns (string) ``` -### increaseAllowance +### m_appMultiaddr ```solidity -function increaseAllowance(address spender, uint256 addedValue) external returns (bool) +function m_appMultiaddr() external view returns (bytes) ``` -### decreaseAllowance +### m_appChecksum ```solidity -function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) +function m_appChecksum() external view returns (bytes32) ``` -## IexecEscrowNativeFacet - -### receive +### m_appMREnclave ```solidity -receive() external payable +function m_appMREnclave() external view returns (bytes) ``` -### fallback +## Dataset -```solidity -fallback() external payable -``` +_Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### deposit +### m_datasetName ```solidity -function deposit() external payable returns (bool) +string m_datasetName ``` -### depositFor +Members + +### m_datasetMultiaddr ```solidity -function depositFor(address target) external payable returns (bool) +bytes m_datasetMultiaddr ``` -### depositForArray +### m_datasetChecksum ```solidity -function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) +bytes32 m_datasetChecksum ``` -### withdraw +### initialize ```solidity -function withdraw(uint256 amount) external returns (bool) +function initialize(string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) public ``` -### withdrawTo +Constructor -```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) -``` +## DatasetRegistry -### recover +_Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### constructor ```solidity -function recover() external returns (uint256) +constructor() public ``` -## IexecEscrowTokenFacet +Constructor -### receive +### createDataset ```solidity -receive() external payable +function createDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external returns (contract Dataset) ``` -### fallback +### predictDataset ```solidity -fallback() external payable +function predictDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external view returns (contract Dataset) ``` -### deposit +## IDataset + +### owner ```solidity -function deposit(uint256 amount) external returns (bool) +function owner() external view returns (address) ``` -### depositFor +### m_datasetName ```solidity -function depositFor(uint256 amount, address target) external returns (bool) +function m_datasetName() external view returns (string) ``` -### depositForArray +### m_datasetMultiaddr ```solidity -function depositForArray(uint256[] amounts, address[] targets) external returns (bool) +function m_datasetMultiaddr() external view returns (bytes) ``` -### withdraw +### m_datasetChecksum ```solidity -function withdraw(uint256 amount) external returns (bool) +function m_datasetChecksum() external view returns (bytes32) ``` -### withdrawTo +## Address -```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) -``` +## BaseUpgradeabilityProxy -### recover +_This contract implements a proxy that allows to change the +implementation address to which it will delegate. +Such a change is called an implementation upgrade._ + +### Upgraded ```solidity -function recover() external returns (uint256) +event Upgraded(address implementation) ``` -### receiveApproval +_Emitted when the implementation is upgraded._ -```solidity -function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) -``` +#### Parameters -## IexecRelayFacet +| Name | Type | Description | +| ---- | ---- | ----------- | +| implementation | address | Address of the new implementation. | -### broadcastAppOrder +## InitializableUpgradeabilityProxy -```solidity -function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external -``` +_Extends BaseUpgradeabilityProxy with an initializer for initializing +implementation and init data._ -### broadcastDatasetOrder +### initialize ```solidity -function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external +function initialize(address _logic, bytes _data) public payable ``` -### broadcastWorkerpoolOrder +_Contract initializer._ -```solidity -function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external -``` +#### Parameters -### broadcastRequestOrder +| Name | Type | Description | +| ---- | ---- | ----------- | +| _logic | address | Address of the initial implementation. | +| _data | bytes | Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. | -```solidity -function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external -``` +## Proxy -## PocoStorageLib +_Implements delegation of calls to other contracts, with proper +forwarding of return values and bubbling of failures. +It defines a fallback function that delegates all calls to the address +returned by the abstract _implementation() internal function._ -### PocoStorage +### receive ```solidity -struct PocoStorage { - contract IRegistry m_appregistry; - contract IRegistry m_datasetregistry; - contract IRegistry m_workerpoolregistry; - contract IERC20 m_baseToken; - string m_name; - string m_symbol; - uint8 m_decimals; - uint256 m_totalSupply; - mapping(address => uint256) m_balances; - mapping(address => uint256) m_frozens; - mapping(address => mapping(address => uint256)) m_allowances; - bytes32 m_eip712DomainSeparator; - mapping(bytes32 => address) m_presigned; - mapping(bytes32 => uint256) m_consumed; - mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; - mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; - mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; - mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; - mapping(address => uint256) m_workerScores; - address m_teebroker; - uint256 m_callbackgas; - struct IexecLibCore_v5.Category[] m_categories; - contract IexecHubV3Interface m_v3_iexecHub; - mapping(address => bool) m_v3_scoreImported; -} +receive() external payable virtual ``` -## IRegistry +_Receive function. +Implemented entirely in `_fallback`._ -### isRegistered +### fallback ```solidity -function isRegistered(address _entry) external view returns (bool) +fallback() external payable ``` -## Registry +_Fallback function. +Implemented entirely in `_fallback`._ -### master +## IWorkerpool + +### owner ```solidity -address master +function owner() external view returns (address) ``` -### proxyCode +### m_workerpoolDescription ```solidity -bytes proxyCode +function m_workerpoolDescription() external view returns (string) ``` -### proxyCodeHash +### m_schedulerRewardRatioPolicy ```solidity -bytes32 proxyCodeHash +function m_schedulerRewardRatioPolicy() external view returns (uint256) ``` -### previous +### m_workerStakeRatioPolicy ```solidity -contract IRegistry previous +function m_workerStakeRatioPolicy() external view returns (uint256) ``` -### initialized +## Workerpool -```solidity -bool initialized -``` +_Referenced in the SDK with the current path `contracts/registries/workerpools/Workerpool.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### constructor +### m_workerpoolDescription ```solidity -constructor(address _master, string _name, string _symbol) public +string m_workerpoolDescription ``` -### initialize +Parameters + +### m_workerStakeRatioPolicy ```solidity -function initialize(address _previous) external +uint256 m_workerStakeRatioPolicy ``` -### setBaseURI +### m_schedulerRewardRatioPolicy ```solidity -function setBaseURI(string _baseURI) external +uint256 m_schedulerRewardRatioPolicy ``` -### isRegistered +### PolicyUpdate ```solidity -function isRegistered(address _entry) external view returns (bool) +event PolicyUpdate(uint256 oldWorkerStakeRatioPolicy, uint256 newWorkerStakeRatioPolicy, uint256 oldSchedulerRewardRatioPolicy, uint256 newSchedulerRewardRatioPolicy) ``` -### setName +Events + +### initialize ```solidity -function setName(address, string) external +function initialize(string _workerpoolDescription) public ``` -Sets the reverse registration name for a registry contract. +Constructor -_This functionality is supported only on Bellecour Sidechain, calls on other chains -will revert. The function is kept as nonpayable to maintain retrocompatibility with the -iExec SDK._ +### changePolicy -## RegistryEntry +```solidity +function changePolicy(uint256 _newWorkerStakeRatioPolicy, uint256 _newSchedulerRewardRatioPolicy) external +``` -_Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. +## WorkerpoolRegistry + +_Referenced in the SDK with the current path `contracts/registries/workerpools/WorkerpoolRegistry.sol`. Changing the name or the path would cause a breaking change in the SDK._ -### registry +### constructor ```solidity -contract IRegistry registry +constructor() public ``` -### owner +Constructor + +### createWorkerpool ```solidity -function owner() public view returns (address) +function createWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external returns (contract Workerpool) ``` -### setName +### predictWorkerpool ```solidity -function setName(address, string) external +function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) ``` -Sets the reverse registration name for a registry entry contract. +## IexecInterfaceNativeABILegacy -_This functionality is supported only on Bellecour Sidechain, calls on other chains -will revert. The function is kept as nonpayable to maintain retrocompatibility with the -iExec SDK._ +TODO: Remove this interface in the future when IexecInterfaceTokenABILegacy is removed. -## App +## IexecInterfaceTokenABILegacy -_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +TODO: Remove this interface in the future. +Currently Used in the middleware: +https://github.com/iExecBlockchainComputing/iexec-commons-poco/blob/819cd008/generateContractWrappers#L7 -### m_appName +### receive ```solidity -string m_appName +receive() external payable ``` -Members - -### m_appType +### fallback ```solidity -string m_appType +fallback() external payable ``` -### m_appMultiaddr +## IexecEscrowTokenSwapFacet -```solidity -bytes m_appMultiaddr -``` - -### m_appChecksum +### UniswapV2Router ```solidity -bytes32 m_appChecksum +function UniswapV2Router() external view returns (contract IUniswapV2Router02) ``` -### m_appMREnclave +### estimateDepositEthSent ```solidity -bytes m_appMREnclave +function estimateDepositEthSent(uint256 eth) external view returns (uint256 token) ``` -### initialize +### estimateDepositTokenWanted ```solidity -function initialize(string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) public +function estimateDepositTokenWanted(uint256 token) external view returns (uint256 eth) ``` -Constructor - -## AppRegistry - -_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### constructor +### estimateWithdrawTokenSent ```solidity -constructor() public +function estimateWithdrawTokenSent(uint256 token) external view returns (uint256 eth) ``` -Constructor - -### createApp +### estimateWithdrawEthWanted ```solidity -function createApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external returns (contract App) +function estimateWithdrawEthWanted(uint256 eth) external view returns (uint256 token) ``` -### predictApp +### receive ```solidity -function predictApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external view returns (contract App) +receive() external payable ``` -## Dataset - -_Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### m_datasetName +### fallback ```solidity -string m_datasetName +fallback() external payable ``` -Members - -### m_datasetMultiaddr +### depositEth ```solidity -bytes m_datasetMultiaddr +function depositEth() external payable ``` -### m_datasetChecksum +### depositEthFor ```solidity -bytes32 m_datasetChecksum +function depositEthFor(address target) external payable ``` -### initialize +### safeDepositEth ```solidity -function initialize(string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) public +function safeDepositEth(uint256 minimum) external payable ``` -Constructor - -## DatasetRegistry - -_Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### constructor +### safeDepositEthFor ```solidity -constructor() public +function safeDepositEthFor(uint256 minimum, address target) external payable ``` -Constructor - -### createDataset +### requestToken ```solidity -function createDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external returns (contract Dataset) +function requestToken(uint256 amount) external payable ``` -### predictDataset +### requestTokenFor ```solidity -function predictDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external view returns (contract Dataset) +function requestTokenFor(uint256 amount, address target) external payable ``` -## Workerpool - -_Referenced in the SDK with the current path `contracts/registries/workerpools/Workerpool.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### m_workerpoolDescription +### withdrawEth ```solidity -string m_workerpoolDescription +function withdrawEth(uint256 amount) external ``` -Parameters - -### m_workerStakeRatioPolicy +### withdrawEthTo ```solidity -uint256 m_workerStakeRatioPolicy +function withdrawEthTo(uint256 amount, address target) external ``` -### m_schedulerRewardRatioPolicy +### safeWithdrawEth ```solidity -uint256 m_schedulerRewardRatioPolicy +function safeWithdrawEth(uint256 amount, uint256 minimum) external ``` -### PolicyUpdate +### safeWithdrawEthTo ```solidity -event PolicyUpdate(uint256 oldWorkerStakeRatioPolicy, uint256 newWorkerStakeRatioPolicy, uint256 oldSchedulerRewardRatioPolicy, uint256 newSchedulerRewardRatioPolicy) +function safeWithdrawEthTo(uint256 amount, uint256 minimum, address target) external ``` -Events - -### initialize +### matchOrdersWithEth ```solidity -function initialize(string _workerpoolDescription) public +function matchOrdersWithEth(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) public payable returns (bytes32) ``` -Constructor - -### changePolicy - -```solidity -function changePolicy(uint256 _newWorkerStakeRatioPolicy, uint256 _newSchedulerRewardRatioPolicy) external -``` +## FacetBase -## WorkerpoolRegistry +_Every facet must inherit from this contract._ -_Referenced in the SDK with the current path `contracts/registries/workerpools/WorkerpoolRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +## PocoStorageLib -### constructor +### PocoStorage ```solidity -constructor() public +struct PocoStorage { + contract IRegistry m_appregistry; + contract IRegistry m_datasetregistry; + contract IRegistry m_workerpoolregistry; + contract IERC20 m_baseToken; + string m_name; + string m_symbol; + uint8 m_decimals; + uint256 m_totalSupply; + mapping(address => uint256) m_balances; + mapping(address => uint256) m_frozens; + mapping(address => mapping(address => uint256)) m_allowances; + bytes32 m_eip712DomainSeparator; + mapping(bytes32 => address) m_presigned; + mapping(bytes32 => uint256) m_consumed; + mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; + mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; + mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; + mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; + mapping(address => uint256) m_workerScores; + address m_teebroker; + uint256 m_callbackgas; + struct IexecLibCore_v5.Category[] m_categories; + address m_v3_iexecHub; + mapping(address => bool) m_v3_scoreImported; + mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; +} ``` -Constructor - -### createWorkerpool - -```solidity -function createWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external returns (contract Workerpool) -``` +## IRegistry -### predictWorkerpool +### isRegistered ```solidity -function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) +function isRegistered(address _entry) external view returns (bool) ``` From 6df3e1d96c89b93d28389c312005bdbc2fc18c6d Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Tue, 28 Oct 2025 14:36:18 +0100 Subject: [PATCH 20/77] feat: Add internal_mintCreate function to AppRegistry, DatasetRegistry, and WorkerpoolRegistry for enhanced deployment handling --- .../registries/apps/AppRegistry.json | 26 ++++++++++++++++- .../registries/datasets/DatasetRegistry.json | 26 ++++++++++++++++- .../workerpools/WorkerpoolRegistry.json | 26 ++++++++++++++++- contracts/registries/Registry.sol | 16 ++++++++-- contracts/registries/apps/AppRegistry.sol | 29 ++++++++++--------- .../registries/datasets/DatasetRegistry.sol | 26 ++++++++++++----- .../workerpools/WorkerpoolRegistry.sol | 17 ++++++++++- 7 files changed, 140 insertions(+), 26 deletions(-) diff --git a/abis/contracts/registries/apps/AppRegistry.json b/abis/contracts/registries/apps/AppRegistry.json index c695c19ee..bd3eb7134 100644 --- a/abis/contracts/registries/apps/AppRegistry.json +++ b/abis/contracts/registries/apps/AppRegistry.json @@ -409,6 +409,30 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "_appOwner", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_args", + "type": "bytes" + } + ], + "name": "internal_mintCreate", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -843,4 +867,4 @@ "stateMutability": "nonpayable", "type": "function" } -] \ No newline at end of file +] diff --git a/abis/contracts/registries/datasets/DatasetRegistry.json b/abis/contracts/registries/datasets/DatasetRegistry.json index eb46ae27f..a46311fa0 100644 --- a/abis/contracts/registries/datasets/DatasetRegistry.json +++ b/abis/contracts/registries/datasets/DatasetRegistry.json @@ -399,6 +399,30 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "_datasetOwner", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_args", + "type": "bytes" + } + ], + "name": "internal_mintCreate", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -823,4 +847,4 @@ "stateMutability": "nonpayable", "type": "function" } -] \ No newline at end of file +] diff --git a/abis/contracts/registries/workerpools/WorkerpoolRegistry.json b/abis/contracts/registries/workerpools/WorkerpoolRegistry.json index 8c95342c5..05ccc58ad 100644 --- a/abis/contracts/registries/workerpools/WorkerpoolRegistry.json +++ b/abis/contracts/registries/workerpools/WorkerpoolRegistry.json @@ -389,6 +389,30 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "_workerpoolOwner", + "type": "address" + }, + { + "internalType": "bytes", + "name": "_args", + "type": "bytes" + } + ], + "name": "internal_mintCreate", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -803,4 +827,4 @@ "stateMutability": "nonpayable", "type": "function" } -] \ No newline at end of file +] diff --git a/contracts/registries/Registry.sol b/contracts/registries/Registry.sol index eddbb4013..afd026a1e 100644 --- a/contracts/registries/Registry.sol +++ b/contracts/registries/Registry.sol @@ -28,8 +28,20 @@ abstract contract Registry is IRegistry, ERC721Enumerable, Ownable { proxyCodeHash = keccak256(proxyCode); } + // TEMPORARY MIGRATION FIX: Override _checkOwner to catch custom errors and throw string errors for backward compatibility + // TODO: Remove this override in the next major version + function _checkOwner() internal view override { + if (owner() != _msgSender()) { + revert("Ownable: caller is not the owner"); + } + } + function initialize(address _previous) external onlyOwner { - require(!initialized); + // TEMPORARY MIGRATION FIX: Catch custom error and throw string error for backward compatibility + // TODO: Remove this in the next major version + if (initialized) { + revert(); + } initialized = true; previous = IRegistry(_previous); } @@ -62,7 +74,7 @@ abstract contract Registry is IRegistry, ERC721Enumerable, Ownable { * iExec SDK. */ // TODO remove this function when Bellecour is deprecated. - function setName(address /* _ens */, string calldata /* _name */) external onlyOwner { + function setName(address /* _ens */, string calldata /* _name */) external { initialized = initialized; // Remove solidity state mutability warning. revert("Operation not supported on this chain"); } diff --git a/contracts/registries/apps/AppRegistry.sol b/contracts/registries/apps/AppRegistry.sol index 9e8680765..22953f2c6 100644 --- a/contracts/registries/apps/AppRegistry.sol +++ b/contracts/registries/apps/AppRegistry.sol @@ -45,19 +45,22 @@ contract AppRegistry is Registry { bytes32 _appChecksum, bytes calldata _appMREnclave ) external returns (App) { - return - App( - _mintCreate( - _appOwner, - encodeInitializer( - _appName, - _appType, - _appMultiaddr, - _appChecksum, - _appMREnclave - ) - ) - ); + // TEMPORARY MIGRATION FIX: Catch Create2 custom error and throw string error for backward compatibility + // TODO: Remove this in the next major version + try + this.internal_mintCreate( + _appOwner, + encodeInitializer(_appName, _appType, _appMultiaddr, _appChecksum, _appMREnclave) + ) + returns (address entry) { + return App(entry); + } catch { + revert("Create2: Failed on deploy"); + } + } + + function internal_mintCreate(address _appOwner, bytes memory _args) external returns (address) { + return _mintCreate(_appOwner, _args); } function predictApp( diff --git a/contracts/registries/datasets/DatasetRegistry.sol b/contracts/registries/datasets/DatasetRegistry.sol index fcf580b1d..2e53917c0 100644 --- a/contracts/registries/datasets/DatasetRegistry.sol +++ b/contracts/registries/datasets/DatasetRegistry.sol @@ -41,13 +41,25 @@ contract DatasetRegistry is Registry { bytes calldata _datasetMultiaddr, bytes32 _datasetChecksum ) external returns (Dataset) { - return - Dataset( - _mintCreate( - _datasetOwner, - encodeInitializer(_datasetName, _datasetMultiaddr, _datasetChecksum) - ) - ); + // TEMPORARY MIGRATION FIX: Catch Create2 custom error and throw string error for backward compatibility + // TODO: Remove this in the next major version + try + this.internal_mintCreate( + _datasetOwner, + encodeInitializer(_datasetName, _datasetMultiaddr, _datasetChecksum) + ) + returns (address entry) { + return Dataset(entry); + } catch { + revert("Create2: Failed on deploy"); + } + } + + function internal_mintCreate( + address _datasetOwner, + bytes memory _args + ) external returns (address) { + return _mintCreate(_datasetOwner, _args); } function predictDataset( diff --git a/contracts/registries/workerpools/WorkerpoolRegistry.sol b/contracts/registries/workerpools/WorkerpoolRegistry.sol index 91df9dffa..3c9b01f03 100644 --- a/contracts/registries/workerpools/WorkerpoolRegistry.sol +++ b/contracts/registries/workerpools/WorkerpoolRegistry.sol @@ -31,7 +31,22 @@ contract WorkerpoolRegistry is Registry { address _workerpoolOwner, string calldata _workerpoolDescription ) external returns (Workerpool) { - return Workerpool(_mintCreate(_workerpoolOwner, encodeInitializer(_workerpoolDescription))); + // TEMPORARY MIGRATION FIX: Catch Create2 custom error and throw string error for backward compatibility + // TODO: Remove this in the next major version + try + this.internal_mintCreate(_workerpoolOwner, encodeInitializer(_workerpoolDescription)) + returns (address entry) { + return Workerpool(entry); + } catch { + revert("Create2: Failed on deploy"); + } + } + + function internal_mintCreate( + address _workerpoolOwner, + bytes memory _args + ) external returns (address) { + return _mintCreate(_workerpoolOwner, _args); } function predictWorkerpool( From 8ff72ac4e2f9cf588ba44dc4115e47b16f085e9d Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Tue, 28 Oct 2025 14:36:36 +0100 Subject: [PATCH 21/77] fix: Add missing newlines at the end of JSON files and update Solidity documentation for Iexec interfaces and methods --- docs/solidity/index.md | 792 +++++++++++++++++++++-------------------- 1 file changed, 405 insertions(+), 387 deletions(-) diff --git a/docs/solidity/index.md b/docs/solidity/index.md index 9b9dd0759..c88ce2d10 100644 --- a/docs/solidity/index.md +++ b/docs/solidity/index.md @@ -1,279 +1,438 @@ # Solidity API -## IexecInterfaceNative +## IRegistry -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in native mode. +### isRegistered -_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +function isRegistered(address _entry) external view returns (bool) +``` -## IexecInterfaceToken +## Registry -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in token mode. +### master -_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. +```solidity +address master +``` + +### proxyCode + +```solidity +bytes proxyCode +``` + +### proxyCodeHash + +```solidity +bytes32 proxyCodeHash +``` + +### previous + +```solidity +contract IRegistry previous +``` + +### initialized + +```solidity +bool initialized +``` + +### initialize + +```solidity +function initialize(address _previous) external +``` + +### setBaseURI + +```solidity +function setBaseURI(string baseUri) external +``` + +### baseURI + +```solidity +function baseURI() public view returns (string) +``` + +_Added for retrocompatibility! + +Returns the base URI set via {setBaseURI}. This will be +automatically added as a prefix in {tokenURI} to each token's ID._ + +### isRegistered + +```solidity +function isRegistered(address _entry) external view returns (bool) +``` + +### setName + +```solidity +function setName(address, string) external +``` + +Sets the reverse registration name for a registry contract. + +_This functionality is supported only on Bellecour Sidechain, calls on other chains +will revert. The function is kept as nonpayable to maintain retrocompatibility with the +iExec SDK._ + +## RegistryEntry + +_Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. Changing the name or the path would cause a breaking change in the SDK._ -## IexecCategoryManagerFacet +### registry -### createCategory +```solidity +contract IRegistry registry +``` + +### owner ```solidity -function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) +function owner() public view returns (address) ``` -Methods +### setName -## IexecConfigurationExtraFacet +```solidity +function setName(address, string) external +``` -### changeRegistries +Sets the reverse registration name for a registry entry contract. + +_This functionality is supported only on Bellecour Sidechain, calls on other chains +will revert. The function is kept as nonpayable to maintain retrocompatibility with the +iExec SDK._ + +## App + +_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### m_appName ```solidity -function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external +string m_appName ``` -## IexecConfigurationFacet +Members -### configure +### m_appType ```solidity -function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external +string m_appType ``` -### domain +### m_appMultiaddr ```solidity -function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) +bytes m_appMultiaddr ``` -### updateDomainSeparator +### m_appChecksum ```solidity -function updateDomainSeparator() external +bytes32 m_appChecksum ``` -### importScore +### m_appMREnclave ```solidity -function importScore(address _worker) external +bytes m_appMREnclave ``` -### setTeeBroker +### initialize ```solidity -function setTeeBroker(address _teebroker) external +function initialize(string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) public ``` -### setCallbackGas +Constructor + +## AppRegistry + +_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### constructor ```solidity -function setCallbackGas(uint256 _callbackgas) external +constructor() public ``` -## IexecERC20Core +Constructor -## IexecERC20Facet +### createApp -### transfer +```solidity +function createApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external returns (contract App) +``` + +### internal_mintCreate ```solidity -function transfer(address recipient, uint256 amount) external returns (bool) +function internal_mintCreate(address _appOwner, bytes _args) external returns (address) ``` -### approve +### predictApp ```solidity -function approve(address spender, uint256 value) external returns (bool) +function predictApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external view returns (contract App) ``` -### approveAndCall +## Dataset + +_Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### m_datasetName ```solidity -function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) +string m_datasetName ``` -### transferFrom +Members + +### m_datasetMultiaddr ```solidity -function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) +bytes m_datasetMultiaddr ``` -### increaseAllowance +### m_datasetChecksum ```solidity -function increaseAllowance(address spender, uint256 addedValue) external returns (bool) +bytes32 m_datasetChecksum ``` -### decreaseAllowance +### initialize ```solidity -function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) +function initialize(string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) public ``` -## IexecEscrow +Constructor -### Transfer +## DatasetRegistry + +_Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### constructor ```solidity -event Transfer(address from, address to, uint256 value) +constructor() public ``` -### Lock +Constructor + +### createDataset ```solidity -event Lock(address owner, uint256 amount) +function createDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external returns (contract Dataset) ``` -### Unlock +### internal_mintCreate ```solidity -event Unlock(address owner, uint256 amount) +function internal_mintCreate(address _datasetOwner, bytes _args) external returns (address) ``` -### Reward +### predictDataset ```solidity -event Reward(address owner, uint256 amount, bytes32 ref) +function predictDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external view returns (contract Dataset) ``` -### Seize +## Address + +## BaseUpgradeabilityProxy + +_This contract implements a proxy that allows to change the +implementation address to which it will delegate. +Such a change is called an implementation upgrade._ + +### Upgraded ```solidity -event Seize(address owner, uint256 amount, bytes32 ref) +event Upgraded(address implementation) ``` -## IexecEscrowNativeFacet +_Emitted when the implementation is upgraded._ + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| implementation | address | Address of the new implementation. | + +## InitializableUpgradeabilityProxy + +_Extends BaseUpgradeabilityProxy with an initializer for initializing +implementation and init data._ + +### initialize + +```solidity +function initialize(address _logic, bytes _data) public payable +``` + +_Contract initializer._ + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| _logic | address | Address of the initial implementation. | +| _data | bytes | Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. | + +## Proxy + +_Implements delegation of calls to other contracts, with proper +forwarding of return values and bubbling of failures. +It defines a fallback function that delegates all calls to the address +returned by the abstract _implementation() internal function._ ### receive ```solidity -receive() external payable +receive() external payable virtual ``` +_Receive function. +Implemented entirely in `_fallback`._ + ### fallback ```solidity fallback() external payable ``` -### deposit +_Fallback function. +Implemented entirely in `_fallback`._ -```solidity -function deposit() external payable returns (bool) -``` +## Workerpool + +_Referenced in the SDK with the current path `contracts/registries/workerpools/Workerpool.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### depositFor +### m_workerpoolDescription ```solidity -function depositFor(address target) external payable returns (bool) +string m_workerpoolDescription ``` -### depositForArray - -```solidity -function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) -``` +Parameters -### withdraw +### m_workerStakeRatioPolicy ```solidity -function withdraw(uint256 amount) external returns (bool) +uint256 m_workerStakeRatioPolicy ``` -### withdrawTo +### m_schedulerRewardRatioPolicy ```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) +uint256 m_schedulerRewardRatioPolicy ``` -### recover +### PolicyUpdate ```solidity -function recover() external returns (uint256) +event PolicyUpdate(uint256 oldWorkerStakeRatioPolicy, uint256 newWorkerStakeRatioPolicy, uint256 oldSchedulerRewardRatioPolicy, uint256 newSchedulerRewardRatioPolicy) ``` -## IexecEscrowTokenFacet +Events -### receive +### initialize ```solidity -receive() external payable +function initialize(string _workerpoolDescription) public ``` -### fallback +Constructor + +### changePolicy ```solidity -fallback() external payable +function changePolicy(uint256 _newWorkerStakeRatioPolicy, uint256 _newSchedulerRewardRatioPolicy) external ``` -### deposit +## WorkerpoolRegistry -```solidity -function deposit(uint256 amount) external returns (bool) -``` +_Referenced in the SDK with the current path `contracts/registries/workerpools/WorkerpoolRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### depositFor +### constructor ```solidity -function depositFor(uint256 amount, address target) external returns (bool) +constructor() public ``` -### depositForArray +Constructor + +### createWorkerpool ```solidity -function depositForArray(uint256[] amounts, address[] targets) external returns (bool) +function createWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external returns (contract Workerpool) ``` -### withdraw +### internal_mintCreate ```solidity -function withdraw(uint256 amount) external returns (bool) +function internal_mintCreate(address _workerpoolOwner, bytes _args) external returns (address) ``` -### withdrawTo +### predictWorkerpool ```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) +function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) ``` -### recover +## IexecConfigurationExtraFacet + +### changeRegistries ```solidity -function recover() external returns (uint256) +function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external ``` -### receiveApproval +## IexecEscrow + +### Transfer ```solidity -function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) +event Transfer(address from, address to, uint256 value) ``` -## IexecOrderManagementFacet - -### manageAppOrder +### Lock ```solidity -function manageAppOrder(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) external +event Lock(address owner, uint256 amount) ``` -### manageDatasetOrder +### Unlock ```solidity -function manageDatasetOrder(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) external +event Unlock(address owner, uint256 amount) ``` -### manageWorkerpoolOrder +### Reward ```solidity -function manageWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) external +event Reward(address owner, uint256 amount, bytes32 ref) ``` -### manageRequestOrder +### Seize ```solidity -function manageRequestOrder(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) external +event Seize(address owner, uint256 amount, bytes32 ref) ``` ## Matching @@ -804,32 +963,6 @@ Claim task to get a refund if task is not completed after deadline. | dealId | bytes32 | The ID of the deal. | | index | uint256 | The index of the task. | -## IexecRelayFacet - -### broadcastAppOrder - -```solidity -function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external -``` - -### broadcastDatasetOrder - -```solidity -function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external -``` - -### broadcastWorkerpoolOrder - -```solidity -function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external -``` - -### broadcastRequestOrder - -```solidity -function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external -``` - ## IexecLibCore_v5 ### Account @@ -1295,187 +1428,71 @@ struct PocoStorage { } ``` -## IRegistry - -### isRegistered - -```solidity -function isRegistered(address _entry) external view returns (bool) -``` - -## Registry - -### master - -```solidity -address master -``` - -### proxyCode - -```solidity -bytes proxyCode -``` - -### proxyCodeHash - -```solidity -bytes32 proxyCodeHash -``` - -### previous - -```solidity -contract IRegistry previous -``` - -### initialized - -```solidity -bool initialized -``` - -### initialize - -```solidity -function initialize(address _previous) external -``` - -### setBaseURI - -```solidity -function setBaseURI(string baseUri) external -``` - -### baseURI - -```solidity -function baseURI() public view returns (string) -``` - -_Added for retrocompatibility! - -Returns the base URI set via {setBaseURI}. This will be -automatically added as a prefix in {tokenURI} to each token's ID._ - -### isRegistered - -```solidity -function isRegistered(address _entry) external view returns (bool) -``` - -### setName - -```solidity -function setName(address, string) external -``` - -Sets the reverse registration name for a registry contract. - -_This functionality is supported only on Bellecour Sidechain, calls on other chains -will revert. The function is kept as nonpayable to maintain retrocompatibility with the -iExec SDK._ - -## RegistryEntry - -_Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### registry - -```solidity -contract IRegistry registry -``` +## IApp ### owner ```solidity -function owner() public view returns (address) -``` - -### setName - -```solidity -function setName(address, string) external +function owner() external view returns (address) ``` -Sets the reverse registration name for a registry entry contract. - -_This functionality is supported only on Bellecour Sidechain, calls on other chains -will revert. The function is kept as nonpayable to maintain retrocompatibility with the -iExec SDK._ - -## App - -_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - ### m_appName ```solidity -string m_appName +function m_appName() external view returns (string) ``` -Members - ### m_appType ```solidity -string m_appType +function m_appType() external view returns (string) ``` ### m_appMultiaddr ```solidity -bytes m_appMultiaddr +function m_appMultiaddr() external view returns (bytes) ``` ### m_appChecksum ```solidity -bytes32 m_appChecksum +function m_appChecksum() external view returns (bytes32) ``` ### m_appMREnclave ```solidity -bytes m_appMREnclave +function m_appMREnclave() external view returns (bytes) ``` -### initialize +## IDataset + +### owner ```solidity -function initialize(string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) public +function owner() external view returns (address) ``` -Constructor - -## AppRegistry - -_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### constructor +### m_datasetName ```solidity -constructor() public +function m_datasetName() external view returns (string) ``` -Constructor - -### createApp +### m_datasetMultiaddr ```solidity -function createApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external returns (contract App) +function m_datasetMultiaddr() external view returns (bytes) ``` -### predictApp +### m_datasetChecksum ```solidity -function predictApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external view returns (contract App) +function m_datasetChecksum() external view returns (bytes32) ``` -## IApp +## IWorkerpool ### owner @@ -1483,285 +1500,286 @@ function predictApp(address _appOwner, string _appName, string _appType, bytes _ function owner() external view returns (address) ``` -### m_appName +### m_workerpoolDescription ```solidity -function m_appName() external view returns (string) +function m_workerpoolDescription() external view returns (string) ``` -### m_appType +### m_schedulerRewardRatioPolicy ```solidity -function m_appType() external view returns (string) +function m_schedulerRewardRatioPolicy() external view returns (uint256) ``` -### m_appMultiaddr +### m_workerStakeRatioPolicy ```solidity -function m_appMultiaddr() external view returns (bytes) +function m_workerStakeRatioPolicy() external view returns (uint256) ``` -### m_appChecksum - -```solidity -function m_appChecksum() external view returns (bytes32) -``` +## IexecCategoryManagerFacet -### m_appMREnclave +### createCategory ```solidity -function m_appMREnclave() external view returns (bytes) +function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) ``` -## Dataset +Methods -_Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +## IexecConfigurationFacet -### m_datasetName +### configure ```solidity -string m_datasetName +function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external ``` -Members - -### m_datasetMultiaddr +### domain ```solidity -bytes m_datasetMultiaddr +function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) ``` -### m_datasetChecksum +### updateDomainSeparator ```solidity -bytes32 m_datasetChecksum +function updateDomainSeparator() external ``` -### initialize +### importScore ```solidity -function initialize(string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) public +function importScore(address _worker) external ``` -Constructor - -## DatasetRegistry +### setTeeBroker -_Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +function setTeeBroker(address _teebroker) external +``` -### constructor +### setCallbackGas ```solidity -constructor() public +function setCallbackGas(uint256 _callbackgas) external ``` -Constructor +## IexecERC20Core -### createDataset +## IexecERC20Facet + +### transfer ```solidity -function createDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external returns (contract Dataset) +function transfer(address recipient, uint256 amount) external returns (bool) ``` -### predictDataset +### approve ```solidity -function predictDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external view returns (contract Dataset) +function approve(address spender, uint256 value) external returns (bool) ``` -## IDataset - -### owner +### approveAndCall ```solidity -function owner() external view returns (address) +function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) ``` -### m_datasetName +### transferFrom ```solidity -function m_datasetName() external view returns (string) +function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) ``` -### m_datasetMultiaddr +### increaseAllowance ```solidity -function m_datasetMultiaddr() external view returns (bytes) +function increaseAllowance(address spender, uint256 addedValue) external returns (bool) ``` -### m_datasetChecksum +### decreaseAllowance ```solidity -function m_datasetChecksum() external view returns (bytes32) +function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) ``` -## Address +## IexecEscrowNativeFacet -## BaseUpgradeabilityProxy +### receive -_This contract implements a proxy that allows to change the -implementation address to which it will delegate. -Such a change is called an implementation upgrade._ +```solidity +receive() external payable +``` -### Upgraded +### fallback ```solidity -event Upgraded(address implementation) +fallback() external payable ``` -_Emitted when the implementation is upgraded._ +### deposit -#### Parameters +```solidity +function deposit() external payable returns (bool) +``` -| Name | Type | Description | -| ---- | ---- | ----------- | -| implementation | address | Address of the new implementation. | +### depositFor -## InitializableUpgradeabilityProxy +```solidity +function depositFor(address target) external payable returns (bool) +``` -_Extends BaseUpgradeabilityProxy with an initializer for initializing -implementation and init data._ +### depositForArray -### initialize +```solidity +function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) +``` + +### withdraw ```solidity -function initialize(address _logic, bytes _data) public payable +function withdraw(uint256 amount) external returns (bool) ``` -_Contract initializer._ +### withdrawTo -#### Parameters +```solidity +function withdrawTo(uint256 amount, address target) external returns (bool) +``` -| Name | Type | Description | -| ---- | ---- | ----------- | -| _logic | address | Address of the initial implementation. | -| _data | bytes | Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. | +### recover -## Proxy +```solidity +function recover() external returns (uint256) +``` -_Implements delegation of calls to other contracts, with proper -forwarding of return values and bubbling of failures. -It defines a fallback function that delegates all calls to the address -returned by the abstract _implementation() internal function._ +## IexecEscrowTokenFacet ### receive ```solidity -receive() external payable virtual +receive() external payable ``` -_Receive function. -Implemented entirely in `_fallback`._ - ### fallback ```solidity fallback() external payable ``` -_Fallback function. -Implemented entirely in `_fallback`._ +### deposit -## IWorkerpool +```solidity +function deposit(uint256 amount) external returns (bool) +``` -### owner +### depositFor ```solidity -function owner() external view returns (address) +function depositFor(uint256 amount, address target) external returns (bool) ``` -### m_workerpoolDescription +### depositForArray ```solidity -function m_workerpoolDescription() external view returns (string) +function depositForArray(uint256[] amounts, address[] targets) external returns (bool) ``` -### m_schedulerRewardRatioPolicy +### withdraw ```solidity -function m_schedulerRewardRatioPolicy() external view returns (uint256) +function withdraw(uint256 amount) external returns (bool) ``` -### m_workerStakeRatioPolicy +### withdrawTo ```solidity -function m_workerStakeRatioPolicy() external view returns (uint256) +function withdrawTo(uint256 amount, address target) external returns (bool) ``` -## Workerpool +### recover -_Referenced in the SDK with the current path `contracts/registries/workerpools/Workerpool.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +function recover() external returns (uint256) +``` -### m_workerpoolDescription +### receiveApproval ```solidity -string m_workerpoolDescription +function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) ``` -Parameters +## IexecOrderManagementFacet -### m_workerStakeRatioPolicy +### manageAppOrder ```solidity -uint256 m_workerStakeRatioPolicy +function manageAppOrder(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) external ``` -### m_schedulerRewardRatioPolicy +### manageDatasetOrder ```solidity -uint256 m_schedulerRewardRatioPolicy +function manageDatasetOrder(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) external ``` -### PolicyUpdate +### manageWorkerpoolOrder ```solidity -event PolicyUpdate(uint256 oldWorkerStakeRatioPolicy, uint256 newWorkerStakeRatioPolicy, uint256 oldSchedulerRewardRatioPolicy, uint256 newSchedulerRewardRatioPolicy) +function manageWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) external ``` -Events - -### initialize +### manageRequestOrder ```solidity -function initialize(string _workerpoolDescription) public +function manageRequestOrder(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) external ``` -Constructor +## IexecRelayFacet -### changePolicy +### broadcastAppOrder ```solidity -function changePolicy(uint256 _newWorkerStakeRatioPolicy, uint256 _newSchedulerRewardRatioPolicy) external +function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external ``` -## WorkerpoolRegistry - -_Referenced in the SDK with the current path `contracts/registries/workerpools/WorkerpoolRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### constructor +### broadcastDatasetOrder ```solidity -constructor() public +function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external ``` -Constructor - -### createWorkerpool +### broadcastWorkerpoolOrder ```solidity -function createWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external returns (contract Workerpool) +function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external ``` -### predictWorkerpool +### broadcastRequestOrder ```solidity -function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) +function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external ``` +## IexecInterfaceNative + +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in native mode. + +_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +## IexecInterfaceToken + +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in token mode. + +_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + ## IexecInterfaceNativeABILegacy TODO: Remove this interface in the future when IexecInterfaceTokenABILegacy is removed. From 59f12bd6e8f87f45c2f444bd8655f511d87e1f72 Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Tue, 28 Oct 2025 15:11:30 +0100 Subject: [PATCH 22/77] fix: Ensure proper formatting by adding missing newlines at the end of JSON files and updating initialization logic in Registry contract --- contracts/registries/Registry.sol | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/contracts/registries/Registry.sol b/contracts/registries/Registry.sol index afd026a1e..b1791c7e6 100644 --- a/contracts/registries/Registry.sol +++ b/contracts/registries/Registry.sol @@ -37,11 +37,7 @@ abstract contract Registry is IRegistry, ERC721Enumerable, Ownable { } function initialize(address _previous) external onlyOwner { - // TEMPORARY MIGRATION FIX: Catch custom error and throw string error for backward compatibility - // TODO: Remove this in the next major version - if (initialized) { - revert(); - } + require(!initialized); initialized = true; previous = IRegistry(_previous); } From 89c4617b5ff5b6766426b787409aa66eec1be64c Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Tue, 28 Oct 2025 15:21:59 +0100 Subject: [PATCH 23/77] fix: Add missing newlines at the end of JSON files and update Solidity documentation for new methods in Iexec contracts --- docs/solidity/index.md | 1610 ++++++++++++++++++++-------------------- 1 file changed, 805 insertions(+), 805 deletions(-) diff --git a/docs/solidity/index.md b/docs/solidity/index.md index c88ce2d10..fd718af66 100644 --- a/docs/solidity/index.md +++ b/docs/solidity/index.md @@ -1,531 +1,525 @@ # Solidity API -## IRegistry +## IexecConfigurationExtraFacet -### isRegistered +### changeRegistries ```solidity -function isRegistered(address _entry) external view returns (bool) +function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external ``` -## Registry +## IexecEscrow -### master +### Transfer ```solidity -address master +event Transfer(address from, address to, uint256 value) ``` -### proxyCode +### Lock ```solidity -bytes proxyCode +event Lock(address owner, uint256 amount) ``` -### proxyCodeHash +### Unlock ```solidity -bytes32 proxyCodeHash +event Unlock(address owner, uint256 amount) ``` -### previous +### Reward ```solidity -contract IRegistry previous +event Reward(address owner, uint256 amount, bytes32 ref) ``` -### initialized +### Seize ```solidity -bool initialized +event Seize(address owner, uint256 amount, bytes32 ref) ``` -### initialize +## Matching ```solidity -function initialize(address _previous) external +struct Matching { + bytes32 apporderHash; + address appOwner; + bytes32 datasetorderHash; + address datasetOwner; + bytes32 workerpoolorderHash; + address workerpoolOwner; + bytes32 requestorderHash; + bool hasDataset; +} ``` -### setBaseURI +## IexecPoco1Facet + +### verifySignature ```solidity -function setBaseURI(string baseUri) external +function verifySignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) ``` -### baseURI +### verifyPresignature ```solidity -function baseURI() public view returns (string) +function verifyPresignature(address _identity, bytes32 _hash) external view returns (bool) ``` -_Added for retrocompatibility! - -Returns the base URI set via {setBaseURI}. This will be -automatically added as a prefix in {tokenURI} to each token's ID._ - -### isRegistered +### verifyPresignatureOrSignature ```solidity -function isRegistered(address _entry) external view returns (bool) +function verifyPresignatureOrSignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) ``` -### setName +### assertDatasetDealCompatibility ```solidity -function setName(address, string) external +function assertDatasetDealCompatibility(struct IexecLibOrders_v5.DatasetOrder datasetOrder, bytes32 dealId) external view ``` -Sets the reverse registration name for a registry contract. +Public view function to check if a dataset order is compatible with a deal. +This function performs all the necessary checks to verify dataset order compatibility with a deal. +Reverts with `IncompatibleDatasetOrder(reason)` if the dataset order is not compatible with the deal, does +nothing otherwise. -_This functionality is supported only on Bellecour Sidechain, calls on other chains -will revert. The function is kept as nonpayable to maintain retrocompatibility with the -iExec SDK._ +_This function is mainly consumed by offchain clients. It should be carefully inspected if +used in on-chain code. +This function should not be used in `matchOrders` since it does not check the same requirements. +The choice of reverting instead of returning true/false is motivated by the Java middleware +requirements._ -## RegistryEntry +#### Parameters -_Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +| Name | Type | Description | +| ---- | ---- | ----------- | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order to verify | +| dealId | bytes32 | The deal ID to check against | -### registry +### matchOrders ```solidity -contract IRegistry registry +function matchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) ``` -### owner +Match orders. The requester gets debited. -```solidity -function owner() public view returns (address) -``` +#### Parameters -### setName +| Name | Type | Description | +| ---- | ---- | ----------- | +| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | +| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | + +### sponsorMatchOrders ```solidity -function setName(address, string) external +function sponsorMatchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) ``` -Sets the reverse registration name for a registry entry contract. +Sponsor match orders for a requester. +Unlike the standard `matchOrders(..)` hook where the requester pays for +the deal, this current hook makes it possible for any `msg.sender` to pay for +a third party requester. -_This functionality is supported only on Bellecour Sidechain, calls on other chains -will revert. The function is kept as nonpayable to maintain retrocompatibility with the -iExec SDK._ +Be aware that anyone seeing a valid request order on the network +(via an off-chain public marketplace, via a `sponsorMatchOrders(..)` +pending transaction in the mempool or by any other means) might decide +to call the standard `matchOrders(..)` hook which will result in the +requester being debited instead. Therefore, such a front run would result +in a loss of some of the requester funds deposited in the iExec account +(a loss value equivalent to the price of the deal). -## App +#### Parameters -_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +| Name | Type | Description | +| ---- | ---- | ----------- | +| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | +| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | -### m_appName +## IexecPoco2Facet + +### initialize ```solidity -string m_appName +function initialize(bytes32 _dealid, uint256 idx) public returns (bytes32) ``` -Members - -### m_appType +### contribute ```solidity -string m_appType +function contribute(bytes32 _taskid, bytes32 _resultHash, bytes32 _resultSeal, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external ``` -### m_appMultiaddr +### contributeAndFinalize ```solidity -bytes m_appMultiaddr +function contributeAndFinalize(bytes32 _taskid, bytes32 _resultDigest, bytes _results, bytes _resultsCallback, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external ``` -### m_appChecksum +### reveal ```solidity -bytes32 m_appChecksum +function reveal(bytes32 _taskid, bytes32 _resultDigest) external ``` -### m_appMREnclave +### reopen ```solidity -bytes m_appMREnclave +function reopen(bytes32 _taskid) external ``` -### initialize +### finalize ```solidity -function initialize(string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) public +function finalize(bytes32 _taskid, bytes _results, bytes _resultsCallback) external ``` -Constructor - -## AppRegistry +### claim -_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +function claim(bytes32 _taskid) public +``` -### constructor +### initializeArray ```solidity -constructor() public +function initializeArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) ``` -Constructor - -### createApp +### claimArray ```solidity -function createApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external returns (contract App) +function claimArray(bytes32[] _taskid) external returns (bool) ``` -### internal_mintCreate +### initializeAndClaimArray ```solidity -function internal_mintCreate(address _appOwner, bytes _args) external returns (address) +function initializeAndClaimArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) ``` -### predictApp +## IexecPocoAccessorsFacet + +### viewDeal ```solidity -function predictApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external view returns (contract App) +function viewDeal(bytes32 id) external view returns (struct IexecLibCore_v5.Deal deal) ``` -## Dataset +Get a deal created by PoCo classic facet. -_Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +#### Parameters -### m_datasetName +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | The ID of the deal. | + +### viewTask ```solidity -string m_datasetName +function viewTask(bytes32 id) external view returns (struct IexecLibCore_v5.Task) ``` -Members +Get task created in Classic mode. -### m_datasetMultiaddr +#### Parameters -```solidity -bytes m_datasetMultiaddr -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | id of the task | -### m_datasetChecksum +### computeDealVolume ```solidity -bytes32 m_datasetChecksum +function computeDealVolume(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external view returns (uint256) ``` -### initialize +Computes the volume of the "not yet created" deal based on the provided orders. +This function should only be used if the deal is not yet created. +For existing deals, use the deal accessors instead. -```solidity -function initialize(string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) public -``` +#### Parameters -Constructor +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The application order. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The request order. | -## DatasetRegistry +#### Return Values -_Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +| Name | Type | Description | +| ---- | ---- | ----------- | +| [0] | uint256 | The computed deal volume. | -### constructor +### viewConsumed ```solidity -constructor() public +function viewConsumed(bytes32 _id) external view returns (uint256 consumed) ``` -Constructor - -### createDataset +### viewPresigned ```solidity -function createDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external returns (contract Dataset) +function viewPresigned(bytes32 _id) external view returns (address signer) ``` -### internal_mintCreate +### viewContribution ```solidity -function internal_mintCreate(address _datasetOwner, bytes _args) external returns (address) +function viewContribution(bytes32 _taskid, address _worker) external view returns (struct IexecLibCore_v5.Contribution) ``` -### predictDataset +### viewScore ```solidity -function predictDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external view returns (contract Dataset) +function viewScore(address _worker) external view returns (uint256) ``` -## Address - -## BaseUpgradeabilityProxy - -_This contract implements a proxy that allows to change the -implementation address to which it will delegate. -Such a change is called an implementation upgrade._ - -### Upgraded +### resultFor ```solidity -event Upgraded(address implementation) +function resultFor(bytes32 id) external view returns (bytes) ``` -_Emitted when the implementation is upgraded._ - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| implementation | address | Address of the new implementation. | - -## InitializableUpgradeabilityProxy +### name -_Extends BaseUpgradeabilityProxy with an initializer for initializing -implementation and init data._ +```solidity +function name() external view returns (string) +``` -### initialize +### symbol ```solidity -function initialize(address _logic, bytes _data) public payable +function symbol() external view returns (string) ``` -_Contract initializer._ - -#### Parameters +### decimals -| Name | Type | Description | -| ---- | ---- | ----------- | -| _logic | address | Address of the initial implementation. | -| _data | bytes | Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. | +```solidity +function decimals() external view returns (uint8) +``` -## Proxy +### totalSupply -_Implements delegation of calls to other contracts, with proper -forwarding of return values and bubbling of failures. -It defines a fallback function that delegates all calls to the address -returned by the abstract _implementation() internal function._ +```solidity +function totalSupply() external view returns (uint256) +``` -### receive +### balanceOf ```solidity -receive() external payable virtual +function balanceOf(address account) external view returns (uint256) ``` -_Receive function. -Implemented entirely in `_fallback`._ - -### fallback +### frozenOf ```solidity -fallback() external payable +function frozenOf(address account) external view returns (uint256) ``` -_Fallback function. -Implemented entirely in `_fallback`._ - -## Workerpool +### allowance -_Referenced in the SDK with the current path `contracts/registries/workerpools/Workerpool.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +function allowance(address account, address spender) external view returns (uint256) +``` -### m_workerpoolDescription +### viewAccount ```solidity -string m_workerpoolDescription +function viewAccount(address account) external view returns (struct IexecLibCore_v5.Account) ``` -Parameters - -### m_workerStakeRatioPolicy +### token ```solidity -uint256 m_workerStakeRatioPolicy +function token() external view returns (address) ``` -### m_schedulerRewardRatioPolicy +### viewCategory ```solidity -uint256 m_schedulerRewardRatioPolicy +function viewCategory(uint256 _catid) external view returns (struct IexecLibCore_v5.Category category) ``` -### PolicyUpdate +### countCategory ```solidity -event PolicyUpdate(uint256 oldWorkerStakeRatioPolicy, uint256 newWorkerStakeRatioPolicy, uint256 oldSchedulerRewardRatioPolicy, uint256 newSchedulerRewardRatioPolicy) +function countCategory() external view returns (uint256 count) ``` -Events - -### initialize +### appregistry ```solidity -function initialize(string _workerpoolDescription) public +function appregistry() external view returns (contract IRegistry) ``` -Constructor - -### changePolicy +### datasetregistry ```solidity -function changePolicy(uint256 _newWorkerStakeRatioPolicy, uint256 _newSchedulerRewardRatioPolicy) external +function datasetregistry() external view returns (contract IRegistry) ``` -## WorkerpoolRegistry +### workerpoolregistry -_Referenced in the SDK with the current path `contracts/registries/workerpools/WorkerpoolRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +function workerpoolregistry() external view returns (contract IRegistry) +``` -### constructor +### teebroker ```solidity -constructor() public +function teebroker() external view returns (address) ``` -Constructor - -### createWorkerpool +### callbackgas ```solidity -function createWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external returns (contract Workerpool) +function callbackgas() external view returns (uint256) ``` -### internal_mintCreate +### viewDataset ```solidity -function internal_mintCreate(address _workerpoolOwner, bytes _args) external returns (address) +function viewDataset(address dataset) external view returns (struct IexecLibCore_v5.DatasetInfo) ``` -### predictWorkerpool +### viewApp ```solidity -function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) +function viewApp(address app) external view returns (struct IexecLibCore_v5.AppInfo) ``` -## IexecConfigurationExtraFacet - -### changeRegistries +### viewWorkerpool ```solidity -function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external +function viewWorkerpool(address workerpool) external view returns (struct IexecLibCore_v5.WorkerpoolInfo) ``` -## IexecEscrow - -### Transfer +### contribution_deadline_ratio ```solidity -event Transfer(address from, address to, uint256 value) +function contribution_deadline_ratio() external pure returns (uint256) ``` -### Lock +### reveal_deadline_ratio ```solidity -event Lock(address owner, uint256 amount) +function reveal_deadline_ratio() external pure returns (uint256) ``` -### Unlock +### final_deadline_ratio ```solidity -event Unlock(address owner, uint256 amount) +function final_deadline_ratio() external pure returns (uint256) ``` -### Reward +### workerpool_stake_ratio ```solidity -event Reward(address owner, uint256 amount, bytes32 ref) +function workerpool_stake_ratio() external pure returns (uint256) ``` -### Seize +### kitty_ratio ```solidity -event Seize(address owner, uint256 amount, bytes32 ref) +function kitty_ratio() external pure returns (uint256) ``` -## Matching +### kitty_min ```solidity -struct Matching { - bytes32 apporderHash; - address appOwner; - bytes32 datasetorderHash; - address datasetOwner; - bytes32 workerpoolorderHash; - address workerpoolOwner; - bytes32 requestorderHash; - bool hasDataset; -} +function kitty_min() external pure returns (uint256) ``` -## IexecPoco1Facet - -### verifySignature +### kitty_address ```solidity -function verifySignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) +function kitty_address() external pure returns (address) ``` -### verifyPresignature +### groupmember_purpose ```solidity -function verifyPresignature(address _identity, bytes32 _hash) external view returns (bool) +function groupmember_purpose() external pure returns (uint256) ``` -### verifyPresignatureOrSignature +### eip712domain_separator ```solidity -function verifyPresignatureOrSignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) +function eip712domain_separator() external view returns (bytes32) ``` -### assertDatasetDealCompatibility +## IexecPocoBoostAccessorsFacet + +Access to PoCo Boost tasks must be done with PoCo Classic `IexecPocoAccessors`. + +### viewDealBoost ```solidity -function assertDatasetDealCompatibility(struct IexecLibOrders_v5.DatasetOrder datasetOrder, bytes32 dealId) external view +function viewDealBoost(bytes32 id) external view returns (struct IexecLibCore_v5.DealBoost deal) ``` -Public view function to check if a dataset order is compatible with a deal. -This function performs all the necessary checks to verify dataset order compatibility with a deal. -Reverts with `IncompatibleDatasetOrder(reason)` if the dataset order is not compatible with the deal, does -nothing otherwise. - -_This function is mainly consumed by offchain clients. It should be carefully inspected if -used in on-chain code. -This function should not be used in `matchOrders` since it does not check the same requirements. -The choice of reverting instead of returning true/false is motivated by the Java middleware -requirements._ +Get a deal created by PoCo Boost facet. #### Parameters | Name | Type | Description | | ---- | ---- | ----------- | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order to verify | -| dealId | bytes32 | The deal ID to check against | +| id | bytes32 | The ID of the deal. | -### matchOrders +## IexecPocoBoostFacet + +Works for deals with requested trust = 0. + +### matchOrdersBoost ```solidity -function matchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) +function matchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) ``` -Match orders. The requester gets debited. +This boost match orders is only compatible with trust <= 1. +The requester gets debited. #### Parameters | Name | Type | Description | | ---- | ---- | ----------- | -| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | -| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | +| appOrder | struct IexecLibOrders_v5.AppOrder | The order signed by the application developer. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The order signed by the dataset provider. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The order signed by the workerpool manager. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The order signed by the requester. | -### sponsorMatchOrders +#### Return Values + +| Name | Type | Description | +| ---- | ---- | ----------- | +| [0] | bytes32 | The ID of the deal. | + +### sponsorMatchOrdersBoost ```solidity -function sponsorMatchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) +function sponsorMatchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) ``` -Sponsor match orders for a requester. -Unlike the standard `matchOrders(..)` hook where the requester pays for +Sponsor match orders boost for a requester. +Unlike the standard `matchOrdersBoost(..)` hook where the requester pays for the deal, this current hook makes it possible for any `msg.sender` to pay for a third party requester. Be aware that anyone seeing a valid request order on the network -(via an off-chain public marketplace, via a `sponsorMatchOrders(..)` +(via an off-chain public marketplace, via a `sponsorMatchOrdersBoost(..)` pending transaction in the mempool or by any other means) might decide -to call the standard `matchOrders(..)` hook which will result in the +to call the standard `matchOrdersBoost(..)` hook which will result in the requester being debited instead. Therefore, such a front run would result in a loss of some of the requester funds deposited in the iExec account (a loss value equivalent to the price of the deal). @@ -534,901 +528,893 @@ in a loss of some of the requester funds deposited in the iExec account | Name | Type | Description | | ---- | ---- | ----------- | -| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | -| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | - -## IexecPoco2Facet +| appOrder | struct IexecLibOrders_v5.AppOrder | The app order. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The requester order. | -### initialize +### pushResultBoost ```solidity -function initialize(bytes32 _dealid, uint256 idx) public returns (bytes32) +function pushResultBoost(bytes32 dealId, uint256 index, bytes results, bytes resultsCallback, bytes authorizationSign, address enclaveChallenge, bytes enclaveSign) external ``` -### contribute +Accept results of a task computed by a worker during Boost workflow. -```solidity -function contribute(bytes32 _taskid, bytes32 _resultHash, bytes32 _resultSeal, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external -``` +#### Parameters -### contributeAndFinalize +| Name | Type | Description | +| ---- | ---- | ----------- | +| dealId | bytes32 | The id of the target deal. | +| index | uint256 | The index of the target task of the deal. | +| results | bytes | The results of the task computed by the worker. | +| resultsCallback | bytes | The results of the task computed by the worker that will be forwarded as call data to the callback address set by the requester. | +| authorizationSign | bytes | The authorization signed by the scheduler. authorizing the worker to push a result. | +| enclaveChallenge | address | The enclave address which can produce enclave signature. | +| enclaveSign | bytes | The signature generated from the enclave. | + +### claimBoost ```solidity -function contributeAndFinalize(bytes32 _taskid, bytes32 _resultDigest, bytes _results, bytes _resultsCallback, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external +function claimBoost(bytes32 dealId, uint256 index) external ``` -### reveal +Claim task to get a refund if task is not completed after deadline. -```solidity -function reveal(bytes32 _taskid, bytes32 _resultDigest) external -``` +#### Parameters -### reopen +| Name | Type | Description | +| ---- | ---- | ----------- | +| dealId | bytes32 | The ID of the deal. | +| index | uint256 | The index of the task. | -```solidity -function reopen(bytes32 _taskid) external -``` +## IexecLibCore_v5 -### finalize +### Account + +Tools ```solidity -function finalize(bytes32 _taskid, bytes _results, bytes _resultsCallback) external +struct Account { + uint256 stake; + uint256 locked; +} ``` -### claim +### Category ```solidity -function claim(bytes32 _taskid) public +struct Category { + string name; + string description; + uint256 workClockTimeRef; +} ``` -### initializeArray +### DatasetInfo ```solidity -function initializeArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) +struct DatasetInfo { + address owner; + string m_datasetName; + bytes m_datasetMultiaddr; + bytes32 m_datasetChecksum; +} ``` -### claimArray +### AppInfo ```solidity -function claimArray(bytes32[] _taskid) external returns (bool) +struct AppInfo { + address owner; + string m_appName; + string m_appType; + bytes m_appMultiaddr; + bytes32 m_appChecksum; + bytes m_appMREnclave; +} ``` -### initializeAndClaimArray +### WorkerpoolInfo ```solidity -function initializeAndClaimArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) +struct WorkerpoolInfo { + address owner; + string m_workerpoolDescription; + uint256 m_workerStakeRatioPolicy; + uint256 m_schedulerRewardRatioPolicy; +} ``` -## IexecPocoAccessorsFacet +### Resource -### viewDeal +Clerk - Deals ```solidity -function viewDeal(bytes32 id) external view returns (struct IexecLibCore_v5.Deal deal) +struct Resource { + address pointer; + address owner; + uint256 price; +} ``` -Get a deal created by PoCo classic facet. +### Deal -#### Parameters +```solidity +struct Deal { + struct IexecLibCore_v5.Resource app; + struct IexecLibCore_v5.Resource dataset; + struct IexecLibCore_v5.Resource workerpool; + uint256 trust; + uint256 category; + bytes32 tag; + address requester; + address beneficiary; + address callback; + string params; + uint256 startTime; + uint256 botFirst; + uint256 botSize; + uint256 workerStake; + uint256 schedulerRewardRatio; + address sponsor; +} +``` -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | The ID of the deal. | +### DealBoost -### viewTask +Simplified deals for PoCo Boost module. ```solidity -function viewTask(bytes32 id) external view returns (struct IexecLibCore_v5.Task) +struct DealBoost { + address appOwner; + uint96 appPrice; + address datasetOwner; + uint96 datasetPrice; + address workerpoolOwner; + uint96 workerpoolPrice; + address requester; + uint96 workerReward; + address callback; + uint40 deadline; + uint16 botFirst; + uint16 botSize; + bytes3 shortTag; + address sponsor; +} ``` -Get task created in Classic mode. +### TaskStatusEnum -#### Parameters +Tasks -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | id of the task | +```solidity +enum TaskStatusEnum { + UNSET, + ACTIVE, + REVEALING, + COMPLETED, + FAILED +} +``` -### computeDealVolume +### Task ```solidity -function computeDealVolume(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external view returns (uint256) +struct Task { + enum IexecLibCore_v5.TaskStatusEnum status; + bytes32 dealid; + uint256 idx; + uint256 timeref; + uint256 contributionDeadline; + uint256 revealDeadline; + uint256 finalDeadline; + bytes32 consensusValue; + uint256 revealCounter; + uint256 winnerCounter; + address[] contributors; + bytes32 resultDigest; + bytes results; + uint256 resultsTimestamp; + bytes resultsCallback; +} ``` -Computes the volume of the "not yet created" deal based on the provided orders. -This function should only be used if the deal is not yet created. -For existing deals, use the deal accessors instead. - -#### Parameters +### Consensus -| Name | Type | Description | -| ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The application order. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The request order. | +Consensus -#### Return Values +```solidity +struct Consensus { + mapping(bytes32 => uint256) group; + uint256 total; +} +``` -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | uint256 | The computed deal volume. | +### ContributionStatusEnum -### viewConsumed +Consensus ```solidity -function viewConsumed(bytes32 _id) external view returns (uint256 consumed) +enum ContributionStatusEnum { + UNSET, + CONTRIBUTED, + PROVED, + REJECTED +} ``` -### viewPresigned +### Contribution ```solidity -function viewPresigned(bytes32 _id) external view returns (address signer) +struct Contribution { + enum IexecLibCore_v5.ContributionStatusEnum status; + bytes32 resultHash; + bytes32 resultSeal; + address enclaveChallenge; + uint256 weight; +} ``` -### viewContribution +## IexecLibOrders_v5 + +### EIP712DOMAIN_TYPEHASH ```solidity -function viewContribution(bytes32 _taskid, address _worker) external view returns (struct IexecLibCore_v5.Contribution) +bytes32 EIP712DOMAIN_TYPEHASH ``` -### viewScore +### APPORDER_TYPEHASH ```solidity -function viewScore(address _worker) external view returns (uint256) +bytes32 APPORDER_TYPEHASH ``` -### resultFor +### DATASETORDER_TYPEHASH ```solidity -function resultFor(bytes32 id) external view returns (bytes) +bytes32 DATASETORDER_TYPEHASH ``` -### name +### WORKERPOOLORDER_TYPEHASH ```solidity -function name() external view returns (string) +bytes32 WORKERPOOLORDER_TYPEHASH ``` -### symbol +### REQUESTORDER_TYPEHASH ```solidity -function symbol() external view returns (string) +bytes32 REQUESTORDER_TYPEHASH ``` -### decimals +### APPORDEROPERATION_TYPEHASH ```solidity -function decimals() external view returns (uint8) +bytes32 APPORDEROPERATION_TYPEHASH ``` -### totalSupply +### DATASETORDEROPERATION_TYPEHASH ```solidity -function totalSupply() external view returns (uint256) +bytes32 DATASETORDEROPERATION_TYPEHASH ``` -### balanceOf +### WORKERPOOLORDEROPERATION_TYPEHASH ```solidity -function balanceOf(address account) external view returns (uint256) +bytes32 WORKERPOOLORDEROPERATION_TYPEHASH ``` -### frozenOf +### REQUESTORDEROPERATION_TYPEHASH ```solidity -function frozenOf(address account) external view returns (uint256) +bytes32 REQUESTORDEROPERATION_TYPEHASH ``` -### allowance +### OrderOperationEnum ```solidity -function allowance(address account, address spender) external view returns (uint256) -``` +enum OrderOperationEnum { + SIGN, + CLOSE +} +``` -### viewAccount +### EIP712Domain ```solidity -function viewAccount(address account) external view returns (struct IexecLibCore_v5.Account) +struct EIP712Domain { + string name; + string version; + uint256 chainId; + address verifyingContract; +} ``` -### token +### AppOrder ```solidity -function token() external view returns (address) +struct AppOrder { + address app; + uint256 appprice; + uint256 volume; + bytes32 tag; + address datasetrestrict; + address workerpoolrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -### viewCategory +### DatasetOrder ```solidity -function viewCategory(uint256 _catid) external view returns (struct IexecLibCore_v5.Category category) +struct DatasetOrder { + address dataset; + uint256 datasetprice; + uint256 volume; + bytes32 tag; + address apprestrict; + address workerpoolrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -### countCategory +### WorkerpoolOrder ```solidity -function countCategory() external view returns (uint256 count) +struct WorkerpoolOrder { + address workerpool; + uint256 workerpoolprice; + uint256 volume; + bytes32 tag; + uint256 category; + uint256 trust; + address apprestrict; + address datasetrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -### appregistry +### RequestOrder ```solidity -function appregistry() external view returns (contract IRegistry) +struct RequestOrder { + address app; + uint256 appmaxprice; + address dataset; + uint256 datasetmaxprice; + address workerpool; + uint256 workerpoolmaxprice; + address requester; + uint256 volume; + bytes32 tag; + uint256 category; + uint256 trust; + address beneficiary; + address callback; + string params; + bytes32 salt; + bytes sign; +} ``` -### datasetregistry +### AppOrderOperation ```solidity -function datasetregistry() external view returns (contract IRegistry) +struct AppOrderOperation { + struct IexecLibOrders_v5.AppOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -### workerpoolregistry +### DatasetOrderOperation ```solidity -function workerpoolregistry() external view returns (contract IRegistry) +struct DatasetOrderOperation { + struct IexecLibOrders_v5.DatasetOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -### teebroker +### WorkerpoolOrderOperation ```solidity -function teebroker() external view returns (address) +struct WorkerpoolOrderOperation { + struct IexecLibOrders_v5.WorkerpoolOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -### callbackgas +### RequestOrderOperation ```solidity -function callbackgas() external view returns (uint256) +struct RequestOrderOperation { + struct IexecLibOrders_v5.RequestOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -### viewDataset +### hash ```solidity -function viewDataset(address dataset) external view returns (struct IexecLibCore_v5.DatasetInfo) +function hash(struct IexecLibOrders_v5.EIP712Domain _domain) public pure returns (bytes32 domainhash) ``` -### viewApp +### hash ```solidity -function viewApp(address app) external view returns (struct IexecLibCore_v5.AppInfo) +function hash(struct IexecLibOrders_v5.AppOrder _apporder) public pure returns (bytes32 apphash) ``` -### viewWorkerpool +### hash ```solidity -function viewWorkerpool(address workerpool) external view returns (struct IexecLibCore_v5.WorkerpoolInfo) +function hash(struct IexecLibOrders_v5.DatasetOrder _datasetorder) public pure returns (bytes32 datasethash) ``` -### contribution_deadline_ratio +### hash ```solidity -function contribution_deadline_ratio() external pure returns (uint256) +function hash(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) public pure returns (bytes32 workerpoolhash) ``` -### reveal_deadline_ratio +### hash ```solidity -function reveal_deadline_ratio() external pure returns (uint256) +function hash(struct IexecLibOrders_v5.RequestOrder _requestorder) public pure returns (bytes32 requesthash) ``` -### final_deadline_ratio +### hash ```solidity -function final_deadline_ratio() external pure returns (uint256) +function hash(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) public pure returns (bytes32) ``` -### workerpool_stake_ratio +### hash ```solidity -function workerpool_stake_ratio() external pure returns (uint256) +function hash(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) public pure returns (bytes32) ``` -### kitty_ratio +### hash ```solidity -function kitty_ratio() external pure returns (uint256) +function hash(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) public pure returns (bytes32) ``` -### kitty_min +### hash ```solidity -function kitty_min() external pure returns (uint256) +function hash(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) public pure returns (bytes32) ``` -### kitty_address +## PocoStorageLib + +### PocoStorage ```solidity -function kitty_address() external pure returns (address) +struct PocoStorage { + contract IRegistry m_appregistry; + contract IRegistry m_datasetregistry; + contract IRegistry m_workerpoolregistry; + contract IERC20 m_baseToken; + string m_name; + string m_symbol; + uint8 m_decimals; + uint256 m_totalSupply; + mapping(address => uint256) m_balances; + mapping(address => uint256) m_frozens; + mapping(address => mapping(address => uint256)) m_allowances; + bytes32 m_eip712DomainSeparator; + mapping(bytes32 => address) m_presigned; + mapping(bytes32 => uint256) m_consumed; + mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; + mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; + mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; + mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; + mapping(address => uint256) m_workerScores; + address m_teebroker; + uint256 m_callbackgas; + struct IexecLibCore_v5.Category[] m_categories; + contract IexecHubV3Interface m_v3_iexecHub; + mapping(address => bool) m_v3_scoreImported; + mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; +} ``` -### groupmember_purpose +## IRegistry + +### isRegistered ```solidity -function groupmember_purpose() external pure returns (uint256) +function isRegistered(address _entry) external view returns (bool) ``` -### eip712domain_separator +## Registry + +### master ```solidity -function eip712domain_separator() external view returns (bytes32) +address master ``` -## IexecPocoBoostAccessorsFacet +### proxyCode -Access to PoCo Boost tasks must be done with PoCo Classic `IexecPocoAccessors`. +```solidity +bytes proxyCode +``` -### viewDealBoost +### proxyCodeHash ```solidity -function viewDealBoost(bytes32 id) external view returns (struct IexecLibCore_v5.DealBoost deal) +bytes32 proxyCodeHash ``` -Get a deal created by PoCo Boost facet. - -#### Parameters +### previous -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | The ID of the deal. | +```solidity +contract IRegistry previous +``` -## IexecPocoBoostFacet +### initialized -Works for deals with requested trust = 0. +```solidity +bool initialized +``` -### matchOrdersBoost +### initialize ```solidity -function matchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) +function initialize(address _previous) external ``` -This boost match orders is only compatible with trust <= 1. -The requester gets debited. +### setBaseURI -#### Parameters +```solidity +function setBaseURI(string baseUri) external +``` -| Name | Type | Description | -| ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The order signed by the application developer. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The order signed by the dataset provider. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The order signed by the workerpool manager. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The order signed by the requester. | +### baseURI -#### Return Values +```solidity +function baseURI() public view returns (string) +``` -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | bytes32 | The ID of the deal. | +_Added for retrocompatibility! -### sponsorMatchOrdersBoost +Returns the base URI set via {setBaseURI}. This will be +automatically added as a prefix in {tokenURI} to each token's ID._ + +### isRegistered ```solidity -function sponsorMatchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) +function isRegistered(address _entry) external view returns (bool) ``` -Sponsor match orders boost for a requester. -Unlike the standard `matchOrdersBoost(..)` hook where the requester pays for -the deal, this current hook makes it possible for any `msg.sender` to pay for -a third party requester. - -Be aware that anyone seeing a valid request order on the network -(via an off-chain public marketplace, via a `sponsorMatchOrdersBoost(..)` -pending transaction in the mempool or by any other means) might decide -to call the standard `matchOrdersBoost(..)` hook which will result in the -requester being debited instead. Therefore, such a front run would result -in a loss of some of the requester funds deposited in the iExec account -(a loss value equivalent to the price of the deal). - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The app order. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The requester order. | - -### pushResultBoost - -```solidity -function pushResultBoost(bytes32 dealId, uint256 index, bytes results, bytes resultsCallback, bytes authorizationSign, address enclaveChallenge, bytes enclaveSign) external -``` - -Accept results of a task computed by a worker during Boost workflow. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| dealId | bytes32 | The id of the target deal. | -| index | uint256 | The index of the target task of the deal. | -| results | bytes | The results of the task computed by the worker. | -| resultsCallback | bytes | The results of the task computed by the worker that will be forwarded as call data to the callback address set by the requester. | -| authorizationSign | bytes | The authorization signed by the scheduler. authorizing the worker to push a result. | -| enclaveChallenge | address | The enclave address which can produce enclave signature. | -| enclaveSign | bytes | The signature generated from the enclave. | - -### claimBoost +### setName ```solidity -function claimBoost(bytes32 dealId, uint256 index) external +function setName(address, string) external ``` -Claim task to get a refund if task is not completed after deadline. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| dealId | bytes32 | The ID of the deal. | -| index | uint256 | The index of the task. | - -## IexecLibCore_v5 - -### Account - -Tools +Sets the reverse registration name for a registry contract. -```solidity -struct Account { - uint256 stake; - uint256 locked; -} -``` +_This functionality is supported only on Bellecour Sidechain, calls on other chains +will revert. The function is kept as nonpayable to maintain retrocompatibility with the +iExec SDK._ -### Category +## RegistryEntry -```solidity -struct Category { - string name; - string description; - uint256 workClockTimeRef; -} -``` +_Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### DatasetInfo +### registry ```solidity -struct DatasetInfo { - address owner; - string m_datasetName; - bytes m_datasetMultiaddr; - bytes32 m_datasetChecksum; -} +contract IRegistry registry ``` -### AppInfo +### owner ```solidity -struct AppInfo { - address owner; - string m_appName; - string m_appType; - bytes m_appMultiaddr; - bytes32 m_appChecksum; - bytes m_appMREnclave; -} +function owner() public view returns (address) ``` -### WorkerpoolInfo +### setName ```solidity -struct WorkerpoolInfo { - address owner; - string m_workerpoolDescription; - uint256 m_workerStakeRatioPolicy; - uint256 m_schedulerRewardRatioPolicy; -} +function setName(address, string) external ``` -### Resource - -Clerk - Deals - -```solidity -struct Resource { - address pointer; - address owner; - uint256 price; -} -``` +Sets the reverse registration name for a registry entry contract. -### Deal +_This functionality is supported only on Bellecour Sidechain, calls on other chains +will revert. The function is kept as nonpayable to maintain retrocompatibility with the +iExec SDK._ -```solidity -struct Deal { - struct IexecLibCore_v5.Resource app; - struct IexecLibCore_v5.Resource dataset; - struct IexecLibCore_v5.Resource workerpool; - uint256 trust; - uint256 category; - bytes32 tag; - address requester; - address beneficiary; - address callback; - string params; - uint256 startTime; - uint256 botFirst; - uint256 botSize; - uint256 workerStake; - uint256 schedulerRewardRatio; - address sponsor; -} -``` +## App -### DealBoost +_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -Simplified deals for PoCo Boost module. +### m_appName ```solidity -struct DealBoost { - address appOwner; - uint96 appPrice; - address datasetOwner; - uint96 datasetPrice; - address workerpoolOwner; - uint96 workerpoolPrice; - address requester; - uint96 workerReward; - address callback; - uint40 deadline; - uint16 botFirst; - uint16 botSize; - bytes3 shortTag; - address sponsor; -} +string m_appName ``` -### TaskStatusEnum +Members -Tasks +### m_appType ```solidity -enum TaskStatusEnum { - UNSET, - ACTIVE, - REVEALING, - COMPLETED, - FAILED -} +string m_appType ``` -### Task +### m_appMultiaddr ```solidity -struct Task { - enum IexecLibCore_v5.TaskStatusEnum status; - bytes32 dealid; - uint256 idx; - uint256 timeref; - uint256 contributionDeadline; - uint256 revealDeadline; - uint256 finalDeadline; - bytes32 consensusValue; - uint256 revealCounter; - uint256 winnerCounter; - address[] contributors; - bytes32 resultDigest; - bytes results; - uint256 resultsTimestamp; - bytes resultsCallback; -} +bytes m_appMultiaddr ``` -### Consensus - -Consensus +### m_appChecksum ```solidity -struct Consensus { - mapping(bytes32 => uint256) group; - uint256 total; -} +bytes32 m_appChecksum ``` -### ContributionStatusEnum - -Consensus +### m_appMREnclave ```solidity -enum ContributionStatusEnum { - UNSET, - CONTRIBUTED, - PROVED, - REJECTED -} +bytes m_appMREnclave ``` -### Contribution +### initialize ```solidity -struct Contribution { - enum IexecLibCore_v5.ContributionStatusEnum status; - bytes32 resultHash; - bytes32 resultSeal; - address enclaveChallenge; - uint256 weight; -} +function initialize(string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) public ``` -## IexecLibOrders_v5 +Constructor -### EIP712DOMAIN_TYPEHASH +## AppRegistry -```solidity -bytes32 EIP712DOMAIN_TYPEHASH -``` +_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### APPORDER_TYPEHASH +### constructor ```solidity -bytes32 APPORDER_TYPEHASH +constructor() public ``` -### DATASETORDER_TYPEHASH - -```solidity -bytes32 DATASETORDER_TYPEHASH -``` +Constructor -### WORKERPOOLORDER_TYPEHASH +### createApp ```solidity -bytes32 WORKERPOOLORDER_TYPEHASH +function createApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external returns (contract App) ``` -### REQUESTORDER_TYPEHASH +### internal_mintCreate ```solidity -bytes32 REQUESTORDER_TYPEHASH +function internal_mintCreate(address _appOwner, bytes _args) external returns (address) ``` -### APPORDEROPERATION_TYPEHASH +### predictApp ```solidity -bytes32 APPORDEROPERATION_TYPEHASH +function predictApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external view returns (contract App) ``` -### DATASETORDEROPERATION_TYPEHASH - -```solidity -bytes32 DATASETORDEROPERATION_TYPEHASH -``` +## IApp -### WORKERPOOLORDEROPERATION_TYPEHASH +### owner ```solidity -bytes32 WORKERPOOLORDEROPERATION_TYPEHASH +function owner() external view returns (address) ``` -### REQUESTORDEROPERATION_TYPEHASH +### m_appName ```solidity -bytes32 REQUESTORDEROPERATION_TYPEHASH +function m_appName() external view returns (string) ``` -### OrderOperationEnum +### m_appType ```solidity -enum OrderOperationEnum { - SIGN, - CLOSE -} +function m_appType() external view returns (string) ``` -### EIP712Domain +### m_appMultiaddr ```solidity -struct EIP712Domain { - string name; - string version; - uint256 chainId; - address verifyingContract; -} +function m_appMultiaddr() external view returns (bytes) ``` -### AppOrder +### m_appChecksum ```solidity -struct AppOrder { - address app; - uint256 appprice; - uint256 volume; - bytes32 tag; - address datasetrestrict; - address workerpoolrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function m_appChecksum() external view returns (bytes32) ``` -### DatasetOrder +### m_appMREnclave ```solidity -struct DatasetOrder { - address dataset; - uint256 datasetprice; - uint256 volume; - bytes32 tag; - address apprestrict; - address workerpoolrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function m_appMREnclave() external view returns (bytes) ``` -### WorkerpoolOrder +## Dataset -```solidity -struct WorkerpoolOrder { - address workerpool; - uint256 workerpoolprice; - uint256 volume; - bytes32 tag; - uint256 category; - uint256 trust; - address apprestrict; - address datasetrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +_Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### m_datasetName + +```solidity +string m_datasetName ``` -### RequestOrder +Members + +### m_datasetMultiaddr ```solidity -struct RequestOrder { - address app; - uint256 appmaxprice; - address dataset; - uint256 datasetmaxprice; - address workerpool; - uint256 workerpoolmaxprice; - address requester; - uint256 volume; - bytes32 tag; - uint256 category; - uint256 trust; - address beneficiary; - address callback; - string params; - bytes32 salt; - bytes sign; -} +bytes m_datasetMultiaddr ``` -### AppOrderOperation +### m_datasetChecksum ```solidity -struct AppOrderOperation { - struct IexecLibOrders_v5.AppOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +bytes32 m_datasetChecksum ``` -### DatasetOrderOperation +### initialize ```solidity -struct DatasetOrderOperation { - struct IexecLibOrders_v5.DatasetOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function initialize(string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) public ``` -### WorkerpoolOrderOperation +Constructor + +## DatasetRegistry + +_Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### constructor ```solidity -struct WorkerpoolOrderOperation { - struct IexecLibOrders_v5.WorkerpoolOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +constructor() public ``` -### RequestOrderOperation +Constructor + +### createDataset ```solidity -struct RequestOrderOperation { - struct IexecLibOrders_v5.RequestOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function createDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external returns (contract Dataset) ``` -### hash +### internal_mintCreate ```solidity -function hash(struct IexecLibOrders_v5.EIP712Domain _domain) public pure returns (bytes32 domainhash) +function internal_mintCreate(address _datasetOwner, bytes _args) external returns (address) ``` -### hash +### predictDataset ```solidity -function hash(struct IexecLibOrders_v5.AppOrder _apporder) public pure returns (bytes32 apphash) +function predictDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external view returns (contract Dataset) ``` -### hash +## IDataset + +### owner ```solidity -function hash(struct IexecLibOrders_v5.DatasetOrder _datasetorder) public pure returns (bytes32 datasethash) +function owner() external view returns (address) ``` -### hash +### m_datasetName ```solidity -function hash(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) public pure returns (bytes32 workerpoolhash) +function m_datasetName() external view returns (string) ``` -### hash +### m_datasetMultiaddr ```solidity -function hash(struct IexecLibOrders_v5.RequestOrder _requestorder) public pure returns (bytes32 requesthash) +function m_datasetMultiaddr() external view returns (bytes) ``` -### hash +### m_datasetChecksum ```solidity -function hash(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) public pure returns (bytes32) +function m_datasetChecksum() external view returns (bytes32) ``` -### hash +## Address + +## BaseUpgradeabilityProxy + +_This contract implements a proxy that allows to change the +implementation address to which it will delegate. +Such a change is called an implementation upgrade._ + +### Upgraded ```solidity -function hash(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) public pure returns (bytes32) +event Upgraded(address implementation) ``` -### hash +_Emitted when the implementation is upgraded._ + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| implementation | address | Address of the new implementation. | + +## InitializableUpgradeabilityProxy + +_Extends BaseUpgradeabilityProxy with an initializer for initializing +implementation and init data._ + +### initialize ```solidity -function hash(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) public pure returns (bytes32) +function initialize(address _logic, bytes _data) public payable ``` -### hash +_Contract initializer._ + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| _logic | address | Address of the initial implementation. | +| _data | bytes | Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. | + +## Proxy + +_Implements delegation of calls to other contracts, with proper +forwarding of return values and bubbling of failures. +It defines a fallback function that delegates all calls to the address +returned by the abstract _implementation() internal function._ + +### receive ```solidity -function hash(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) public pure returns (bytes32) +receive() external payable virtual ``` -## PocoStorageLib +_Receive function. +Implemented entirely in `_fallback`._ -### PocoStorage +### fallback ```solidity -struct PocoStorage { - contract IRegistry m_appregistry; - contract IRegistry m_datasetregistry; - contract IRegistry m_workerpoolregistry; - contract IERC20 m_baseToken; - string m_name; - string m_symbol; - uint8 m_decimals; - uint256 m_totalSupply; - mapping(address => uint256) m_balances; - mapping(address => uint256) m_frozens; - mapping(address => mapping(address => uint256)) m_allowances; - bytes32 m_eip712DomainSeparator; - mapping(bytes32 => address) m_presigned; - mapping(bytes32 => uint256) m_consumed; - mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; - mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; - mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; - mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; - mapping(address => uint256) m_workerScores; - address m_teebroker; - uint256 m_callbackgas; - struct IexecLibCore_v5.Category[] m_categories; - contract IexecHubV3Interface m_v3_iexecHub; - mapping(address => bool) m_v3_scoreImported; - mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; -} +fallback() external payable ``` -## IApp +_Fallback function. +Implemented entirely in `_fallback`._ + +## IWorkerpool ### owner @@ -1436,86 +1422,100 @@ struct PocoStorage { function owner() external view returns (address) ``` -### m_appName +### m_workerpoolDescription ```solidity -function m_appName() external view returns (string) +function m_workerpoolDescription() external view returns (string) ``` -### m_appType +### m_schedulerRewardRatioPolicy ```solidity -function m_appType() external view returns (string) +function m_schedulerRewardRatioPolicy() external view returns (uint256) ``` -### m_appMultiaddr +### m_workerStakeRatioPolicy ```solidity -function m_appMultiaddr() external view returns (bytes) +function m_workerStakeRatioPolicy() external view returns (uint256) ``` -### m_appChecksum +## Workerpool + +_Referenced in the SDK with the current path `contracts/registries/workerpools/Workerpool.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### m_workerpoolDescription ```solidity -function m_appChecksum() external view returns (bytes32) +string m_workerpoolDescription ``` -### m_appMREnclave +Parameters + +### m_workerStakeRatioPolicy ```solidity -function m_appMREnclave() external view returns (bytes) +uint256 m_workerStakeRatioPolicy ``` -## IDataset - -### owner +### m_schedulerRewardRatioPolicy ```solidity -function owner() external view returns (address) +uint256 m_schedulerRewardRatioPolicy ``` -### m_datasetName +### PolicyUpdate ```solidity -function m_datasetName() external view returns (string) +event PolicyUpdate(uint256 oldWorkerStakeRatioPolicy, uint256 newWorkerStakeRatioPolicy, uint256 oldSchedulerRewardRatioPolicy, uint256 newSchedulerRewardRatioPolicy) ``` -### m_datasetMultiaddr +Events + +### initialize ```solidity -function m_datasetMultiaddr() external view returns (bytes) +function initialize(string _workerpoolDescription) public ``` -### m_datasetChecksum +Constructor + +### changePolicy ```solidity -function m_datasetChecksum() external view returns (bytes32) +function changePolicy(uint256 _newWorkerStakeRatioPolicy, uint256 _newSchedulerRewardRatioPolicy) external ``` -## IWorkerpool +## WorkerpoolRegistry -### owner +_Referenced in the SDK with the current path `contracts/registries/workerpools/WorkerpoolRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### constructor ```solidity -function owner() external view returns (address) +constructor() public ``` -### m_workerpoolDescription +Constructor + +### createWorkerpool ```solidity -function m_workerpoolDescription() external view returns (string) +function createWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external returns (contract Workerpool) ``` -### m_schedulerRewardRatioPolicy +### internal_mintCreate ```solidity -function m_schedulerRewardRatioPolicy() external view returns (uint256) +function internal_mintCreate(address _workerpoolOwner, bytes _args) external returns (address) ``` -### m_workerStakeRatioPolicy +### predictWorkerpool ```solidity -function m_workerStakeRatioPolicy() external view returns (uint256) +function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) ``` ## IexecCategoryManagerFacet From 599cd76f99e1f207db16d2bfbf7e904629a37f45 Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Tue, 28 Oct 2025 16:28:00 +0100 Subject: [PATCH 24/77] fix: Add temporary migration checks in IexecERC20Core and IexecERC20Facet to prevent underflow and ensure backward compatibility --- contracts/facets/IexecERC20Core.sol | 5 +++++ contracts/facets/IexecERC20Facet.sol | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/contracts/facets/IexecERC20Core.sol b/contracts/facets/IexecERC20Core.sol index 567d84719..cafc4bf67 100644 --- a/contracts/facets/IexecERC20Core.sol +++ b/contracts/facets/IexecERC20Core.sol @@ -12,6 +12,11 @@ contract IexecERC20Core is IexecERC20Common, FacetBase { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); + // TEMPORARY MIGRATION FIX: Check balance to prevent underflow and revert without reason for backward compatibility + // TODO: Remove this in the next major version + if ($.m_balances[sender] < amount) { + revert(); + } $.m_balances[sender] = $.m_balances[sender] - amount; $.m_balances[recipient] = $.m_balances[recipient] + amount; emit Transfer(sender, recipient, amount); diff --git a/contracts/facets/IexecERC20Facet.sol b/contracts/facets/IexecERC20Facet.sol index 24570e7ec..aa45a838a 100644 --- a/contracts/facets/IexecERC20Facet.sol +++ b/contracts/facets/IexecERC20Facet.sol @@ -45,6 +45,11 @@ contract IexecERC20Facet is IexecERC20, FacetBase, IexecERC20Core { ) external override returns (bool) { PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); _transfer(sender, recipient, amount); + // TEMPORARY MIGRATION FIX: Check allowance to prevent underflow and revert without reason for backward compatibility + // TODO: Remove this in the next major version + if ($.m_allowances[sender][_msgSender()] < amount) { + revert(); + } _approve(sender, _msgSender(), $.m_allowances[sender][_msgSender()] - amount); return true; } @@ -63,6 +68,11 @@ contract IexecERC20Facet is IexecERC20, FacetBase, IexecERC20Core { uint256 subtractedValue ) external override returns (bool) { PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); + // TEMPORARY MIGRATION FIX: Check allowance to prevent underflow and revert without reason for backward compatibility + // TODO: Remove this in the next major version + if ($.m_allowances[_msgSender()][spender] < subtractedValue) { + revert(); + } _approve(_msgSender(), spender, $.m_allowances[_msgSender()][spender] - subtractedValue); return true; } From 28e02515f898e6c86edf76ad374a384eeaaba055 Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Tue, 28 Oct 2025 16:28:09 +0100 Subject: [PATCH 25/77] fix: Add missing newlines at the end of JSON files and update Solidity documentation for Iexec contracts --- docs/solidity/index.md | 1940 ++++++++++++++++++---------------------- 1 file changed, 881 insertions(+), 1059 deletions(-) diff --git a/docs/solidity/index.md b/docs/solidity/index.md index fd718af66..19ffccef1 100644 --- a/docs/solidity/index.md +++ b/docs/solidity/index.md @@ -1,1960 +1,1782 @@ # Solidity API -## IexecConfigurationExtraFacet - -### changeRegistries - -```solidity -function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external -``` +## IexecERC20Core -## IexecEscrow +## IexecERC20Facet -### Transfer +### transfer ```solidity -event Transfer(address from, address to, uint256 value) +function transfer(address recipient, uint256 amount) external returns (bool) ``` -### Lock +### approve ```solidity -event Lock(address owner, uint256 amount) +function approve(address spender, uint256 value) external returns (bool) ``` -### Unlock +### approveAndCall ```solidity -event Unlock(address owner, uint256 amount) +function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) ``` -### Reward +### transferFrom ```solidity -event Reward(address owner, uint256 amount, bytes32 ref) +function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) ``` -### Seize +### increaseAllowance ```solidity -event Seize(address owner, uint256 amount, bytes32 ref) +function increaseAllowance(address spender, uint256 addedValue) external returns (bool) ``` -## Matching +### decreaseAllowance ```solidity -struct Matching { - bytes32 apporderHash; - address appOwner; - bytes32 datasetorderHash; - address datasetOwner; - bytes32 workerpoolorderHash; - address workerpoolOwner; - bytes32 requestorderHash; - bool hasDataset; -} +function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) ``` -## IexecPoco1Facet +## IexecEscrowNativeFacet -### verifySignature +### receive ```solidity -function verifySignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) +receive() external payable ``` -### verifyPresignature +### fallback ```solidity -function verifyPresignature(address _identity, bytes32 _hash) external view returns (bool) +fallback() external payable ``` -### verifyPresignatureOrSignature +### deposit ```solidity -function verifyPresignatureOrSignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) +function deposit() external payable returns (bool) ``` -### assertDatasetDealCompatibility +### depositFor ```solidity -function assertDatasetDealCompatibility(struct IexecLibOrders_v5.DatasetOrder datasetOrder, bytes32 dealId) external view +function depositFor(address target) external payable returns (bool) ``` -Public view function to check if a dataset order is compatible with a deal. -This function performs all the necessary checks to verify dataset order compatibility with a deal. -Reverts with `IncompatibleDatasetOrder(reason)` if the dataset order is not compatible with the deal, does -nothing otherwise. - -_This function is mainly consumed by offchain clients. It should be carefully inspected if -used in on-chain code. -This function should not be used in `matchOrders` since it does not check the same requirements. -The choice of reverting instead of returning true/false is motivated by the Java middleware -requirements._ - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order to verify | -| dealId | bytes32 | The deal ID to check against | - -### matchOrders +### depositForArray ```solidity -function matchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) +function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) ``` -Match orders. The requester gets debited. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | -| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | - -### sponsorMatchOrders +### withdraw ```solidity -function sponsorMatchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) +function withdraw(uint256 amount) external returns (bool) ``` -Sponsor match orders for a requester. -Unlike the standard `matchOrders(..)` hook where the requester pays for -the deal, this current hook makes it possible for any `msg.sender` to pay for -a third party requester. - -Be aware that anyone seeing a valid request order on the network -(via an off-chain public marketplace, via a `sponsorMatchOrders(..)` -pending transaction in the mempool or by any other means) might decide -to call the standard `matchOrders(..)` hook which will result in the -requester being debited instead. Therefore, such a front run would result -in a loss of some of the requester funds deposited in the iExec account -(a loss value equivalent to the price of the deal). - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | -| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | - -## IexecPoco2Facet - -### initialize +### withdrawTo ```solidity -function initialize(bytes32 _dealid, uint256 idx) public returns (bytes32) +function withdrawTo(uint256 amount, address target) external returns (bool) ``` -### contribute +### recover ```solidity -function contribute(bytes32 _taskid, bytes32 _resultHash, bytes32 _resultSeal, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external +function recover() external returns (uint256) ``` -### contributeAndFinalize - -```solidity -function contributeAndFinalize(bytes32 _taskid, bytes32 _resultDigest, bytes _results, bytes _resultsCallback, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external -``` +## IexecEscrowTokenFacet -### reveal +### receive ```solidity -function reveal(bytes32 _taskid, bytes32 _resultDigest) external +receive() external payable ``` -### reopen +### fallback ```solidity -function reopen(bytes32 _taskid) external +fallback() external payable ``` -### finalize +### deposit ```solidity -function finalize(bytes32 _taskid, bytes _results, bytes _resultsCallback) external +function deposit(uint256 amount) external returns (bool) ``` -### claim +### depositFor ```solidity -function claim(bytes32 _taskid) public +function depositFor(uint256 amount, address target) external returns (bool) ``` -### initializeArray +### depositForArray ```solidity -function initializeArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) +function depositForArray(uint256[] amounts, address[] targets) external returns (bool) ``` -### claimArray +### withdraw ```solidity -function claimArray(bytes32[] _taskid) external returns (bool) +function withdraw(uint256 amount) external returns (bool) ``` -### initializeAndClaimArray +### withdrawTo ```solidity -function initializeAndClaimArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) +function withdrawTo(uint256 amount, address target) external returns (bool) ``` -## IexecPocoAccessorsFacet - -### viewDeal +### recover ```solidity -function viewDeal(bytes32 id) external view returns (struct IexecLibCore_v5.Deal deal) +function recover() external returns (uint256) ``` -Get a deal created by PoCo classic facet. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | The ID of the deal. | - -### viewTask +### receiveApproval ```solidity -function viewTask(bytes32 id) external view returns (struct IexecLibCore_v5.Task) +function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) ``` -Get task created in Classic mode. - -#### Parameters +## IexecLibCore_v5 -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | id of the task | +### Account -### computeDealVolume +Tools ```solidity -function computeDealVolume(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external view returns (uint256) +struct Account { + uint256 stake; + uint256 locked; +} ``` -Computes the volume of the "not yet created" deal based on the provided orders. -This function should only be used if the deal is not yet created. -For existing deals, use the deal accessors instead. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The application order. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The request order. | - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | uint256 | The computed deal volume. | - -### viewConsumed +### Category ```solidity -function viewConsumed(bytes32 _id) external view returns (uint256 consumed) +struct Category { + string name; + string description; + uint256 workClockTimeRef; +} ``` -### viewPresigned +### DatasetInfo ```solidity -function viewPresigned(bytes32 _id) external view returns (address signer) +struct DatasetInfo { + address owner; + string m_datasetName; + bytes m_datasetMultiaddr; + bytes32 m_datasetChecksum; +} ``` -### viewContribution +### AppInfo ```solidity -function viewContribution(bytes32 _taskid, address _worker) external view returns (struct IexecLibCore_v5.Contribution) +struct AppInfo { + address owner; + string m_appName; + string m_appType; + bytes m_appMultiaddr; + bytes32 m_appChecksum; + bytes m_appMREnclave; +} ``` -### viewScore +### WorkerpoolInfo ```solidity -function viewScore(address _worker) external view returns (uint256) +struct WorkerpoolInfo { + address owner; + string m_workerpoolDescription; + uint256 m_workerStakeRatioPolicy; + uint256 m_schedulerRewardRatioPolicy; +} ``` -### resultFor +### Resource -```solidity -function resultFor(bytes32 id) external view returns (bytes) -``` - -### name +Clerk - Deals ```solidity -function name() external view returns (string) +struct Resource { + address pointer; + address owner; + uint256 price; +} ``` -### symbol +### Deal ```solidity -function symbol() external view returns (string) +struct Deal { + struct IexecLibCore_v5.Resource app; + struct IexecLibCore_v5.Resource dataset; + struct IexecLibCore_v5.Resource workerpool; + uint256 trust; + uint256 category; + bytes32 tag; + address requester; + address beneficiary; + address callback; + string params; + uint256 startTime; + uint256 botFirst; + uint256 botSize; + uint256 workerStake; + uint256 schedulerRewardRatio; + address sponsor; +} ``` -### decimals +### DealBoost + +Simplified deals for PoCo Boost module. ```solidity -function decimals() external view returns (uint8) +struct DealBoost { + address appOwner; + uint96 appPrice; + address datasetOwner; + uint96 datasetPrice; + address workerpoolOwner; + uint96 workerpoolPrice; + address requester; + uint96 workerReward; + address callback; + uint40 deadline; + uint16 botFirst; + uint16 botSize; + bytes3 shortTag; + address sponsor; +} ``` -### totalSupply +### TaskStatusEnum + +Tasks ```solidity -function totalSupply() external view returns (uint256) +enum TaskStatusEnum { + UNSET, + ACTIVE, + REVEALING, + COMPLETED, + FAILED +} ``` -### balanceOf +### Task ```solidity -function balanceOf(address account) external view returns (uint256) +struct Task { + enum IexecLibCore_v5.TaskStatusEnum status; + bytes32 dealid; + uint256 idx; + uint256 timeref; + uint256 contributionDeadline; + uint256 revealDeadline; + uint256 finalDeadline; + bytes32 consensusValue; + uint256 revealCounter; + uint256 winnerCounter; + address[] contributors; + bytes32 resultDigest; + bytes results; + uint256 resultsTimestamp; + bytes resultsCallback; +} ``` -### frozenOf +### Consensus + +Consensus ```solidity -function frozenOf(address account) external view returns (uint256) +struct Consensus { + mapping(bytes32 => uint256) group; + uint256 total; +} ``` -### allowance +### ContributionStatusEnum + +Consensus ```solidity -function allowance(address account, address spender) external view returns (uint256) +enum ContributionStatusEnum { + UNSET, + CONTRIBUTED, + PROVED, + REJECTED +} ``` -### viewAccount +### Contribution ```solidity -function viewAccount(address account) external view returns (struct IexecLibCore_v5.Account) +struct Contribution { + enum IexecLibCore_v5.ContributionStatusEnum status; + bytes32 resultHash; + bytes32 resultSeal; + address enclaveChallenge; + uint256 weight; +} ``` -### token +## PocoStorageLib + +### PocoStorage ```solidity -function token() external view returns (address) +struct PocoStorage { + contract IRegistry m_appregistry; + contract IRegistry m_datasetregistry; + contract IRegistry m_workerpoolregistry; + contract IERC20 m_baseToken; + string m_name; + string m_symbol; + uint8 m_decimals; + uint256 m_totalSupply; + mapping(address => uint256) m_balances; + mapping(address => uint256) m_frozens; + mapping(address => mapping(address => uint256)) m_allowances; + bytes32 m_eip712DomainSeparator; + mapping(bytes32 => address) m_presigned; + mapping(bytes32 => uint256) m_consumed; + mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; + mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; + mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; + mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; + mapping(address => uint256) m_workerScores; + address m_teebroker; + uint256 m_callbackgas; + struct IexecLibCore_v5.Category[] m_categories; + contract IexecHubV3Interface m_v3_iexecHub; + mapping(address => bool) m_v3_scoreImported; + mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; +} ``` -### viewCategory +## IRegistry + +### isRegistered ```solidity -function viewCategory(uint256 _catid) external view returns (struct IexecLibCore_v5.Category category) +function isRegistered(address _entry) external view returns (bool) ``` -### countCategory +## IexecInterfaceNative -```solidity -function countCategory() external view returns (uint256 count) -``` +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in native mode. -### appregistry +_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +## IexecInterfaceToken + +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in token mode. + +_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +## IexecCategoryManagerFacet + +### createCategory ```solidity -function appregistry() external view returns (contract IRegistry) +function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) ``` -### datasetregistry +Methods + +## IexecConfigurationExtraFacet + +### changeRegistries ```solidity -function datasetregistry() external view returns (contract IRegistry) +function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external ``` -### workerpoolregistry +## IexecConfigurationFacet + +### configure ```solidity -function workerpoolregistry() external view returns (contract IRegistry) +function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external ``` -### teebroker +### domain ```solidity -function teebroker() external view returns (address) +function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) ``` -### callbackgas +### updateDomainSeparator ```solidity -function callbackgas() external view returns (uint256) +function updateDomainSeparator() external ``` -### viewDataset +### importScore ```solidity -function viewDataset(address dataset) external view returns (struct IexecLibCore_v5.DatasetInfo) +function importScore(address _worker) external ``` -### viewApp +### setTeeBroker ```solidity -function viewApp(address app) external view returns (struct IexecLibCore_v5.AppInfo) +function setTeeBroker(address _teebroker) external ``` -### viewWorkerpool +### setCallbackGas ```solidity -function viewWorkerpool(address workerpool) external view returns (struct IexecLibCore_v5.WorkerpoolInfo) +function setCallbackGas(uint256 _callbackgas) external ``` -### contribution_deadline_ratio +## IexecEscrow + +### Transfer ```solidity -function contribution_deadline_ratio() external pure returns (uint256) +event Transfer(address from, address to, uint256 value) ``` -### reveal_deadline_ratio +### Lock ```solidity -function reveal_deadline_ratio() external pure returns (uint256) +event Lock(address owner, uint256 amount) ``` -### final_deadline_ratio +### Unlock ```solidity -function final_deadline_ratio() external pure returns (uint256) +event Unlock(address owner, uint256 amount) ``` -### workerpool_stake_ratio +### Reward ```solidity -function workerpool_stake_ratio() external pure returns (uint256) +event Reward(address owner, uint256 amount, bytes32 ref) ``` -### kitty_ratio +### Seize ```solidity -function kitty_ratio() external pure returns (uint256) +event Seize(address owner, uint256 amount, bytes32 ref) ``` -### kitty_min +## IexecOrderManagementFacet + +### manageAppOrder ```solidity -function kitty_min() external pure returns (uint256) +function manageAppOrder(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) external ``` -### kitty_address +### manageDatasetOrder ```solidity -function kitty_address() external pure returns (address) +function manageDatasetOrder(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) external ``` -### groupmember_purpose +### manageWorkerpoolOrder ```solidity -function groupmember_purpose() external pure returns (uint256) +function manageWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) external ``` -### eip712domain_separator +### manageRequestOrder ```solidity -function eip712domain_separator() external view returns (bytes32) +function manageRequestOrder(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) external ``` -## IexecPocoBoostAccessorsFacet - -Access to PoCo Boost tasks must be done with PoCo Classic `IexecPocoAccessors`. - -### viewDealBoost +## Matching ```solidity -function viewDealBoost(bytes32 id) external view returns (struct IexecLibCore_v5.DealBoost deal) +struct Matching { + bytes32 apporderHash; + address appOwner; + bytes32 datasetorderHash; + address datasetOwner; + bytes32 workerpoolorderHash; + address workerpoolOwner; + bytes32 requestorderHash; + bool hasDataset; +} ``` -Get a deal created by PoCo Boost facet. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | The ID of the deal. | - -## IexecPocoBoostFacet - -Works for deals with requested trust = 0. +## IexecPoco1Facet -### matchOrdersBoost +### verifySignature ```solidity -function matchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) +function verifySignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) ``` -This boost match orders is only compatible with trust <= 1. -The requester gets debited. - -#### Parameters +### verifyPresignature -| Name | Type | Description | -| ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The order signed by the application developer. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The order signed by the dataset provider. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The order signed by the workerpool manager. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The order signed by the requester. | +```solidity +function verifyPresignature(address _identity, bytes32 _hash) external view returns (bool) +``` -#### Return Values +### verifyPresignatureOrSignature -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | bytes32 | The ID of the deal. | +```solidity +function verifyPresignatureOrSignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) +``` -### sponsorMatchOrdersBoost +### assertDatasetDealCompatibility ```solidity -function sponsorMatchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) +function assertDatasetDealCompatibility(struct IexecLibOrders_v5.DatasetOrder datasetOrder, bytes32 dealId) external view ``` -Sponsor match orders boost for a requester. -Unlike the standard `matchOrdersBoost(..)` hook where the requester pays for -the deal, this current hook makes it possible for any `msg.sender` to pay for -a third party requester. +Public view function to check if a dataset order is compatible with a deal. +This function performs all the necessary checks to verify dataset order compatibility with a deal. +Reverts with `IncompatibleDatasetOrder(reason)` if the dataset order is not compatible with the deal, does +nothing otherwise. -Be aware that anyone seeing a valid request order on the network -(via an off-chain public marketplace, via a `sponsorMatchOrdersBoost(..)` -pending transaction in the mempool or by any other means) might decide -to call the standard `matchOrdersBoost(..)` hook which will result in the -requester being debited instead. Therefore, such a front run would result -in a loss of some of the requester funds deposited in the iExec account -(a loss value equivalent to the price of the deal). +_This function is mainly consumed by offchain clients. It should be carefully inspected if +used in on-chain code. +This function should not be used in `matchOrders` since it does not check the same requirements. +The choice of reverting instead of returning true/false is motivated by the Java middleware +requirements._ #### Parameters | Name | Type | Description | | ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The app order. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The requester order. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order to verify | +| dealId | bytes32 | The deal ID to check against | -### pushResultBoost +### matchOrders ```solidity -function pushResultBoost(bytes32 dealId, uint256 index, bytes results, bytes resultsCallback, bytes authorizationSign, address enclaveChallenge, bytes enclaveSign) external +function matchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) ``` -Accept results of a task computed by a worker during Boost workflow. +Match orders. The requester gets debited. #### Parameters | Name | Type | Description | | ---- | ---- | ----------- | -| dealId | bytes32 | The id of the target deal. | -| index | uint256 | The index of the target task of the deal. | -| results | bytes | The results of the task computed by the worker. | -| resultsCallback | bytes | The results of the task computed by the worker that will be forwarded as call data to the callback address set by the requester. | -| authorizationSign | bytes | The authorization signed by the scheduler. authorizing the worker to push a result. | -| enclaveChallenge | address | The enclave address which can produce enclave signature. | -| enclaveSign | bytes | The signature generated from the enclave. | +| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | +| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | -### claimBoost +### sponsorMatchOrders ```solidity -function claimBoost(bytes32 dealId, uint256 index) external +function sponsorMatchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) ``` -Claim task to get a refund if task is not completed after deadline. +Sponsor match orders for a requester. +Unlike the standard `matchOrders(..)` hook where the requester pays for +the deal, this current hook makes it possible for any `msg.sender` to pay for +a third party requester. + +Be aware that anyone seeing a valid request order on the network +(via an off-chain public marketplace, via a `sponsorMatchOrders(..)` +pending transaction in the mempool or by any other means) might decide +to call the standard `matchOrders(..)` hook which will result in the +requester being debited instead. Therefore, such a front run would result +in a loss of some of the requester funds deposited in the iExec account +(a loss value equivalent to the price of the deal). #### Parameters | Name | Type | Description | | ---- | ---- | ----------- | -| dealId | bytes32 | The ID of the deal. | -| index | uint256 | The index of the task. | - -## IexecLibCore_v5 - -### Account - -Tools - -```solidity -struct Account { - uint256 stake; - uint256 locked; -} -``` - -### Category - -```solidity -struct Category { - string name; - string description; - uint256 workClockTimeRef; -} -``` - -### DatasetInfo +| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | +| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | -```solidity -struct DatasetInfo { - address owner; - string m_datasetName; - bytes m_datasetMultiaddr; - bytes32 m_datasetChecksum; -} -``` +## IexecPoco2Facet -### AppInfo +### initialize ```solidity -struct AppInfo { - address owner; - string m_appName; - string m_appType; - bytes m_appMultiaddr; - bytes32 m_appChecksum; - bytes m_appMREnclave; -} +function initialize(bytes32 _dealid, uint256 idx) public returns (bytes32) ``` -### WorkerpoolInfo +### contribute ```solidity -struct WorkerpoolInfo { - address owner; - string m_workerpoolDescription; - uint256 m_workerStakeRatioPolicy; - uint256 m_schedulerRewardRatioPolicy; -} +function contribute(bytes32 _taskid, bytes32 _resultHash, bytes32 _resultSeal, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external ``` -### Resource - -Clerk - Deals +### contributeAndFinalize ```solidity -struct Resource { - address pointer; - address owner; - uint256 price; -} +function contributeAndFinalize(bytes32 _taskid, bytes32 _resultDigest, bytes _results, bytes _resultsCallback, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external ``` -### Deal +### reveal ```solidity -struct Deal { - struct IexecLibCore_v5.Resource app; - struct IexecLibCore_v5.Resource dataset; - struct IexecLibCore_v5.Resource workerpool; - uint256 trust; - uint256 category; - bytes32 tag; - address requester; - address beneficiary; - address callback; - string params; - uint256 startTime; - uint256 botFirst; - uint256 botSize; - uint256 workerStake; - uint256 schedulerRewardRatio; - address sponsor; -} +function reveal(bytes32 _taskid, bytes32 _resultDigest) external ``` -### DealBoost - -Simplified deals for PoCo Boost module. +### reopen ```solidity -struct DealBoost { - address appOwner; - uint96 appPrice; - address datasetOwner; - uint96 datasetPrice; - address workerpoolOwner; - uint96 workerpoolPrice; - address requester; - uint96 workerReward; - address callback; - uint40 deadline; - uint16 botFirst; - uint16 botSize; - bytes3 shortTag; - address sponsor; -} +function reopen(bytes32 _taskid) external ``` -### TaskStatusEnum - -Tasks +### finalize ```solidity -enum TaskStatusEnum { - UNSET, - ACTIVE, - REVEALING, - COMPLETED, - FAILED -} +function finalize(bytes32 _taskid, bytes _results, bytes _resultsCallback) external ``` -### Task +### claim ```solidity -struct Task { - enum IexecLibCore_v5.TaskStatusEnum status; - bytes32 dealid; - uint256 idx; - uint256 timeref; - uint256 contributionDeadline; - uint256 revealDeadline; - uint256 finalDeadline; - bytes32 consensusValue; - uint256 revealCounter; - uint256 winnerCounter; - address[] contributors; - bytes32 resultDigest; - bytes results; - uint256 resultsTimestamp; - bytes resultsCallback; -} +function claim(bytes32 _taskid) public ``` -### Consensus - -Consensus +### initializeArray ```solidity -struct Consensus { - mapping(bytes32 => uint256) group; - uint256 total; -} +function initializeArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) ``` -### ContributionStatusEnum - -Consensus +### claimArray ```solidity -enum ContributionStatusEnum { - UNSET, - CONTRIBUTED, - PROVED, - REJECTED -} +function claimArray(bytes32[] _taskid) external returns (bool) ``` -### Contribution +### initializeAndClaimArray ```solidity -struct Contribution { - enum IexecLibCore_v5.ContributionStatusEnum status; - bytes32 resultHash; - bytes32 resultSeal; - address enclaveChallenge; - uint256 weight; -} +function initializeAndClaimArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) ``` -## IexecLibOrders_v5 +## IexecPocoAccessorsFacet -### EIP712DOMAIN_TYPEHASH +### viewDeal ```solidity -bytes32 EIP712DOMAIN_TYPEHASH +function viewDeal(bytes32 id) external view returns (struct IexecLibCore_v5.Deal deal) ``` -### APPORDER_TYPEHASH - -```solidity -bytes32 APPORDER_TYPEHASH -``` +Get a deal created by PoCo classic facet. -### DATASETORDER_TYPEHASH +#### Parameters -```solidity -bytes32 DATASETORDER_TYPEHASH -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | The ID of the deal. | -### WORKERPOOLORDER_TYPEHASH +### viewTask ```solidity -bytes32 WORKERPOOLORDER_TYPEHASH +function viewTask(bytes32 id) external view returns (struct IexecLibCore_v5.Task) ``` -### REQUESTORDER_TYPEHASH - -```solidity -bytes32 REQUESTORDER_TYPEHASH -``` +Get task created in Classic mode. -### APPORDEROPERATION_TYPEHASH +#### Parameters -```solidity -bytes32 APPORDEROPERATION_TYPEHASH -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | id of the task | -### DATASETORDEROPERATION_TYPEHASH +### computeDealVolume ```solidity -bytes32 DATASETORDEROPERATION_TYPEHASH +function computeDealVolume(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external view returns (uint256) ``` -### WORKERPOOLORDEROPERATION_TYPEHASH - -```solidity -bytes32 WORKERPOOLORDEROPERATION_TYPEHASH -``` +Computes the volume of the "not yet created" deal based on the provided orders. +This function should only be used if the deal is not yet created. +For existing deals, use the deal accessors instead. -### REQUESTORDEROPERATION_TYPEHASH +#### Parameters -```solidity -bytes32 REQUESTORDEROPERATION_TYPEHASH -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The application order. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The request order. | -### OrderOperationEnum +#### Return Values -```solidity -enum OrderOperationEnum { - SIGN, - CLOSE -} -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| [0] | uint256 | The computed deal volume. | -### EIP712Domain +### viewConsumed ```solidity -struct EIP712Domain { - string name; - string version; - uint256 chainId; - address verifyingContract; -} +function viewConsumed(bytes32 _id) external view returns (uint256 consumed) ``` -### AppOrder +### viewPresigned ```solidity -struct AppOrder { - address app; - uint256 appprice; - uint256 volume; - bytes32 tag; - address datasetrestrict; - address workerpoolrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function viewPresigned(bytes32 _id) external view returns (address signer) ``` -### DatasetOrder +### viewContribution ```solidity -struct DatasetOrder { - address dataset; - uint256 datasetprice; - uint256 volume; - bytes32 tag; - address apprestrict; - address workerpoolrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function viewContribution(bytes32 _taskid, address _worker) external view returns (struct IexecLibCore_v5.Contribution) ``` -### WorkerpoolOrder +### viewScore ```solidity -struct WorkerpoolOrder { - address workerpool; - uint256 workerpoolprice; - uint256 volume; - bytes32 tag; - uint256 category; - uint256 trust; - address apprestrict; - address datasetrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function viewScore(address _worker) external view returns (uint256) ``` -### RequestOrder +### resultFor ```solidity -struct RequestOrder { - address app; - uint256 appmaxprice; - address dataset; - uint256 datasetmaxprice; - address workerpool; - uint256 workerpoolmaxprice; - address requester; - uint256 volume; - bytes32 tag; - uint256 category; - uint256 trust; - address beneficiary; - address callback; - string params; - bytes32 salt; - bytes sign; -} +function resultFor(bytes32 id) external view returns (bytes) ``` -### AppOrderOperation +### name ```solidity -struct AppOrderOperation { - struct IexecLibOrders_v5.AppOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function name() external view returns (string) ``` -### DatasetOrderOperation +### symbol ```solidity -struct DatasetOrderOperation { - struct IexecLibOrders_v5.DatasetOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function symbol() external view returns (string) ``` -### WorkerpoolOrderOperation +### decimals ```solidity -struct WorkerpoolOrderOperation { - struct IexecLibOrders_v5.WorkerpoolOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function decimals() external view returns (uint8) ``` -### RequestOrderOperation +### totalSupply ```solidity -struct RequestOrderOperation { - struct IexecLibOrders_v5.RequestOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function totalSupply() external view returns (uint256) ``` -### hash +### balanceOf ```solidity -function hash(struct IexecLibOrders_v5.EIP712Domain _domain) public pure returns (bytes32 domainhash) +function balanceOf(address account) external view returns (uint256) ``` -### hash +### frozenOf ```solidity -function hash(struct IexecLibOrders_v5.AppOrder _apporder) public pure returns (bytes32 apphash) +function frozenOf(address account) external view returns (uint256) ``` -### hash +### allowance ```solidity -function hash(struct IexecLibOrders_v5.DatasetOrder _datasetorder) public pure returns (bytes32 datasethash) +function allowance(address account, address spender) external view returns (uint256) ``` -### hash +### viewAccount ```solidity -function hash(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) public pure returns (bytes32 workerpoolhash) +function viewAccount(address account) external view returns (struct IexecLibCore_v5.Account) ``` -### hash +### token ```solidity -function hash(struct IexecLibOrders_v5.RequestOrder _requestorder) public pure returns (bytes32 requesthash) +function token() external view returns (address) ``` -### hash +### viewCategory ```solidity -function hash(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) public pure returns (bytes32) +function viewCategory(uint256 _catid) external view returns (struct IexecLibCore_v5.Category category) ``` -### hash +### countCategory ```solidity -function hash(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) public pure returns (bytes32) +function countCategory() external view returns (uint256 count) ``` -### hash +### appregistry ```solidity -function hash(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) public pure returns (bytes32) +function appregistry() external view returns (contract IRegistry) ``` -### hash +### datasetregistry ```solidity -function hash(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) public pure returns (bytes32) +function datasetregistry() external view returns (contract IRegistry) ``` -## PocoStorageLib - -### PocoStorage +### workerpoolregistry ```solidity -struct PocoStorage { - contract IRegistry m_appregistry; - contract IRegistry m_datasetregistry; - contract IRegistry m_workerpoolregistry; - contract IERC20 m_baseToken; - string m_name; - string m_symbol; - uint8 m_decimals; - uint256 m_totalSupply; - mapping(address => uint256) m_balances; - mapping(address => uint256) m_frozens; - mapping(address => mapping(address => uint256)) m_allowances; - bytes32 m_eip712DomainSeparator; - mapping(bytes32 => address) m_presigned; - mapping(bytes32 => uint256) m_consumed; - mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; - mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; - mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; - mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; - mapping(address => uint256) m_workerScores; - address m_teebroker; - uint256 m_callbackgas; - struct IexecLibCore_v5.Category[] m_categories; - contract IexecHubV3Interface m_v3_iexecHub; - mapping(address => bool) m_v3_scoreImported; - mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; -} +function workerpoolregistry() external view returns (contract IRegistry) ``` -## IRegistry - -### isRegistered +### teebroker ```solidity -function isRegistered(address _entry) external view returns (bool) +function teebroker() external view returns (address) ``` -## Registry - -### master +### callbackgas ```solidity -address master +function callbackgas() external view returns (uint256) ``` -### proxyCode +### viewDataset ```solidity -bytes proxyCode +function viewDataset(address dataset) external view returns (struct IexecLibCore_v5.DatasetInfo) ``` -### proxyCodeHash +### viewApp ```solidity -bytes32 proxyCodeHash +function viewApp(address app) external view returns (struct IexecLibCore_v5.AppInfo) ``` -### previous +### viewWorkerpool ```solidity -contract IRegistry previous +function viewWorkerpool(address workerpool) external view returns (struct IexecLibCore_v5.WorkerpoolInfo) ``` -### initialized +### contribution_deadline_ratio ```solidity -bool initialized +function contribution_deadline_ratio() external pure returns (uint256) ``` -### initialize +### reveal_deadline_ratio ```solidity -function initialize(address _previous) external +function reveal_deadline_ratio() external pure returns (uint256) ``` -### setBaseURI +### final_deadline_ratio ```solidity -function setBaseURI(string baseUri) external +function final_deadline_ratio() external pure returns (uint256) ``` -### baseURI +### workerpool_stake_ratio ```solidity -function baseURI() public view returns (string) +function workerpool_stake_ratio() external pure returns (uint256) ``` -_Added for retrocompatibility! - -Returns the base URI set via {setBaseURI}. This will be -automatically added as a prefix in {tokenURI} to each token's ID._ - -### isRegistered +### kitty_ratio ```solidity -function isRegistered(address _entry) external view returns (bool) +function kitty_ratio() external pure returns (uint256) ``` -### setName +### kitty_min ```solidity -function setName(address, string) external +function kitty_min() external pure returns (uint256) ``` -Sets the reverse registration name for a registry contract. - -_This functionality is supported only on Bellecour Sidechain, calls on other chains -will revert. The function is kept as nonpayable to maintain retrocompatibility with the -iExec SDK._ - -## RegistryEntry +### kitty_address -_Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +function kitty_address() external pure returns (address) +``` -### registry +### groupmember_purpose ```solidity -contract IRegistry registry +function groupmember_purpose() external pure returns (uint256) ``` -### owner +### eip712domain_separator ```solidity -function owner() public view returns (address) +function eip712domain_separator() external view returns (bytes32) ``` -### setName +## IexecPocoBoostAccessorsFacet + +Access to PoCo Boost tasks must be done with PoCo Classic `IexecPocoAccessors`. + +### viewDealBoost ```solidity -function setName(address, string) external +function viewDealBoost(bytes32 id) external view returns (struct IexecLibCore_v5.DealBoost deal) ``` -Sets the reverse registration name for a registry entry contract. +Get a deal created by PoCo Boost facet. + +#### Parameters -_This functionality is supported only on Bellecour Sidechain, calls on other chains -will revert. The function is kept as nonpayable to maintain retrocompatibility with the -iExec SDK._ +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | The ID of the deal. | -## App +## IexecPocoBoostFacet -_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +Works for deals with requested trust = 0. -### m_appName +### matchOrdersBoost ```solidity -string m_appName +function matchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) ``` -Members +This boost match orders is only compatible with trust <= 1. +The requester gets debited. -### m_appType +#### Parameters -```solidity -string m_appType -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The order signed by the application developer. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The order signed by the dataset provider. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The order signed by the workerpool manager. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The order signed by the requester. | -### m_appMultiaddr +#### Return Values -```solidity -bytes m_appMultiaddr -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| [0] | bytes32 | The ID of the deal. | -### m_appChecksum +### sponsorMatchOrdersBoost ```solidity -bytes32 m_appChecksum +function sponsorMatchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) ``` -### m_appMREnclave +Sponsor match orders boost for a requester. +Unlike the standard `matchOrdersBoost(..)` hook where the requester pays for +the deal, this current hook makes it possible for any `msg.sender` to pay for +a third party requester. -```solidity -bytes m_appMREnclave -``` +Be aware that anyone seeing a valid request order on the network +(via an off-chain public marketplace, via a `sponsorMatchOrdersBoost(..)` +pending transaction in the mempool or by any other means) might decide +to call the standard `matchOrdersBoost(..)` hook which will result in the +requester being debited instead. Therefore, such a front run would result +in a loss of some of the requester funds deposited in the iExec account +(a loss value equivalent to the price of the deal). -### initialize +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The app order. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The requester order. | + +### pushResultBoost ```solidity -function initialize(string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) public +function pushResultBoost(bytes32 dealId, uint256 index, bytes results, bytes resultsCallback, bytes authorizationSign, address enclaveChallenge, bytes enclaveSign) external ``` -Constructor +Accept results of a task computed by a worker during Boost workflow. -## AppRegistry +#### Parameters -_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +| Name | Type | Description | +| ---- | ---- | ----------- | +| dealId | bytes32 | The id of the target deal. | +| index | uint256 | The index of the target task of the deal. | +| results | bytes | The results of the task computed by the worker. | +| resultsCallback | bytes | The results of the task computed by the worker that will be forwarded as call data to the callback address set by the requester. | +| authorizationSign | bytes | The authorization signed by the scheduler. authorizing the worker to push a result. | +| enclaveChallenge | address | The enclave address which can produce enclave signature. | +| enclaveSign | bytes | The signature generated from the enclave. | -### constructor +### claimBoost ```solidity -constructor() public +function claimBoost(bytes32 dealId, uint256 index) external ``` -Constructor +Claim task to get a refund if task is not completed after deadline. -### createApp +#### Parameters -```solidity -function createApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external returns (contract App) -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| dealId | bytes32 | The ID of the deal. | +| index | uint256 | The index of the task. | -### internal_mintCreate +## IexecRelayFacet + +### broadcastAppOrder ```solidity -function internal_mintCreate(address _appOwner, bytes _args) external returns (address) +function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external ``` -### predictApp +### broadcastDatasetOrder ```solidity -function predictApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external view returns (contract App) +function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external ``` -## IApp - -### owner +### broadcastWorkerpoolOrder ```solidity -function owner() external view returns (address) +function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external ``` -### m_appName +### broadcastRequestOrder ```solidity -function m_appName() external view returns (string) +function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external ``` -### m_appType +## IexecLibOrders_v5 + +### EIP712DOMAIN_TYPEHASH ```solidity -function m_appType() external view returns (string) +bytes32 EIP712DOMAIN_TYPEHASH ``` -### m_appMultiaddr +### APPORDER_TYPEHASH ```solidity -function m_appMultiaddr() external view returns (bytes) +bytes32 APPORDER_TYPEHASH ``` -### m_appChecksum +### DATASETORDER_TYPEHASH ```solidity -function m_appChecksum() external view returns (bytes32) +bytes32 DATASETORDER_TYPEHASH ``` -### m_appMREnclave +### WORKERPOOLORDER_TYPEHASH ```solidity -function m_appMREnclave() external view returns (bytes) +bytes32 WORKERPOOLORDER_TYPEHASH ``` -## Dataset - -_Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### m_datasetName +### REQUESTORDER_TYPEHASH ```solidity -string m_datasetName +bytes32 REQUESTORDER_TYPEHASH ``` -Members - -### m_datasetMultiaddr +### APPORDEROPERATION_TYPEHASH ```solidity -bytes m_datasetMultiaddr +bytes32 APPORDEROPERATION_TYPEHASH ``` -### m_datasetChecksum +### DATASETORDEROPERATION_TYPEHASH ```solidity -bytes32 m_datasetChecksum +bytes32 DATASETORDEROPERATION_TYPEHASH ``` -### initialize +### WORKERPOOLORDEROPERATION_TYPEHASH ```solidity -function initialize(string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) public +bytes32 WORKERPOOLORDEROPERATION_TYPEHASH ``` -Constructor - -## DatasetRegistry +### REQUESTORDEROPERATION_TYPEHASH -_Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +bytes32 REQUESTORDEROPERATION_TYPEHASH +``` -### constructor +### OrderOperationEnum ```solidity -constructor() public +enum OrderOperationEnum { + SIGN, + CLOSE +} ``` -Constructor - -### createDataset +### EIP712Domain ```solidity -function createDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external returns (contract Dataset) +struct EIP712Domain { + string name; + string version; + uint256 chainId; + address verifyingContract; +} ``` -### internal_mintCreate +### AppOrder ```solidity -function internal_mintCreate(address _datasetOwner, bytes _args) external returns (address) +struct AppOrder { + address app; + uint256 appprice; + uint256 volume; + bytes32 tag; + address datasetrestrict; + address workerpoolrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -### predictDataset +### DatasetOrder ```solidity -function predictDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external view returns (contract Dataset) +struct DatasetOrder { + address dataset; + uint256 datasetprice; + uint256 volume; + bytes32 tag; + address apprestrict; + address workerpoolrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -## IDataset - -### owner +### WorkerpoolOrder ```solidity -function owner() external view returns (address) +struct WorkerpoolOrder { + address workerpool; + uint256 workerpoolprice; + uint256 volume; + bytes32 tag; + uint256 category; + uint256 trust; + address apprestrict; + address datasetrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -### m_datasetName +### RequestOrder ```solidity -function m_datasetName() external view returns (string) +struct RequestOrder { + address app; + uint256 appmaxprice; + address dataset; + uint256 datasetmaxprice; + address workerpool; + uint256 workerpoolmaxprice; + address requester; + uint256 volume; + bytes32 tag; + uint256 category; + uint256 trust; + address beneficiary; + address callback; + string params; + bytes32 salt; + bytes sign; +} ``` -### m_datasetMultiaddr +### AppOrderOperation ```solidity -function m_datasetMultiaddr() external view returns (bytes) +struct AppOrderOperation { + struct IexecLibOrders_v5.AppOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -### m_datasetChecksum +### DatasetOrderOperation ```solidity -function m_datasetChecksum() external view returns (bytes32) +struct DatasetOrderOperation { + struct IexecLibOrders_v5.DatasetOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -## Address - -## BaseUpgradeabilityProxy - -_This contract implements a proxy that allows to change the -implementation address to which it will delegate. -Such a change is called an implementation upgrade._ - -### Upgraded +### WorkerpoolOrderOperation ```solidity -event Upgraded(address implementation) +struct WorkerpoolOrderOperation { + struct IexecLibOrders_v5.WorkerpoolOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -_Emitted when the implementation is upgraded._ - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| implementation | address | Address of the new implementation. | - -## InitializableUpgradeabilityProxy - -_Extends BaseUpgradeabilityProxy with an initializer for initializing -implementation and init data._ - -### initialize +### RequestOrderOperation ```solidity -function initialize(address _logic, bytes _data) public payable +struct RequestOrderOperation { + struct IexecLibOrders_v5.RequestOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -_Contract initializer._ - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| _logic | address | Address of the initial implementation. | -| _data | bytes | Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. | - -## Proxy - -_Implements delegation of calls to other contracts, with proper -forwarding of return values and bubbling of failures. -It defines a fallback function that delegates all calls to the address -returned by the abstract _implementation() internal function._ - -### receive +### hash ```solidity -receive() external payable virtual +function hash(struct IexecLibOrders_v5.EIP712Domain _domain) public pure returns (bytes32 domainhash) ``` -_Receive function. -Implemented entirely in `_fallback`._ - -### fallback +### hash ```solidity -fallback() external payable +function hash(struct IexecLibOrders_v5.AppOrder _apporder) public pure returns (bytes32 apphash) ``` -_Fallback function. -Implemented entirely in `_fallback`._ - -## IWorkerpool - -### owner +### hash ```solidity -function owner() external view returns (address) +function hash(struct IexecLibOrders_v5.DatasetOrder _datasetorder) public pure returns (bytes32 datasethash) ``` -### m_workerpoolDescription +### hash ```solidity -function m_workerpoolDescription() external view returns (string) +function hash(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) public pure returns (bytes32 workerpoolhash) ``` -### m_schedulerRewardRatioPolicy +### hash ```solidity -function m_schedulerRewardRatioPolicy() external view returns (uint256) +function hash(struct IexecLibOrders_v5.RequestOrder _requestorder) public pure returns (bytes32 requesthash) ``` -### m_workerStakeRatioPolicy +### hash ```solidity -function m_workerStakeRatioPolicy() external view returns (uint256) +function hash(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) public pure returns (bytes32) ``` -## Workerpool - -_Referenced in the SDK with the current path `contracts/registries/workerpools/Workerpool.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### m_workerpoolDescription +### hash ```solidity -string m_workerpoolDescription +function hash(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) public pure returns (bytes32) ``` -Parameters - -### m_workerStakeRatioPolicy +### hash ```solidity -uint256 m_workerStakeRatioPolicy +function hash(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) public pure returns (bytes32) ``` -### m_schedulerRewardRatioPolicy +### hash ```solidity -uint256 m_schedulerRewardRatioPolicy +function hash(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) public pure returns (bytes32) ``` -### PolicyUpdate +## Registry + +### master ```solidity -event PolicyUpdate(uint256 oldWorkerStakeRatioPolicy, uint256 newWorkerStakeRatioPolicy, uint256 oldSchedulerRewardRatioPolicy, uint256 newSchedulerRewardRatioPolicy) +address master ``` -Events - -### initialize +### proxyCode ```solidity -function initialize(string _workerpoolDescription) public +bytes proxyCode ``` -Constructor - -### changePolicy +### proxyCodeHash ```solidity -function changePolicy(uint256 _newWorkerStakeRatioPolicy, uint256 _newSchedulerRewardRatioPolicy) external +bytes32 proxyCodeHash ``` -## WorkerpoolRegistry - -_Referenced in the SDK with the current path `contracts/registries/workerpools/WorkerpoolRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### constructor +### previous ```solidity -constructor() public +contract IRegistry previous ``` -Constructor - -### createWorkerpool +### initialized ```solidity -function createWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external returns (contract Workerpool) +bool initialized ``` -### internal_mintCreate +### initialize ```solidity -function internal_mintCreate(address _workerpoolOwner, bytes _args) external returns (address) +function initialize(address _previous) external ``` -### predictWorkerpool +### setBaseURI ```solidity -function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) +function setBaseURI(string baseUri) external ``` -## IexecCategoryManagerFacet - -### createCategory +### baseURI ```solidity -function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) +function baseURI() public view returns (string) ``` -Methods +_Added for retrocompatibility! -## IexecConfigurationFacet +Returns the base URI set via {setBaseURI}. This will be +automatically added as a prefix in {tokenURI} to each token's ID._ -### configure +### isRegistered ```solidity -function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external +function isRegistered(address _entry) external view returns (bool) ``` -### domain +### setName ```solidity -function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) +function setName(address, string) external ``` -### updateDomainSeparator +Sets the reverse registration name for a registry contract. -```solidity -function updateDomainSeparator() external -``` +_This functionality is supported only on Bellecour Sidechain, calls on other chains +will revert. The function is kept as nonpayable to maintain retrocompatibility with the +iExec SDK._ -### importScore +## RegistryEntry + +_Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### registry ```solidity -function importScore(address _worker) external +contract IRegistry registry ``` -### setTeeBroker +### owner ```solidity -function setTeeBroker(address _teebroker) external +function owner() public view returns (address) ``` -### setCallbackGas +### setName ```solidity -function setCallbackGas(uint256 _callbackgas) external +function setName(address, string) external ``` -## IexecERC20Core +Sets the reverse registration name for a registry entry contract. -## IexecERC20Facet +_This functionality is supported only on Bellecour Sidechain, calls on other chains +will revert. The function is kept as nonpayable to maintain retrocompatibility with the +iExec SDK._ -### transfer +## App + +_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### m_appName ```solidity -function transfer(address recipient, uint256 amount) external returns (bool) +string m_appName ``` -### approve +Members + +### m_appType ```solidity -function approve(address spender, uint256 value) external returns (bool) +string m_appType ``` -### approveAndCall +### m_appMultiaddr ```solidity -function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) +bytes m_appMultiaddr ``` -### transferFrom +### m_appChecksum ```solidity -function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) +bytes32 m_appChecksum ``` -### increaseAllowance +### m_appMREnclave ```solidity -function increaseAllowance(address spender, uint256 addedValue) external returns (bool) +bytes m_appMREnclave ``` -### decreaseAllowance +### initialize ```solidity -function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) +function initialize(string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) public ``` -## IexecEscrowNativeFacet +Constructor -### receive +## AppRegistry -```solidity -receive() external payable -``` +_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### fallback +### constructor ```solidity -fallback() external payable +constructor() public ``` -### deposit +Constructor + +### createApp ```solidity -function deposit() external payable returns (bool) +function createApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external returns (contract App) ``` -### depositFor +### internal_mintCreate ```solidity -function depositFor(address target) external payable returns (bool) +function internal_mintCreate(address _appOwner, bytes _args) external returns (address) ``` -### depositForArray +### predictApp ```solidity -function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) +function predictApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external view returns (contract App) ``` -### withdraw +## IApp + +### owner ```solidity -function withdraw(uint256 amount) external returns (bool) +function owner() external view returns (address) ``` -### withdrawTo +### m_appName ```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) +function m_appName() external view returns (string) ``` -### recover +### m_appType ```solidity -function recover() external returns (uint256) +function m_appType() external view returns (string) ``` -## IexecEscrowTokenFacet - -### receive +### m_appMultiaddr ```solidity -receive() external payable +function m_appMultiaddr() external view returns (bytes) ``` -### fallback +### m_appChecksum ```solidity -fallback() external payable +function m_appChecksum() external view returns (bytes32) ``` -### deposit +### m_appMREnclave ```solidity -function deposit(uint256 amount) external returns (bool) +function m_appMREnclave() external view returns (bytes) ``` -### depositFor +## Dataset -```solidity -function depositFor(uint256 amount, address target) external returns (bool) -``` +_Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### depositForArray +### m_datasetName ```solidity -function depositForArray(uint256[] amounts, address[] targets) external returns (bool) +string m_datasetName ``` -### withdraw +Members + +### m_datasetMultiaddr ```solidity -function withdraw(uint256 amount) external returns (bool) +bytes m_datasetMultiaddr ``` -### withdrawTo +### m_datasetChecksum ```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) +bytes32 m_datasetChecksum ``` -### recover +### initialize ```solidity -function recover() external returns (uint256) +function initialize(string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) public ``` -### receiveApproval +Constructor -```solidity -function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) -``` +## DatasetRegistry -## IexecOrderManagementFacet +_Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### manageAppOrder +### constructor ```solidity -function manageAppOrder(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) external +constructor() public ``` -### manageDatasetOrder +Constructor + +### createDataset ```solidity -function manageDatasetOrder(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) external +function createDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external returns (contract Dataset) ``` -### manageWorkerpoolOrder +### internal_mintCreate ```solidity -function manageWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) external +function internal_mintCreate(address _datasetOwner, bytes _args) external returns (address) ``` -### manageRequestOrder +### predictDataset ```solidity -function manageRequestOrder(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) external +function predictDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external view returns (contract Dataset) ``` -## IexecRelayFacet +## IDataset -### broadcastAppOrder +### owner ```solidity -function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external +function owner() external view returns (address) ``` -### broadcastDatasetOrder +### m_datasetName ```solidity -function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external +function m_datasetName() external view returns (string) ``` -### broadcastWorkerpoolOrder +### m_datasetMultiaddr ```solidity -function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external +function m_datasetMultiaddr() external view returns (bytes) ``` -### broadcastRequestOrder +### m_datasetChecksum ```solidity -function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external +function m_datasetChecksum() external view returns (bytes32) ``` -## IexecInterfaceNative +## Address -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in native mode. +## BaseUpgradeabilityProxy -_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +_This contract implements a proxy that allows to change the +implementation address to which it will delegate. +Such a change is called an implementation upgrade._ -## IexecInterfaceToken +### Upgraded -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in token mode. +```solidity +event Upgraded(address implementation) +``` -_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +_Emitted when the implementation is upgraded._ -## IexecInterfaceNativeABILegacy +#### Parameters -TODO: Remove this interface in the future when IexecInterfaceTokenABILegacy is removed. +| Name | Type | Description | +| ---- | ---- | ----------- | +| implementation | address | Address of the new implementation. | -## IexecInterfaceTokenABILegacy +## InitializableUpgradeabilityProxy -TODO: Remove this interface in the future. -Currently Used in the middleware: -https://github.com/iExecBlockchainComputing/iexec-commons-poco/blob/819cd008/generateContractWrappers#L7 +_Extends BaseUpgradeabilityProxy with an initializer for initializing +implementation and init data._ -### receive +### initialize ```solidity -receive() external payable +function initialize(address _logic, bytes _data) public payable ``` -### fallback +_Contract initializer._ -```solidity -fallback() external payable -``` +#### Parameters -## IexecEscrowTokenSwapFacet +| Name | Type | Description | +| ---- | ---- | ----------- | +| _logic | address | Address of the initial implementation. | +| _data | bytes | Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. | -### UniswapV2Router +## Proxy -```solidity -function UniswapV2Router() external view returns (contract IUniswapV2Router02) -``` +_Implements delegation of calls to other contracts, with proper +forwarding of return values and bubbling of failures. +It defines a fallback function that delegates all calls to the address +returned by the abstract _implementation() internal function._ -### estimateDepositEthSent +### receive ```solidity -function estimateDepositEthSent(uint256 eth) external view returns (uint256 token) +receive() external payable virtual ``` -### estimateDepositTokenWanted - -```solidity -function estimateDepositTokenWanted(uint256 token) external view returns (uint256 eth) -``` +_Receive function. +Implemented entirely in `_fallback`._ -### estimateWithdrawTokenSent +### fallback ```solidity -function estimateWithdrawTokenSent(uint256 token) external view returns (uint256 eth) +fallback() external payable ``` -### estimateWithdrawEthWanted +_Fallback function. +Implemented entirely in `_fallback`._ -```solidity -function estimateWithdrawEthWanted(uint256 eth) external view returns (uint256 token) -``` +## IWorkerpool -### receive +### owner ```solidity -receive() external payable +function owner() external view returns (address) ``` -### fallback +### m_workerpoolDescription ```solidity -fallback() external payable +function m_workerpoolDescription() external view returns (string) ``` -### depositEth +### m_schedulerRewardRatioPolicy ```solidity -function depositEth() external payable +function m_schedulerRewardRatioPolicy() external view returns (uint256) ``` -### depositEthFor +### m_workerStakeRatioPolicy ```solidity -function depositEthFor(address target) external payable +function m_workerStakeRatioPolicy() external view returns (uint256) ``` -### safeDepositEth +## Workerpool -```solidity -function safeDepositEth(uint256 minimum) external payable -``` +_Referenced in the SDK with the current path `contracts/registries/workerpools/Workerpool.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### safeDepositEthFor +### m_workerpoolDescription ```solidity -function safeDepositEthFor(uint256 minimum, address target) external payable +string m_workerpoolDescription ``` -### requestToken +Parameters + +### m_workerStakeRatioPolicy ```solidity -function requestToken(uint256 amount) external payable +uint256 m_workerStakeRatioPolicy ``` -### requestTokenFor +### m_schedulerRewardRatioPolicy ```solidity -function requestTokenFor(uint256 amount, address target) external payable +uint256 m_schedulerRewardRatioPolicy ``` -### withdrawEth +### PolicyUpdate ```solidity -function withdrawEth(uint256 amount) external +event PolicyUpdate(uint256 oldWorkerStakeRatioPolicy, uint256 newWorkerStakeRatioPolicy, uint256 oldSchedulerRewardRatioPolicy, uint256 newSchedulerRewardRatioPolicy) ``` -### withdrawEthTo +Events + +### initialize ```solidity -function withdrawEthTo(uint256 amount, address target) external +function initialize(string _workerpoolDescription) public ``` -### safeWithdrawEth +Constructor + +### changePolicy ```solidity -function safeWithdrawEth(uint256 amount, uint256 minimum) external +function changePolicy(uint256 _newWorkerStakeRatioPolicy, uint256 _newSchedulerRewardRatioPolicy) external ``` -### safeWithdrawEthTo +## WorkerpoolRegistry -```solidity -function safeWithdrawEthTo(uint256 amount, uint256 minimum, address target) external -``` +_Referenced in the SDK with the current path `contracts/registries/workerpools/WorkerpoolRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### matchOrdersWithEth +### constructor ```solidity -function matchOrdersWithEth(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) public payable returns (bytes32) +constructor() public ``` -## FacetBase +Constructor -_Every facet must inherit from this contract._ +### createWorkerpool -## PocoStorageLib +```solidity +function createWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external returns (contract Workerpool) +``` -### PocoStorage +### internal_mintCreate ```solidity -struct PocoStorage { - contract IRegistry m_appregistry; - contract IRegistry m_datasetregistry; - contract IRegistry m_workerpoolregistry; - contract IERC20 m_baseToken; - string m_name; - string m_symbol; - uint8 m_decimals; - uint256 m_totalSupply; - mapping(address => uint256) m_balances; - mapping(address => uint256) m_frozens; - mapping(address => mapping(address => uint256)) m_allowances; - bytes32 m_eip712DomainSeparator; - mapping(bytes32 => address) m_presigned; - mapping(bytes32 => uint256) m_consumed; - mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; - mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; - mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; - mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; - mapping(address => uint256) m_workerScores; - address m_teebroker; - uint256 m_callbackgas; - struct IexecLibCore_v5.Category[] m_categories; - address m_v3_iexecHub; - mapping(address => bool) m_v3_scoreImported; - mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; -} +function internal_mintCreate(address _workerpoolOwner, bytes _args) external returns (address) ``` -## IRegistry - -### isRegistered +### predictWorkerpool ```solidity -function isRegistered(address _entry) external view returns (bool) +function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) ``` From 4f69ec2a52100ffc6449e91cd8ead9c6b539eeaf Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Tue, 28 Oct 2025 16:42:41 +0100 Subject: [PATCH 26/77] fix: Add temporary migration checks in IexecERC20Core for backward compatibility --- contracts/facets/IexecERC20Core.sol | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/contracts/facets/IexecERC20Core.sol b/contracts/facets/IexecERC20Core.sol index cafc4bf67..02d531e5d 100644 --- a/contracts/facets/IexecERC20Core.sol +++ b/contracts/facets/IexecERC20Core.sol @@ -37,6 +37,16 @@ contract IexecERC20Core is IexecERC20Common, FacetBase { function _burn(address account, uint256 amount) internal { require(account != address(0), "ERC20: burn from the zero address"); PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); + // TEMPORARY MIGRATION FIX: Check balance to prevent underflow and revert without reason for backward compatibility + // TODO: Remove this in the next major version + if ($.m_balances[account] < amount) { + revert(); + } + // TEMPORARY MIGRATION FIX: Check totalSupply to prevent underflow and revert without reason for backward compatibility + // TODO: Remove this in the next major version + if ($.m_totalSupply < amount) { + revert(); + } $.m_totalSupply = $.m_totalSupply - amount; $.m_balances[account] = $.m_balances[account] - amount; emit Transfer(account, address(0), amount); From b011731e52d483789c949f16d107eea7cb75da27 Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Tue, 28 Oct 2025 17:06:51 +0100 Subject: [PATCH 27/77] fix: Add missing newlines at the end of JSON files and update import statements in test files for consistency --- docs/solidity/index.md | 852 +++++++++++------- test/000_fullchain-boost.test.ts | 6 +- test/byContract/registries/registries.test.ts | 4 +- 3 files changed, 510 insertions(+), 352 deletions(-) diff --git a/docs/solidity/index.md b/docs/solidity/index.md index 19ffccef1..ee8dc0135 100644 --- a/docs/solidity/index.md +++ b/docs/solidity/index.md @@ -1,483 +1,253 @@ # Solidity API -## IexecERC20Core - -## IexecERC20Facet - -### transfer - -```solidity -function transfer(address recipient, uint256 amount) external returns (bool) -``` - -### approve - -```solidity -function approve(address spender, uint256 value) external returns (bool) -``` - -### approveAndCall - -```solidity -function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) -``` - -### transferFrom - -```solidity -function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) -``` - -### increaseAllowance - -```solidity -function increaseAllowance(address spender, uint256 addedValue) external returns (bool) -``` - -### decreaseAllowance - -```solidity -function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) -``` - -## IexecEscrowNativeFacet - -### receive - -```solidity -receive() external payable -``` - -### fallback - -```solidity -fallback() external payable -``` - -### deposit - -```solidity -function deposit() external payable returns (bool) -``` - -### depositFor - -```solidity -function depositFor(address target) external payable returns (bool) -``` - -### depositForArray - -```solidity -function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) -``` - -### withdraw - -```solidity -function withdraw(uint256 amount) external returns (bool) -``` - -### withdrawTo - -```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) -``` - -### recover +## IexecInterfaceNative -```solidity -function recover() external returns (uint256) -``` +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in native mode. -## IexecEscrowTokenFacet +_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### receive +## IexecInterfaceToken -```solidity -receive() external payable -``` +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in token mode. -### fallback +_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -```solidity -fallback() external payable -``` +## IexecCategoryManagerFacet -### deposit +### createCategory ```solidity -function deposit(uint256 amount) external returns (bool) +function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) ``` -### depositFor +Methods -```solidity -function depositFor(uint256 amount, address target) external returns (bool) -``` +## IexecConfigurationExtraFacet -### depositForArray +### changeRegistries ```solidity -function depositForArray(uint256[] amounts, address[] targets) external returns (bool) +function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external ``` -### withdraw - -```solidity -function withdraw(uint256 amount) external returns (bool) -``` +## IexecConfigurationFacet -### withdrawTo +### configure ```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) +function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external ``` -### recover +### domain ```solidity -function recover() external returns (uint256) +function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) ``` -### receiveApproval +### updateDomainSeparator ```solidity -function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) +function updateDomainSeparator() external ``` -## IexecLibCore_v5 - -### Account - -Tools +### importScore ```solidity -struct Account { - uint256 stake; - uint256 locked; -} +function importScore(address _worker) external ``` -### Category +### setTeeBroker ```solidity -struct Category { - string name; - string description; - uint256 workClockTimeRef; -} +function setTeeBroker(address _teebroker) external ``` -### DatasetInfo +### setCallbackGas ```solidity -struct DatasetInfo { - address owner; - string m_datasetName; - bytes m_datasetMultiaddr; - bytes32 m_datasetChecksum; -} +function setCallbackGas(uint256 _callbackgas) external ``` -### AppInfo +## IexecERC20Core -```solidity -struct AppInfo { - address owner; - string m_appName; - string m_appType; - bytes m_appMultiaddr; - bytes32 m_appChecksum; - bytes m_appMREnclave; -} -``` +## IexecERC20Facet -### WorkerpoolInfo +### transfer ```solidity -struct WorkerpoolInfo { - address owner; - string m_workerpoolDescription; - uint256 m_workerStakeRatioPolicy; - uint256 m_schedulerRewardRatioPolicy; -} +function transfer(address recipient, uint256 amount) external returns (bool) ``` -### Resource - -Clerk - Deals +### approve ```solidity -struct Resource { - address pointer; - address owner; - uint256 price; -} +function approve(address spender, uint256 value) external returns (bool) ``` -### Deal +### approveAndCall ```solidity -struct Deal { - struct IexecLibCore_v5.Resource app; - struct IexecLibCore_v5.Resource dataset; - struct IexecLibCore_v5.Resource workerpool; - uint256 trust; - uint256 category; - bytes32 tag; - address requester; - address beneficiary; - address callback; - string params; - uint256 startTime; - uint256 botFirst; - uint256 botSize; - uint256 workerStake; - uint256 schedulerRewardRatio; - address sponsor; -} +function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) ``` -### DealBoost - -Simplified deals for PoCo Boost module. +### transferFrom ```solidity -struct DealBoost { - address appOwner; - uint96 appPrice; - address datasetOwner; - uint96 datasetPrice; - address workerpoolOwner; - uint96 workerpoolPrice; - address requester; - uint96 workerReward; - address callback; - uint40 deadline; - uint16 botFirst; - uint16 botSize; - bytes3 shortTag; - address sponsor; -} +function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) ``` -### TaskStatusEnum - -Tasks +### increaseAllowance ```solidity -enum TaskStatusEnum { - UNSET, - ACTIVE, - REVEALING, - COMPLETED, - FAILED -} +function increaseAllowance(address spender, uint256 addedValue) external returns (bool) ``` -### Task +### decreaseAllowance ```solidity -struct Task { - enum IexecLibCore_v5.TaskStatusEnum status; - bytes32 dealid; - uint256 idx; - uint256 timeref; - uint256 contributionDeadline; - uint256 revealDeadline; - uint256 finalDeadline; - bytes32 consensusValue; - uint256 revealCounter; - uint256 winnerCounter; - address[] contributors; - bytes32 resultDigest; - bytes results; - uint256 resultsTimestamp; - bytes resultsCallback; -} +function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) ``` -### Consensus +## IexecEscrow -Consensus +### Transfer ```solidity -struct Consensus { - mapping(bytes32 => uint256) group; - uint256 total; -} +event Transfer(address from, address to, uint256 value) ``` -### ContributionStatusEnum - -Consensus +### Lock ```solidity -enum ContributionStatusEnum { - UNSET, - CONTRIBUTED, - PROVED, - REJECTED -} +event Lock(address owner, uint256 amount) ``` -### Contribution +### Unlock ```solidity -struct Contribution { - enum IexecLibCore_v5.ContributionStatusEnum status; - bytes32 resultHash; - bytes32 resultSeal; - address enclaveChallenge; - uint256 weight; -} +event Unlock(address owner, uint256 amount) ``` -## PocoStorageLib - -### PocoStorage +### Reward ```solidity -struct PocoStorage { - contract IRegistry m_appregistry; - contract IRegistry m_datasetregistry; - contract IRegistry m_workerpoolregistry; - contract IERC20 m_baseToken; - string m_name; - string m_symbol; - uint8 m_decimals; - uint256 m_totalSupply; - mapping(address => uint256) m_balances; - mapping(address => uint256) m_frozens; - mapping(address => mapping(address => uint256)) m_allowances; - bytes32 m_eip712DomainSeparator; - mapping(bytes32 => address) m_presigned; - mapping(bytes32 => uint256) m_consumed; - mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; - mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; - mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; - mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; - mapping(address => uint256) m_workerScores; - address m_teebroker; - uint256 m_callbackgas; - struct IexecLibCore_v5.Category[] m_categories; - contract IexecHubV3Interface m_v3_iexecHub; - mapping(address => bool) m_v3_scoreImported; - mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; -} +event Reward(address owner, uint256 amount, bytes32 ref) ``` -## IRegistry - -### isRegistered +### Seize ```solidity -function isRegistered(address _entry) external view returns (bool) +event Seize(address owner, uint256 amount, bytes32 ref) ``` -## IexecInterfaceNative +## IexecEscrowNativeFacet -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in native mode. +### receive -_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +receive() external payable +``` -## IexecInterfaceToken +### fallback -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in token mode. +```solidity +fallback() external payable +``` -_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +### deposit -## IexecCategoryManagerFacet +```solidity +function deposit() external payable returns (bool) +``` -### createCategory +### depositFor ```solidity -function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) +function depositFor(address target) external payable returns (bool) ``` -Methods +### depositForArray -## IexecConfigurationExtraFacet +```solidity +function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) +``` -### changeRegistries +### withdraw ```solidity -function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external +function withdraw(uint256 amount) external returns (bool) ``` -## IexecConfigurationFacet - -### configure +### withdrawTo ```solidity -function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external +function withdrawTo(uint256 amount, address target) external returns (bool) ``` -### domain +### recover ```solidity -function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) +function recover() external returns (uint256) ``` -### updateDomainSeparator +## IexecEscrowTokenFacet + +### receive ```solidity -function updateDomainSeparator() external +receive() external payable ``` -### importScore +### fallback ```solidity -function importScore(address _worker) external +fallback() external payable ``` -### setTeeBroker +### deposit ```solidity -function setTeeBroker(address _teebroker) external +function deposit(uint256 amount) external returns (bool) ``` -### setCallbackGas +### depositFor ```solidity -function setCallbackGas(uint256 _callbackgas) external +function depositFor(uint256 amount, address target) external returns (bool) ``` -## IexecEscrow - -### Transfer +### depositForArray ```solidity -event Transfer(address from, address to, uint256 value) +function depositForArray(uint256[] amounts, address[] targets) external returns (bool) ``` -### Lock +### withdraw ```solidity -event Lock(address owner, uint256 amount) +function withdraw(uint256 amount) external returns (bool) ``` -### Unlock +### withdrawTo ```solidity -event Unlock(address owner, uint256 amount) +function withdrawTo(uint256 amount, address target) external returns (bool) ``` -### Reward +### recover ```solidity -event Reward(address owner, uint256 amount, bytes32 ref) +function recover() external returns (uint256) ``` -### Seize +### receiveApproval ```solidity -event Seize(address owner, uint256 amount, bytes32 ref) +function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) ``` ## IexecOrderManagementFacet @@ -1019,45 +789,233 @@ Accept results of a task computed by a worker during Boost workflow. | enclaveChallenge | address | The enclave address which can produce enclave signature. | | enclaveSign | bytes | The signature generated from the enclave. | -### claimBoost +### claimBoost + +```solidity +function claimBoost(bytes32 dealId, uint256 index) external +``` + +Claim task to get a refund if task is not completed after deadline. + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| dealId | bytes32 | The ID of the deal. | +| index | uint256 | The index of the task. | + +## IexecRelayFacet + +### broadcastAppOrder + +```solidity +function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external +``` + +### broadcastDatasetOrder + +```solidity +function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external +``` + +### broadcastWorkerpoolOrder + +```solidity +function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external +``` + +### broadcastRequestOrder + +```solidity +function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external +``` + +## IexecLibCore_v5 + +### Account + +Tools + +```solidity +struct Account { + uint256 stake; + uint256 locked; +} +``` + +### Category + +```solidity +struct Category { + string name; + string description; + uint256 workClockTimeRef; +} +``` + +### DatasetInfo + +```solidity +struct DatasetInfo { + address owner; + string m_datasetName; + bytes m_datasetMultiaddr; + bytes32 m_datasetChecksum; +} +``` + +### AppInfo + +```solidity +struct AppInfo { + address owner; + string m_appName; + string m_appType; + bytes m_appMultiaddr; + bytes32 m_appChecksum; + bytes m_appMREnclave; +} +``` + +### WorkerpoolInfo + +```solidity +struct WorkerpoolInfo { + address owner; + string m_workerpoolDescription; + uint256 m_workerStakeRatioPolicy; + uint256 m_schedulerRewardRatioPolicy; +} +``` + +### Resource + +Clerk - Deals + +```solidity +struct Resource { + address pointer; + address owner; + uint256 price; +} +``` + +### Deal + +```solidity +struct Deal { + struct IexecLibCore_v5.Resource app; + struct IexecLibCore_v5.Resource dataset; + struct IexecLibCore_v5.Resource workerpool; + uint256 trust; + uint256 category; + bytes32 tag; + address requester; + address beneficiary; + address callback; + string params; + uint256 startTime; + uint256 botFirst; + uint256 botSize; + uint256 workerStake; + uint256 schedulerRewardRatio; + address sponsor; +} +``` + +### DealBoost + +Simplified deals for PoCo Boost module. ```solidity -function claimBoost(bytes32 dealId, uint256 index) external +struct DealBoost { + address appOwner; + uint96 appPrice; + address datasetOwner; + uint96 datasetPrice; + address workerpoolOwner; + uint96 workerpoolPrice; + address requester; + uint96 workerReward; + address callback; + uint40 deadline; + uint16 botFirst; + uint16 botSize; + bytes3 shortTag; + address sponsor; +} ``` -Claim task to get a refund if task is not completed after deadline. - -#### Parameters +### TaskStatusEnum -| Name | Type | Description | -| ---- | ---- | ----------- | -| dealId | bytes32 | The ID of the deal. | -| index | uint256 | The index of the task. | +Tasks -## IexecRelayFacet +```solidity +enum TaskStatusEnum { + UNSET, + ACTIVE, + REVEALING, + COMPLETED, + FAILED +} +``` -### broadcastAppOrder +### Task ```solidity -function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external +struct Task { + enum IexecLibCore_v5.TaskStatusEnum status; + bytes32 dealid; + uint256 idx; + uint256 timeref; + uint256 contributionDeadline; + uint256 revealDeadline; + uint256 finalDeadline; + bytes32 consensusValue; + uint256 revealCounter; + uint256 winnerCounter; + address[] contributors; + bytes32 resultDigest; + bytes results; + uint256 resultsTimestamp; + bytes resultsCallback; +} ``` -### broadcastDatasetOrder +### Consensus + +Consensus ```solidity -function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external +struct Consensus { + mapping(bytes32 => uint256) group; + uint256 total; +} ``` -### broadcastWorkerpoolOrder +### ContributionStatusEnum + +Consensus ```solidity -function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external +enum ContributionStatusEnum { + UNSET, + CONTRIBUTED, + PROVED, + REJECTED +} ``` -### broadcastRequestOrder +### Contribution ```solidity -function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external +struct Contribution { + enum IexecLibCore_v5.ContributionStatusEnum status; + bytes32 resultHash; + bytes32 resultSeal; + address enclaveChallenge; + uint256 weight; +} ``` ## IexecLibOrders_v5 @@ -1303,6 +1261,48 @@ function hash(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorder function hash(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) public pure returns (bytes32) ``` +## PocoStorageLib + +### PocoStorage + +```solidity +struct PocoStorage { + contract IRegistry m_appregistry; + contract IRegistry m_datasetregistry; + contract IRegistry m_workerpoolregistry; + contract IERC20 m_baseToken; + string m_name; + string m_symbol; + uint8 m_decimals; + uint256 m_totalSupply; + mapping(address => uint256) m_balances; + mapping(address => uint256) m_frozens; + mapping(address => mapping(address => uint256)) m_allowances; + bytes32 m_eip712DomainSeparator; + mapping(bytes32 => address) m_presigned; + mapping(bytes32 => uint256) m_consumed; + mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; + mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; + mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; + mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; + mapping(address => uint256) m_workerScores; + address m_teebroker; + uint256 m_callbackgas; + struct IexecLibCore_v5.Category[] m_categories; + contract IexecHubV3Interface m_v3_iexecHub; + mapping(address => bool) m_v3_scoreImported; + mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; +} +``` + +## IRegistry + +### isRegistered + +```solidity +function isRegistered(address _entry) external view returns (bool) +``` + ## Registry ### master @@ -1780,3 +1780,159 @@ function internal_mintCreate(address _workerpoolOwner, bytes _args) external ret function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) ``` +## FacetBase + +_Every facet must inherit from this contract._ + +## PocoStorageLib + +### PocoStorage + +```solidity +struct PocoStorage { + contract IRegistry m_appregistry; + contract IRegistry m_datasetregistry; + contract IRegistry m_workerpoolregistry; + contract IERC20 m_baseToken; + string m_name; + string m_symbol; + uint8 m_decimals; + uint256 m_totalSupply; + mapping(address => uint256) m_balances; + mapping(address => uint256) m_frozens; + mapping(address => mapping(address => uint256)) m_allowances; + bytes32 m_eip712DomainSeparator; + mapping(bytes32 => address) m_presigned; + mapping(bytes32 => uint256) m_consumed; + mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; + mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; + mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; + mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; + mapping(address => uint256) m_workerScores; + address m_teebroker; + uint256 m_callbackgas; + struct IexecLibCore_v5.Category[] m_categories; + address m_v3_iexecHub; + mapping(address => bool) m_v3_scoreImported; + mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; +} +``` + +## IRegistry + +### isRegistered + +```solidity +function isRegistered(address _entry) external view returns (bool) +``` + +## IexecEscrowTokenSwapFacet + +### UniswapV2Router + +```solidity +function UniswapV2Router() external view returns (contract IUniswapV2Router02) +``` + +### estimateDepositEthSent + +```solidity +function estimateDepositEthSent(uint256 eth) external view returns (uint256 token) +``` + +### estimateDepositTokenWanted + +```solidity +function estimateDepositTokenWanted(uint256 token) external view returns (uint256 eth) +``` + +### estimateWithdrawTokenSent + +```solidity +function estimateWithdrawTokenSent(uint256 token) external view returns (uint256 eth) +``` + +### estimateWithdrawEthWanted + +```solidity +function estimateWithdrawEthWanted(uint256 eth) external view returns (uint256 token) +``` + +### receive + +```solidity +receive() external payable +``` + +### fallback + +```solidity +fallback() external payable +``` + +### depositEth + +```solidity +function depositEth() external payable +``` + +### depositEthFor + +```solidity +function depositEthFor(address target) external payable +``` + +### safeDepositEth + +```solidity +function safeDepositEth(uint256 minimum) external payable +``` + +### safeDepositEthFor + +```solidity +function safeDepositEthFor(uint256 minimum, address target) external payable +``` + +### requestToken + +```solidity +function requestToken(uint256 amount) external payable +``` + +### requestTokenFor + +```solidity +function requestTokenFor(uint256 amount, address target) external payable +``` + +### withdrawEth + +```solidity +function withdrawEth(uint256 amount) external +``` + +### withdrawEthTo + +```solidity +function withdrawEthTo(uint256 amount, address target) external +``` + +### safeWithdrawEth + +```solidity +function safeWithdrawEth(uint256 amount, uint256 minimum) external +``` + +### safeWithdrawEthTo + +```solidity +function safeWithdrawEthTo(uint256 amount, uint256 minimum, address target) external +``` + +### matchOrdersWithEth + +```solidity +function matchOrdersWithEth(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) public payable returns (bytes32) +``` + diff --git a/test/000_fullchain-boost.test.ts b/test/000_fullchain-boost.test.ts index 16956acd4..340728818 100644 --- a/test/000_fullchain-boost.test.ts +++ b/test/000_fullchain-boost.test.ts @@ -7,6 +7,7 @@ import { expect } from 'chai'; import { TypedDataDomain } from 'ethers'; import hre from 'hardhat'; import { + IWorkerpool__factory, IexecInterfaceNative, IexecInterfaceNative__factory, IexecOrderManagement__factory, @@ -14,7 +15,6 @@ import { IexecPocoBoostFacet, IexecPocoBoostFacet__factory, TestClient__factory, - WorkerpoolInterface__factory, } from '../typechain'; import * as constants from '../utils/constants'; import { TAG_TEE } from '../utils/constants'; @@ -204,7 +204,7 @@ describe('IexecPocoBoostFacet (IT)', function () { expect(deal.workerpoolOwner).to.be.equal(scheduler.address); expect(deal.workerpoolPrice).to.be.equal(workerpoolPrice); expect(deal.requester).to.be.equal(requester.address); - const schedulerRewardRatio = await WorkerpoolInterface__factory.connect( + const schedulerRewardRatio = await IWorkerpool__factory.connect( workerpoolAddress, anyone, ).m_schedulerRewardRatioPolicy(); @@ -369,7 +369,7 @@ describe('IexecPocoBoostFacet (IT)', function () { expect(deal.workerpoolPrice).to.be.equal(workerpoolPrice); expect(deal.requester).to.be.equal(requester.address); expect(deal.sponsor).to.be.equal(sponsor.address); - const schedulerRewardRatio = await WorkerpoolInterface__factory.connect( + const schedulerRewardRatio = await IWorkerpool__factory.connect( workerpoolAddress, anyone, ).m_schedulerRewardRatioPolicy(); diff --git a/test/byContract/registries/registries.test.ts b/test/byContract/registries/registries.test.ts index 96f4837d5..867b44b00 100644 --- a/test/byContract/registries/registries.test.ts +++ b/test/byContract/registries/registries.test.ts @@ -15,11 +15,13 @@ import { Dataset__factory, IexecInterfaceNative, IexecInterfaceNative__factory, - InitializableUpgradeabilityProxy__factory, WorkerpoolRegistry, WorkerpoolRegistry__factory, Workerpool__factory, } from '../../../typechain'; +//import the correct InitializableUpgradeabilityProxy__factory from the local registries proxy instead of @iexec/solidity +//TODO: merge with the previous import this when @iexec/solidity will be removed +import { InitializableUpgradeabilityProxy__factory } from '../../../typechain/factories/contracts/registries/proxy/InitializableUpgradeabilityProxy__factory'; import config from '../../../utils/config'; import { MULTIADDR_BYTES } from '../../../utils/constants'; import { getIexecAccounts } from '../../../utils/poco-tools'; From 2cce4c75498224af170da975621127e8954abe77 Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Tue, 28 Oct 2025 17:19:36 +0100 Subject: [PATCH 28/77] fix: Reorder import statements in test file for consistency and clarity --- .../registries/apps/AppRegistry.json | 24 - .../registries/datasets/DatasetRegistry.json | 24 - .../workerpools/WorkerpoolRegistry.json | 24 - contracts/registries/apps/AppRegistry.sol | 25 +- .../registries/datasets/DatasetRegistry.sol | 26 +- .../workerpools/WorkerpoolRegistry.sol | 19 +- docs/solidity/index.md | 1826 ++++++++--------- 7 files changed, 935 insertions(+), 1033 deletions(-) diff --git a/abis/contracts/registries/apps/AppRegistry.json b/abis/contracts/registries/apps/AppRegistry.json index bd3eb7134..035e3ccc4 100644 --- a/abis/contracts/registries/apps/AppRegistry.json +++ b/abis/contracts/registries/apps/AppRegistry.json @@ -409,30 +409,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "_appOwner", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_args", - "type": "bytes" - } - ], - "name": "internal_mintCreate", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { diff --git a/abis/contracts/registries/datasets/DatasetRegistry.json b/abis/contracts/registries/datasets/DatasetRegistry.json index a46311fa0..883c7164f 100644 --- a/abis/contracts/registries/datasets/DatasetRegistry.json +++ b/abis/contracts/registries/datasets/DatasetRegistry.json @@ -399,30 +399,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "_datasetOwner", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_args", - "type": "bytes" - } - ], - "name": "internal_mintCreate", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { diff --git a/abis/contracts/registries/workerpools/WorkerpoolRegistry.json b/abis/contracts/registries/workerpools/WorkerpoolRegistry.json index 05ccc58ad..799b97230 100644 --- a/abis/contracts/registries/workerpools/WorkerpoolRegistry.json +++ b/abis/contracts/registries/workerpools/WorkerpoolRegistry.json @@ -389,30 +389,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "_workerpoolOwner", - "type": "address" - }, - { - "internalType": "bytes", - "name": "_args", - "type": "bytes" - } - ], - "name": "internal_mintCreate", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" - } - ], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { diff --git a/contracts/registries/apps/AppRegistry.sol b/contracts/registries/apps/AppRegistry.sol index 22953f2c6..8801065ba 100644 --- a/contracts/registries/apps/AppRegistry.sol +++ b/contracts/registries/apps/AppRegistry.sol @@ -45,22 +45,23 @@ contract AppRegistry is Registry { bytes32 _appChecksum, bytes calldata _appMREnclave ) external returns (App) { - // TEMPORARY MIGRATION FIX: Catch Create2 custom error and throw string error for backward compatibility + bytes memory initializer = encodeInitializer( + _appName, + _appType, + _appMultiaddr, + _appChecksum, + _appMREnclave + ); + address entry = _mintPredict(_appOwner, initializer); + + // TEMPORARY MIGRATION FIX: Check if contract already exists to revert without custom error for backward compatibility // TODO: Remove this in the next major version - try - this.internal_mintCreate( - _appOwner, - encodeInitializer(_appName, _appType, _appMultiaddr, _appChecksum, _appMREnclave) - ) - returns (address entry) { - return App(entry); - } catch { + if (entry.code.length > 0) { revert("Create2: Failed on deploy"); } - } - function internal_mintCreate(address _appOwner, bytes memory _args) external returns (address) { - return _mintCreate(_appOwner, _args); + _mintCreate(_appOwner, initializer); + return App(entry); } function predictApp( diff --git a/contracts/registries/datasets/DatasetRegistry.sol b/contracts/registries/datasets/DatasetRegistry.sol index 2e53917c0..ecdb56c7a 100644 --- a/contracts/registries/datasets/DatasetRegistry.sol +++ b/contracts/registries/datasets/DatasetRegistry.sol @@ -41,25 +41,21 @@ contract DatasetRegistry is Registry { bytes calldata _datasetMultiaddr, bytes32 _datasetChecksum ) external returns (Dataset) { - // TEMPORARY MIGRATION FIX: Catch Create2 custom error and throw string error for backward compatibility + bytes memory initializer = encodeInitializer( + _datasetName, + _datasetMultiaddr, + _datasetChecksum + ); + address entry = _mintPredict(_datasetOwner, initializer); + + // TEMPORARY MIGRATION FIX: Check if contract already exists to revert without custom error for backward compatibility // TODO: Remove this in the next major version - try - this.internal_mintCreate( - _datasetOwner, - encodeInitializer(_datasetName, _datasetMultiaddr, _datasetChecksum) - ) - returns (address entry) { - return Dataset(entry); - } catch { + if (entry.code.length > 0) { revert("Create2: Failed on deploy"); } - } - function internal_mintCreate( - address _datasetOwner, - bytes memory _args - ) external returns (address) { - return _mintCreate(_datasetOwner, _args); + _mintCreate(_datasetOwner, initializer); + return Dataset(entry); } function predictDataset( diff --git a/contracts/registries/workerpools/WorkerpoolRegistry.sol b/contracts/registries/workerpools/WorkerpoolRegistry.sol index 3c9b01f03..38e46efce 100644 --- a/contracts/registries/workerpools/WorkerpoolRegistry.sol +++ b/contracts/registries/workerpools/WorkerpoolRegistry.sol @@ -31,22 +31,17 @@ contract WorkerpoolRegistry is Registry { address _workerpoolOwner, string calldata _workerpoolDescription ) external returns (Workerpool) { - // TEMPORARY MIGRATION FIX: Catch Create2 custom error and throw string error for backward compatibility + bytes memory initializer = encodeInitializer(_workerpoolDescription); + address entry = _mintPredict(_workerpoolOwner, initializer); + + // TEMPORARY MIGRATION FIX: Check if contract already exists to revert without custom error for backward compatibility // TODO: Remove this in the next major version - try - this.internal_mintCreate(_workerpoolOwner, encodeInitializer(_workerpoolDescription)) - returns (address entry) { - return Workerpool(entry); - } catch { + if (entry.code.length > 0) { revert("Create2: Failed on deploy"); } - } - function internal_mintCreate( - address _workerpoolOwner, - bytes memory _args - ) external returns (address) { - return _mintCreate(_workerpoolOwner, _args); + _mintCreate(_workerpoolOwner, initializer); + return Workerpool(entry); } function predictWorkerpool( diff --git a/docs/solidity/index.md b/docs/solidity/index.md index ee8dc0135..67ede4475 100644 --- a/docs/solidity/index.md +++ b/docs/solidity/index.md @@ -1,761 +1,749 @@ # Solidity API -## IexecInterfaceNative - -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in native mode. - -_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -## IexecInterfaceToken +## IRegistry -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in token mode. +### isRegistered -_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +function isRegistered(address _entry) external view returns (bool) +``` -## IexecCategoryManagerFacet +## Registry -### createCategory +### master ```solidity -function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) +address master ``` -Methods - -## IexecConfigurationExtraFacet - -### changeRegistries +### proxyCode ```solidity -function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external +bytes proxyCode ``` -## IexecConfigurationFacet - -### configure +### proxyCodeHash ```solidity -function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external +bytes32 proxyCodeHash ``` -### domain +### previous ```solidity -function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) +contract IRegistry previous ``` -### updateDomainSeparator +### initialized ```solidity -function updateDomainSeparator() external +bool initialized ``` -### importScore +### initialize ```solidity -function importScore(address _worker) external +function initialize(address _previous) external ``` -### setTeeBroker +### setBaseURI ```solidity -function setTeeBroker(address _teebroker) external +function setBaseURI(string baseUri) external ``` -### setCallbackGas +### baseURI ```solidity -function setCallbackGas(uint256 _callbackgas) external +function baseURI() public view returns (string) ``` -## IexecERC20Core +_Added for retrocompatibility! -## IexecERC20Facet +Returns the base URI set via {setBaseURI}. This will be +automatically added as a prefix in {tokenURI} to each token's ID._ -### transfer +### isRegistered ```solidity -function transfer(address recipient, uint256 amount) external returns (bool) +function isRegistered(address _entry) external view returns (bool) ``` -### approve +### setName ```solidity -function approve(address spender, uint256 value) external returns (bool) +function setName(address, string) external ``` -### approveAndCall +Sets the reverse registration name for a registry contract. -```solidity -function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) -``` +_This functionality is supported only on Bellecour Sidechain, calls on other chains +will revert. The function is kept as nonpayable to maintain retrocompatibility with the +iExec SDK._ -### transferFrom +## RegistryEntry + +_Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### registry ```solidity -function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) +contract IRegistry registry ``` -### increaseAllowance +### owner ```solidity -function increaseAllowance(address spender, uint256 addedValue) external returns (bool) +function owner() public view returns (address) ``` -### decreaseAllowance +### setName ```solidity -function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) +function setName(address, string) external ``` -## IexecEscrow +Sets the reverse registration name for a registry entry contract. -### Transfer +_This functionality is supported only on Bellecour Sidechain, calls on other chains +will revert. The function is kept as nonpayable to maintain retrocompatibility with the +iExec SDK._ -```solidity -event Transfer(address from, address to, uint256 value) -``` +## App -### Lock +_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### m_appName ```solidity -event Lock(address owner, uint256 amount) +string m_appName ``` -### Unlock +Members + +### m_appType ```solidity -event Unlock(address owner, uint256 amount) +string m_appType ``` -### Reward +### m_appMultiaddr ```solidity -event Reward(address owner, uint256 amount, bytes32 ref) +bytes m_appMultiaddr ``` -### Seize +### m_appChecksum ```solidity -event Seize(address owner, uint256 amount, bytes32 ref) +bytes32 m_appChecksum ``` -## IexecEscrowNativeFacet - -### receive +### m_appMREnclave ```solidity -receive() external payable +bytes m_appMREnclave ``` -### fallback +### initialize ```solidity -fallback() external payable +function initialize(string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) public ``` -### deposit +Constructor -```solidity -function deposit() external payable returns (bool) -``` +## AppRegistry -### depositFor +_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### constructor ```solidity -function depositFor(address target) external payable returns (bool) +constructor() public ``` -### depositForArray +Constructor + +### createApp ```solidity -function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) +function createApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external returns (contract App) ``` -### withdraw +### predictApp ```solidity -function withdraw(uint256 amount) external returns (bool) +function predictApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external view returns (contract App) ``` -### withdrawTo +## Dataset -```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) -``` +_Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### recover +### m_datasetName ```solidity -function recover() external returns (uint256) +string m_datasetName ``` -## IexecEscrowTokenFacet +Members -### receive +### m_datasetMultiaddr ```solidity -receive() external payable +bytes m_datasetMultiaddr ``` -### fallback +### m_datasetChecksum ```solidity -fallback() external payable +bytes32 m_datasetChecksum ``` -### deposit +### initialize ```solidity -function deposit(uint256 amount) external returns (bool) +function initialize(string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) public ``` -### depositFor +Constructor -```solidity -function depositFor(uint256 amount, address target) external returns (bool) -``` +## DatasetRegistry -### depositForArray +_Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### constructor ```solidity -function depositForArray(uint256[] amounts, address[] targets) external returns (bool) +constructor() public ``` -### withdraw +Constructor + +### createDataset ```solidity -function withdraw(uint256 amount) external returns (bool) +function createDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external returns (contract Dataset) ``` -### withdrawTo +### predictDataset ```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) +function predictDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external view returns (contract Dataset) ``` -### recover +## Address -```solidity -function recover() external returns (uint256) -``` +## BaseUpgradeabilityProxy -### receiveApproval +_This contract implements a proxy that allows to change the +implementation address to which it will delegate. +Such a change is called an implementation upgrade._ + +### Upgraded ```solidity -function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) +event Upgraded(address implementation) ``` -## IexecOrderManagementFacet +_Emitted when the implementation is upgraded._ -### manageAppOrder +#### Parameters -```solidity -function manageAppOrder(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) external -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| implementation | address | Address of the new implementation. | -### manageDatasetOrder +## InitializableUpgradeabilityProxy -```solidity -function manageDatasetOrder(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) external -``` +_Extends BaseUpgradeabilityProxy with an initializer for initializing +implementation and init data._ -### manageWorkerpoolOrder +### initialize ```solidity -function manageWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) external +function initialize(address _logic, bytes _data) public payable ``` -### manageRequestOrder +_Contract initializer._ -```solidity -function manageRequestOrder(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) external -``` +#### Parameters -## Matching +| Name | Type | Description | +| ---- | ---- | ----------- | +| _logic | address | Address of the initial implementation. | +| _data | bytes | Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. | -```solidity -struct Matching { - bytes32 apporderHash; - address appOwner; - bytes32 datasetorderHash; - address datasetOwner; - bytes32 workerpoolorderHash; - address workerpoolOwner; - bytes32 requestorderHash; - bool hasDataset; -} -``` +## Proxy -## IexecPoco1Facet +_Implements delegation of calls to other contracts, with proper +forwarding of return values and bubbling of failures. +It defines a fallback function that delegates all calls to the address +returned by the abstract _implementation() internal function._ -### verifySignature +### receive ```solidity -function verifySignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) +receive() external payable virtual ``` -### verifyPresignature +_Receive function. +Implemented entirely in `_fallback`._ + +### fallback ```solidity -function verifyPresignature(address _identity, bytes32 _hash) external view returns (bool) +fallback() external payable ``` -### verifyPresignatureOrSignature +_Fallback function. +Implemented entirely in `_fallback`._ -```solidity -function verifyPresignatureOrSignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) -``` +## Workerpool -### assertDatasetDealCompatibility +_Referenced in the SDK with the current path `contracts/registries/workerpools/Workerpool.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### m_workerpoolDescription ```solidity -function assertDatasetDealCompatibility(struct IexecLibOrders_v5.DatasetOrder datasetOrder, bytes32 dealId) external view +string m_workerpoolDescription ``` -Public view function to check if a dataset order is compatible with a deal. -This function performs all the necessary checks to verify dataset order compatibility with a deal. -Reverts with `IncompatibleDatasetOrder(reason)` if the dataset order is not compatible with the deal, does -nothing otherwise. - -_This function is mainly consumed by offchain clients. It should be carefully inspected if -used in on-chain code. -This function should not be used in `matchOrders` since it does not check the same requirements. -The choice of reverting instead of returning true/false is motivated by the Java middleware -requirements._ +Parameters -#### Parameters +### m_workerStakeRatioPolicy -| Name | Type | Description | -| ---- | ---- | ----------- | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order to verify | -| dealId | bytes32 | The deal ID to check against | +```solidity +uint256 m_workerStakeRatioPolicy +``` -### matchOrders +### m_schedulerRewardRatioPolicy ```solidity -function matchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) +uint256 m_schedulerRewardRatioPolicy ``` -Match orders. The requester gets debited. +### PolicyUpdate -#### Parameters +```solidity +event PolicyUpdate(uint256 oldWorkerStakeRatioPolicy, uint256 newWorkerStakeRatioPolicy, uint256 oldSchedulerRewardRatioPolicy, uint256 newSchedulerRewardRatioPolicy) +``` -| Name | Type | Description | -| ---- | ---- | ----------- | -| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | -| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | +Events -### sponsorMatchOrders +### initialize ```solidity -function sponsorMatchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) +function initialize(string _workerpoolDescription) public ``` -Sponsor match orders for a requester. -Unlike the standard `matchOrders(..)` hook where the requester pays for -the deal, this current hook makes it possible for any `msg.sender` to pay for -a third party requester. +Constructor -Be aware that anyone seeing a valid request order on the network -(via an off-chain public marketplace, via a `sponsorMatchOrders(..)` -pending transaction in the mempool or by any other means) might decide -to call the standard `matchOrders(..)` hook which will result in the -requester being debited instead. Therefore, such a front run would result -in a loss of some of the requester funds deposited in the iExec account -(a loss value equivalent to the price of the deal). +### changePolicy -#### Parameters +```solidity +function changePolicy(uint256 _newWorkerStakeRatioPolicy, uint256 _newSchedulerRewardRatioPolicy) external +``` -| Name | Type | Description | -| ---- | ---- | ----------- | -| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | -| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | +## WorkerpoolRegistry -## IexecPoco2Facet +_Referenced in the SDK with the current path `contracts/registries/workerpools/WorkerpoolRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### initialize +### constructor ```solidity -function initialize(bytes32 _dealid, uint256 idx) public returns (bytes32) +constructor() public ``` -### contribute - -```solidity -function contribute(bytes32 _taskid, bytes32 _resultHash, bytes32 _resultSeal, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external -``` +Constructor -### contributeAndFinalize +### createWorkerpool ```solidity -function contributeAndFinalize(bytes32 _taskid, bytes32 _resultDigest, bytes _results, bytes _resultsCallback, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external +function createWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external returns (contract Workerpool) ``` -### reveal +### predictWorkerpool ```solidity -function reveal(bytes32 _taskid, bytes32 _resultDigest) external +function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) ``` -### reopen +## IexecInterfaceNative -```solidity -function reopen(bytes32 _taskid) external -``` +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in native mode. -### finalize +_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -```solidity -function finalize(bytes32 _taskid, bytes _results, bytes _resultsCallback) external -``` +## IexecInterfaceToken -### claim +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in token mode. -```solidity -function claim(bytes32 _taskid) public -``` +_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### initializeArray +## IexecCategoryManagerFacet + +### createCategory ```solidity -function initializeArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) +function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) ``` -### claimArray +Methods -```solidity -function claimArray(bytes32[] _taskid) external returns (bool) -``` +## IexecConfigurationExtraFacet -### initializeAndClaimArray +### changeRegistries ```solidity -function initializeAndClaimArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) +function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external ``` -## IexecPocoAccessorsFacet +## IexecConfigurationFacet -### viewDeal +### configure ```solidity -function viewDeal(bytes32 id) external view returns (struct IexecLibCore_v5.Deal deal) +function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external ``` -Get a deal created by PoCo classic facet. - -#### Parameters +### domain -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | The ID of the deal. | +```solidity +function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) +``` -### viewTask +### updateDomainSeparator ```solidity -function viewTask(bytes32 id) external view returns (struct IexecLibCore_v5.Task) +function updateDomainSeparator() external ``` -Get task created in Classic mode. - -#### Parameters +### importScore -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | id of the task | +```solidity +function importScore(address _worker) external +``` -### computeDealVolume +### setTeeBroker ```solidity -function computeDealVolume(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external view returns (uint256) +function setTeeBroker(address _teebroker) external ``` -Computes the volume of the "not yet created" deal based on the provided orders. -This function should only be used if the deal is not yet created. -For existing deals, use the deal accessors instead. - -#### Parameters +### setCallbackGas -| Name | Type | Description | -| ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The application order. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The request order. | +```solidity +function setCallbackGas(uint256 _callbackgas) external +``` -#### Return Values +## IexecERC20Core -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | uint256 | The computed deal volume. | +## IexecERC20Facet -### viewConsumed +### transfer ```solidity -function viewConsumed(bytes32 _id) external view returns (uint256 consumed) +function transfer(address recipient, uint256 amount) external returns (bool) ``` -### viewPresigned +### approve ```solidity -function viewPresigned(bytes32 _id) external view returns (address signer) +function approve(address spender, uint256 value) external returns (bool) ``` -### viewContribution +### approveAndCall ```solidity -function viewContribution(bytes32 _taskid, address _worker) external view returns (struct IexecLibCore_v5.Contribution) +function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) ``` -### viewScore +### transferFrom ```solidity -function viewScore(address _worker) external view returns (uint256) +function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) ``` -### resultFor +### increaseAllowance ```solidity -function resultFor(bytes32 id) external view returns (bytes) +function increaseAllowance(address spender, uint256 addedValue) external returns (bool) ``` -### name +### decreaseAllowance ```solidity -function name() external view returns (string) +function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) ``` -### symbol +## IexecEscrow + +### Transfer ```solidity -function symbol() external view returns (string) +event Transfer(address from, address to, uint256 value) ``` -### decimals +### Lock ```solidity -function decimals() external view returns (uint8) +event Lock(address owner, uint256 amount) ``` -### totalSupply +### Unlock ```solidity -function totalSupply() external view returns (uint256) +event Unlock(address owner, uint256 amount) ``` -### balanceOf +### Reward ```solidity -function balanceOf(address account) external view returns (uint256) +event Reward(address owner, uint256 amount, bytes32 ref) ``` -### frozenOf +### Seize ```solidity -function frozenOf(address account) external view returns (uint256) +event Seize(address owner, uint256 amount, bytes32 ref) ``` -### allowance +## IexecEscrowNativeFacet + +### receive ```solidity -function allowance(address account, address spender) external view returns (uint256) +receive() external payable ``` -### viewAccount +### fallback ```solidity -function viewAccount(address account) external view returns (struct IexecLibCore_v5.Account) +fallback() external payable ``` -### token +### deposit ```solidity -function token() external view returns (address) +function deposit() external payable returns (bool) ``` -### viewCategory +### depositFor ```solidity -function viewCategory(uint256 _catid) external view returns (struct IexecLibCore_v5.Category category) +function depositFor(address target) external payable returns (bool) ``` -### countCategory +### depositForArray ```solidity -function countCategory() external view returns (uint256 count) +function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) ``` -### appregistry +### withdraw ```solidity -function appregistry() external view returns (contract IRegistry) +function withdraw(uint256 amount) external returns (bool) ``` -### datasetregistry +### withdrawTo ```solidity -function datasetregistry() external view returns (contract IRegistry) +function withdrawTo(uint256 amount, address target) external returns (bool) ``` -### workerpoolregistry +### recover ```solidity -function workerpoolregistry() external view returns (contract IRegistry) +function recover() external returns (uint256) ``` -### teebroker +## IexecEscrowTokenFacet + +### receive ```solidity -function teebroker() external view returns (address) +receive() external payable ``` -### callbackgas +### fallback ```solidity -function callbackgas() external view returns (uint256) +fallback() external payable ``` -### viewDataset +### deposit ```solidity -function viewDataset(address dataset) external view returns (struct IexecLibCore_v5.DatasetInfo) +function deposit(uint256 amount) external returns (bool) ``` -### viewApp +### depositFor ```solidity -function viewApp(address app) external view returns (struct IexecLibCore_v5.AppInfo) +function depositFor(uint256 amount, address target) external returns (bool) ``` -### viewWorkerpool +### depositForArray ```solidity -function viewWorkerpool(address workerpool) external view returns (struct IexecLibCore_v5.WorkerpoolInfo) +function depositForArray(uint256[] amounts, address[] targets) external returns (bool) ``` -### contribution_deadline_ratio +### withdraw ```solidity -function contribution_deadline_ratio() external pure returns (uint256) +function withdraw(uint256 amount) external returns (bool) ``` -### reveal_deadline_ratio +### withdrawTo ```solidity -function reveal_deadline_ratio() external pure returns (uint256) +function withdrawTo(uint256 amount, address target) external returns (bool) ``` -### final_deadline_ratio +### recover ```solidity -function final_deadline_ratio() external pure returns (uint256) +function recover() external returns (uint256) ``` -### workerpool_stake_ratio +### receiveApproval ```solidity -function workerpool_stake_ratio() external pure returns (uint256) +function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) ``` -### kitty_ratio +## IexecOrderManagementFacet + +### manageAppOrder ```solidity -function kitty_ratio() external pure returns (uint256) +function manageAppOrder(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) external ``` -### kitty_min +### manageDatasetOrder ```solidity -function kitty_min() external pure returns (uint256) +function manageDatasetOrder(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) external ``` -### kitty_address +### manageWorkerpoolOrder ```solidity -function kitty_address() external pure returns (address) +function manageWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) external ``` -### groupmember_purpose +### manageRequestOrder ```solidity -function groupmember_purpose() external pure returns (uint256) +function manageRequestOrder(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) external ``` -### eip712domain_separator +## Matching ```solidity -function eip712domain_separator() external view returns (bytes32) +struct Matching { + bytes32 apporderHash; + address appOwner; + bytes32 datasetorderHash; + address datasetOwner; + bytes32 workerpoolorderHash; + address workerpoolOwner; + bytes32 requestorderHash; + bool hasDataset; +} ``` -## IexecPocoBoostAccessorsFacet - -Access to PoCo Boost tasks must be done with PoCo Classic `IexecPocoAccessors`. +## IexecPoco1Facet -### viewDealBoost +### verifySignature ```solidity -function viewDealBoost(bytes32 id) external view returns (struct IexecLibCore_v5.DealBoost deal) +function verifySignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) ``` -Get a deal created by PoCo Boost facet. - -#### Parameters +### verifyPresignature -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | The ID of the deal. | +```solidity +function verifyPresignature(address _identity, bytes32 _hash) external view returns (bool) +``` -## IexecPocoBoostFacet +### verifyPresignatureOrSignature -Works for deals with requested trust = 0. +```solidity +function verifyPresignatureOrSignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) +``` -### matchOrdersBoost +### assertDatasetDealCompatibility ```solidity -function matchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) +function assertDatasetDealCompatibility(struct IexecLibOrders_v5.DatasetOrder datasetOrder, bytes32 dealId) external view ``` -This boost match orders is only compatible with trust <= 1. -The requester gets debited. +Public view function to check if a dataset order is compatible with a deal. +This function performs all the necessary checks to verify dataset order compatibility with a deal. +Reverts with `IncompatibleDatasetOrder(reason)` if the dataset order is not compatible with the deal, does +nothing otherwise. + +_This function is mainly consumed by offchain clients. It should be carefully inspected if +used in on-chain code. +This function should not be used in `matchOrders` since it does not check the same requirements. +The choice of reverting instead of returning true/false is motivated by the Java middleware +requirements._ #### Parameters | Name | Type | Description | | ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The order signed by the application developer. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The order signed by the dataset provider. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The order signed by the workerpool manager. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The order signed by the requester. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order to verify | +| dealId | bytes32 | The deal ID to check against | -#### Return Values +### matchOrders + +```solidity +function matchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) +``` + +Match orders. The requester gets debited. + +#### Parameters | Name | Type | Description | | ---- | ---- | ----------- | -| [0] | bytes32 | The ID of the deal. | +| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | +| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | -### sponsorMatchOrdersBoost +### sponsorMatchOrders ```solidity -function sponsorMatchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) +function sponsorMatchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) ``` -Sponsor match orders boost for a requester. -Unlike the standard `matchOrdersBoost(..)` hook where the requester pays for +Sponsor match orders for a requester. +Unlike the standard `matchOrders(..)` hook where the requester pays for the deal, this current hook makes it possible for any `msg.sender` to pay for a third party requester. Be aware that anyone seeing a valid request order on the network -(via an off-chain public marketplace, via a `sponsorMatchOrdersBoost(..)` +(via an off-chain public marketplace, via a `sponsorMatchOrders(..)` pending transaction in the mempool or by any other means) might decide -to call the standard `matchOrdersBoost(..)` hook which will result in the +to call the standard `matchOrders(..)` hook which will result in the requester being debited instead. Therefore, such a front run would result in a loss of some of the requester funds deposited in the iExec account (a loss value equivalent to the price of the deal). @@ -764,919 +752,927 @@ in a loss of some of the requester funds deposited in the iExec account | Name | Type | Description | | ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The app order. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The requester order. | +| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | +| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | -### pushResultBoost +## IexecPoco2Facet + +### initialize ```solidity -function pushResultBoost(bytes32 dealId, uint256 index, bytes results, bytes resultsCallback, bytes authorizationSign, address enclaveChallenge, bytes enclaveSign) external +function initialize(bytes32 _dealid, uint256 idx) public returns (bytes32) ``` -Accept results of a task computed by a worker during Boost workflow. - -#### Parameters +### contribute -| Name | Type | Description | -| ---- | ---- | ----------- | -| dealId | bytes32 | The id of the target deal. | -| index | uint256 | The index of the target task of the deal. | -| results | bytes | The results of the task computed by the worker. | -| resultsCallback | bytes | The results of the task computed by the worker that will be forwarded as call data to the callback address set by the requester. | -| authorizationSign | bytes | The authorization signed by the scheduler. authorizing the worker to push a result. | -| enclaveChallenge | address | The enclave address which can produce enclave signature. | -| enclaveSign | bytes | The signature generated from the enclave. | +```solidity +function contribute(bytes32 _taskid, bytes32 _resultHash, bytes32 _resultSeal, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external +``` -### claimBoost +### contributeAndFinalize ```solidity -function claimBoost(bytes32 dealId, uint256 index) external +function contributeAndFinalize(bytes32 _taskid, bytes32 _resultDigest, bytes _results, bytes _resultsCallback, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external ``` -Claim task to get a refund if task is not completed after deadline. +### reveal -#### Parameters +```solidity +function reveal(bytes32 _taskid, bytes32 _resultDigest) external +``` -| Name | Type | Description | -| ---- | ---- | ----------- | -| dealId | bytes32 | The ID of the deal. | -| index | uint256 | The index of the task. | +### reopen -## IexecRelayFacet +```solidity +function reopen(bytes32 _taskid) external +``` -### broadcastAppOrder +### finalize ```solidity -function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external +function finalize(bytes32 _taskid, bytes _results, bytes _resultsCallback) external ``` -### broadcastDatasetOrder +### claim ```solidity -function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external +function claim(bytes32 _taskid) public ``` -### broadcastWorkerpoolOrder +### initializeArray ```solidity -function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external +function initializeArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) ``` -### broadcastRequestOrder +### claimArray ```solidity -function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external +function claimArray(bytes32[] _taskid) external returns (bool) ``` -## IexecLibCore_v5 - -### Account - -Tools +### initializeAndClaimArray ```solidity -struct Account { - uint256 stake; - uint256 locked; -} +function initializeAndClaimArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) ``` -### Category +## IexecPocoAccessorsFacet + +### viewDeal ```solidity -struct Category { - string name; - string description; - uint256 workClockTimeRef; -} +function viewDeal(bytes32 id) external view returns (struct IexecLibCore_v5.Deal deal) ``` -### DatasetInfo +Get a deal created by PoCo classic facet. -```solidity -struct DatasetInfo { - address owner; - string m_datasetName; - bytes m_datasetMultiaddr; - bytes32 m_datasetChecksum; -} -``` +#### Parameters -### AppInfo +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | The ID of the deal. | + +### viewTask ```solidity -struct AppInfo { - address owner; - string m_appName; - string m_appType; - bytes m_appMultiaddr; - bytes32 m_appChecksum; - bytes m_appMREnclave; -} +function viewTask(bytes32 id) external view returns (struct IexecLibCore_v5.Task) ``` -### WorkerpoolInfo +Get task created in Classic mode. + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | id of the task | + +### computeDealVolume ```solidity -struct WorkerpoolInfo { - address owner; - string m_workerpoolDescription; - uint256 m_workerStakeRatioPolicy; - uint256 m_schedulerRewardRatioPolicy; -} +function computeDealVolume(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external view returns (uint256) ``` -### Resource +Computes the volume of the "not yet created" deal based on the provided orders. +This function should only be used if the deal is not yet created. +For existing deals, use the deal accessors instead. -Clerk - Deals +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The application order. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The request order. | + +#### Return Values + +| Name | Type | Description | +| ---- | ---- | ----------- | +| [0] | uint256 | The computed deal volume. | + +### viewConsumed ```solidity -struct Resource { - address pointer; - address owner; - uint256 price; -} +function viewConsumed(bytes32 _id) external view returns (uint256 consumed) ``` -### Deal +### viewPresigned ```solidity -struct Deal { - struct IexecLibCore_v5.Resource app; - struct IexecLibCore_v5.Resource dataset; - struct IexecLibCore_v5.Resource workerpool; - uint256 trust; - uint256 category; - bytes32 tag; - address requester; - address beneficiary; - address callback; - string params; - uint256 startTime; - uint256 botFirst; - uint256 botSize; - uint256 workerStake; - uint256 schedulerRewardRatio; - address sponsor; -} +function viewPresigned(bytes32 _id) external view returns (address signer) ``` -### DealBoost - -Simplified deals for PoCo Boost module. +### viewContribution ```solidity -struct DealBoost { - address appOwner; - uint96 appPrice; - address datasetOwner; - uint96 datasetPrice; - address workerpoolOwner; - uint96 workerpoolPrice; - address requester; - uint96 workerReward; - address callback; - uint40 deadline; - uint16 botFirst; - uint16 botSize; - bytes3 shortTag; - address sponsor; -} +function viewContribution(bytes32 _taskid, address _worker) external view returns (struct IexecLibCore_v5.Contribution) ``` -### TaskStatusEnum - -Tasks +### viewScore ```solidity -enum TaskStatusEnum { - UNSET, - ACTIVE, - REVEALING, - COMPLETED, - FAILED -} +function viewScore(address _worker) external view returns (uint256) ``` -### Task +### resultFor ```solidity -struct Task { - enum IexecLibCore_v5.TaskStatusEnum status; - bytes32 dealid; - uint256 idx; - uint256 timeref; - uint256 contributionDeadline; - uint256 revealDeadline; - uint256 finalDeadline; - bytes32 consensusValue; - uint256 revealCounter; - uint256 winnerCounter; - address[] contributors; - bytes32 resultDigest; - bytes results; - uint256 resultsTimestamp; - bytes resultsCallback; -} +function resultFor(bytes32 id) external view returns (bytes) ``` -### Consensus - -Consensus +### name ```solidity -struct Consensus { - mapping(bytes32 => uint256) group; - uint256 total; -} +function name() external view returns (string) ``` -### ContributionStatusEnum +### symbol -Consensus +```solidity +function symbol() external view returns (string) +``` + +### decimals ```solidity -enum ContributionStatusEnum { - UNSET, - CONTRIBUTED, - PROVED, - REJECTED -} +function decimals() external view returns (uint8) ``` -### Contribution +### totalSupply ```solidity -struct Contribution { - enum IexecLibCore_v5.ContributionStatusEnum status; - bytes32 resultHash; - bytes32 resultSeal; - address enclaveChallenge; - uint256 weight; -} +function totalSupply() external view returns (uint256) ``` -## IexecLibOrders_v5 +### balanceOf -### EIP712DOMAIN_TYPEHASH +```solidity +function balanceOf(address account) external view returns (uint256) +``` + +### frozenOf ```solidity -bytes32 EIP712DOMAIN_TYPEHASH +function frozenOf(address account) external view returns (uint256) ``` -### APPORDER_TYPEHASH +### allowance ```solidity -bytes32 APPORDER_TYPEHASH +function allowance(address account, address spender) external view returns (uint256) ``` -### DATASETORDER_TYPEHASH +### viewAccount ```solidity -bytes32 DATASETORDER_TYPEHASH +function viewAccount(address account) external view returns (struct IexecLibCore_v5.Account) ``` -### WORKERPOOLORDER_TYPEHASH +### token ```solidity -bytes32 WORKERPOOLORDER_TYPEHASH +function token() external view returns (address) ``` -### REQUESTORDER_TYPEHASH +### viewCategory ```solidity -bytes32 REQUESTORDER_TYPEHASH +function viewCategory(uint256 _catid) external view returns (struct IexecLibCore_v5.Category category) ``` -### APPORDEROPERATION_TYPEHASH +### countCategory ```solidity -bytes32 APPORDEROPERATION_TYPEHASH +function countCategory() external view returns (uint256 count) ``` -### DATASETORDEROPERATION_TYPEHASH +### appregistry ```solidity -bytes32 DATASETORDEROPERATION_TYPEHASH +function appregistry() external view returns (contract IRegistry) ``` -### WORKERPOOLORDEROPERATION_TYPEHASH +### datasetregistry ```solidity -bytes32 WORKERPOOLORDEROPERATION_TYPEHASH +function datasetregistry() external view returns (contract IRegistry) ``` -### REQUESTORDEROPERATION_TYPEHASH +### workerpoolregistry ```solidity -bytes32 REQUESTORDEROPERATION_TYPEHASH +function workerpoolregistry() external view returns (contract IRegistry) ``` -### OrderOperationEnum +### teebroker ```solidity -enum OrderOperationEnum { - SIGN, - CLOSE -} +function teebroker() external view returns (address) ``` -### EIP712Domain +### callbackgas ```solidity -struct EIP712Domain { - string name; - string version; - uint256 chainId; - address verifyingContract; -} +function callbackgas() external view returns (uint256) ``` -### AppOrder +### viewDataset ```solidity -struct AppOrder { - address app; - uint256 appprice; - uint256 volume; - bytes32 tag; - address datasetrestrict; - address workerpoolrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function viewDataset(address dataset) external view returns (struct IexecLibCore_v5.DatasetInfo) ``` -### DatasetOrder +### viewApp ```solidity -struct DatasetOrder { - address dataset; - uint256 datasetprice; - uint256 volume; - bytes32 tag; - address apprestrict; - address workerpoolrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function viewApp(address app) external view returns (struct IexecLibCore_v5.AppInfo) ``` -### WorkerpoolOrder +### viewWorkerpool ```solidity -struct WorkerpoolOrder { - address workerpool; - uint256 workerpoolprice; - uint256 volume; - bytes32 tag; - uint256 category; - uint256 trust; - address apprestrict; - address datasetrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function viewWorkerpool(address workerpool) external view returns (struct IexecLibCore_v5.WorkerpoolInfo) ``` -### RequestOrder +### contribution_deadline_ratio ```solidity -struct RequestOrder { - address app; - uint256 appmaxprice; - address dataset; - uint256 datasetmaxprice; - address workerpool; - uint256 workerpoolmaxprice; - address requester; - uint256 volume; - bytes32 tag; - uint256 category; - uint256 trust; - address beneficiary; - address callback; - string params; - bytes32 salt; - bytes sign; -} +function contribution_deadline_ratio() external pure returns (uint256) ``` -### AppOrderOperation +### reveal_deadline_ratio ```solidity -struct AppOrderOperation { - struct IexecLibOrders_v5.AppOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function reveal_deadline_ratio() external pure returns (uint256) ``` -### DatasetOrderOperation +### final_deadline_ratio ```solidity -struct DatasetOrderOperation { - struct IexecLibOrders_v5.DatasetOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function final_deadline_ratio() external pure returns (uint256) ``` -### WorkerpoolOrderOperation +### workerpool_stake_ratio ```solidity -struct WorkerpoolOrderOperation { - struct IexecLibOrders_v5.WorkerpoolOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function workerpool_stake_ratio() external pure returns (uint256) ``` -### RequestOrderOperation +### kitty_ratio ```solidity -struct RequestOrderOperation { - struct IexecLibOrders_v5.RequestOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function kitty_ratio() external pure returns (uint256) ``` -### hash +### kitty_min ```solidity -function hash(struct IexecLibOrders_v5.EIP712Domain _domain) public pure returns (bytes32 domainhash) +function kitty_min() external pure returns (uint256) ``` -### hash +### kitty_address ```solidity -function hash(struct IexecLibOrders_v5.AppOrder _apporder) public pure returns (bytes32 apphash) +function kitty_address() external pure returns (address) ``` -### hash +### groupmember_purpose ```solidity -function hash(struct IexecLibOrders_v5.DatasetOrder _datasetorder) public pure returns (bytes32 datasethash) +function groupmember_purpose() external pure returns (uint256) ``` -### hash +### eip712domain_separator ```solidity -function hash(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) public pure returns (bytes32 workerpoolhash) +function eip712domain_separator() external view returns (bytes32) ``` -### hash +## IexecPocoBoostAccessorsFacet -```solidity -function hash(struct IexecLibOrders_v5.RequestOrder _requestorder) public pure returns (bytes32 requesthash) -``` +Access to PoCo Boost tasks must be done with PoCo Classic `IexecPocoAccessors`. -### hash +### viewDealBoost ```solidity -function hash(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) public pure returns (bytes32) +function viewDealBoost(bytes32 id) external view returns (struct IexecLibCore_v5.DealBoost deal) ``` -### hash +Get a deal created by PoCo Boost facet. -```solidity -function hash(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) public pure returns (bytes32) -``` +#### Parameters -### hash +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | The ID of the deal. | -```solidity -function hash(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) public pure returns (bytes32) -``` +## IexecPocoBoostFacet -### hash +Works for deals with requested trust = 0. + +### matchOrdersBoost ```solidity -function hash(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) public pure returns (bytes32) +function matchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) ``` -## PocoStorageLib +This boost match orders is only compatible with trust <= 1. +The requester gets debited. -### PocoStorage +#### Parameters -```solidity -struct PocoStorage { - contract IRegistry m_appregistry; - contract IRegistry m_datasetregistry; - contract IRegistry m_workerpoolregistry; - contract IERC20 m_baseToken; - string m_name; - string m_symbol; - uint8 m_decimals; - uint256 m_totalSupply; - mapping(address => uint256) m_balances; - mapping(address => uint256) m_frozens; - mapping(address => mapping(address => uint256)) m_allowances; - bytes32 m_eip712DomainSeparator; - mapping(bytes32 => address) m_presigned; - mapping(bytes32 => uint256) m_consumed; - mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; - mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; - mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; - mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; - mapping(address => uint256) m_workerScores; - address m_teebroker; - uint256 m_callbackgas; - struct IexecLibCore_v5.Category[] m_categories; - contract IexecHubV3Interface m_v3_iexecHub; - mapping(address => bool) m_v3_scoreImported; - mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; -} -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The order signed by the application developer. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The order signed by the dataset provider. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The order signed by the workerpool manager. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The order signed by the requester. | -## IRegistry +#### Return Values -### isRegistered +| Name | Type | Description | +| ---- | ---- | ----------- | +| [0] | bytes32 | The ID of the deal. | + +### sponsorMatchOrdersBoost ```solidity -function isRegistered(address _entry) external view returns (bool) +function sponsorMatchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) ``` -## Registry +Sponsor match orders boost for a requester. +Unlike the standard `matchOrdersBoost(..)` hook where the requester pays for +the deal, this current hook makes it possible for any `msg.sender` to pay for +a third party requester. -### master +Be aware that anyone seeing a valid request order on the network +(via an off-chain public marketplace, via a `sponsorMatchOrdersBoost(..)` +pending transaction in the mempool or by any other means) might decide +to call the standard `matchOrdersBoost(..)` hook which will result in the +requester being debited instead. Therefore, such a front run would result +in a loss of some of the requester funds deposited in the iExec account +(a loss value equivalent to the price of the deal). -```solidity -address master -``` +#### Parameters -### proxyCode +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The app order. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The requester order. | + +### pushResultBoost ```solidity -bytes proxyCode +function pushResultBoost(bytes32 dealId, uint256 index, bytes results, bytes resultsCallback, bytes authorizationSign, address enclaveChallenge, bytes enclaveSign) external ``` -### proxyCodeHash +Accept results of a task computed by a worker during Boost workflow. + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| dealId | bytes32 | The id of the target deal. | +| index | uint256 | The index of the target task of the deal. | +| results | bytes | The results of the task computed by the worker. | +| resultsCallback | bytes | The results of the task computed by the worker that will be forwarded as call data to the callback address set by the requester. | +| authorizationSign | bytes | The authorization signed by the scheduler. authorizing the worker to push a result. | +| enclaveChallenge | address | The enclave address which can produce enclave signature. | +| enclaveSign | bytes | The signature generated from the enclave. | + +### claimBoost ```solidity -bytes32 proxyCodeHash +function claimBoost(bytes32 dealId, uint256 index) external ``` -### previous +Claim task to get a refund if task is not completed after deadline. + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| dealId | bytes32 | The ID of the deal. | +| index | uint256 | The index of the task. | + +## IexecRelayFacet + +### broadcastAppOrder ```solidity -contract IRegistry previous +function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external ``` -### initialized +### broadcastDatasetOrder ```solidity -bool initialized +function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external ``` -### initialize +### broadcastWorkerpoolOrder ```solidity -function initialize(address _previous) external +function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external ``` -### setBaseURI +### broadcastRequestOrder ```solidity -function setBaseURI(string baseUri) external +function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external ``` -### baseURI +## IexecLibCore_v5 + +### Account + +Tools ```solidity -function baseURI() public view returns (string) +struct Account { + uint256 stake; + uint256 locked; +} ``` -_Added for retrocompatibility! +### Category -Returns the base URI set via {setBaseURI}. This will be -automatically added as a prefix in {tokenURI} to each token's ID._ +```solidity +struct Category { + string name; + string description; + uint256 workClockTimeRef; +} +``` -### isRegistered +### DatasetInfo ```solidity -function isRegistered(address _entry) external view returns (bool) +struct DatasetInfo { + address owner; + string m_datasetName; + bytes m_datasetMultiaddr; + bytes32 m_datasetChecksum; +} ``` -### setName +### AppInfo ```solidity -function setName(address, string) external +struct AppInfo { + address owner; + string m_appName; + string m_appType; + bytes m_appMultiaddr; + bytes32 m_appChecksum; + bytes m_appMREnclave; +} ``` -Sets the reverse registration name for a registry contract. - -_This functionality is supported only on Bellecour Sidechain, calls on other chains -will revert. The function is kept as nonpayable to maintain retrocompatibility with the -iExec SDK._ - -## RegistryEntry - -_Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### registry +### WorkerpoolInfo ```solidity -contract IRegistry registry +struct WorkerpoolInfo { + address owner; + string m_workerpoolDescription; + uint256 m_workerStakeRatioPolicy; + uint256 m_schedulerRewardRatioPolicy; +} ``` -### owner +### Resource + +Clerk - Deals ```solidity -function owner() public view returns (address) +struct Resource { + address pointer; + address owner; + uint256 price; +} ``` -### setName +### Deal ```solidity -function setName(address, string) external +struct Deal { + struct IexecLibCore_v5.Resource app; + struct IexecLibCore_v5.Resource dataset; + struct IexecLibCore_v5.Resource workerpool; + uint256 trust; + uint256 category; + bytes32 tag; + address requester; + address beneficiary; + address callback; + string params; + uint256 startTime; + uint256 botFirst; + uint256 botSize; + uint256 workerStake; + uint256 schedulerRewardRatio; + address sponsor; +} ``` -Sets the reverse registration name for a registry entry contract. - -_This functionality is supported only on Bellecour Sidechain, calls on other chains -will revert. The function is kept as nonpayable to maintain retrocompatibility with the -iExec SDK._ - -## App - -_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +### DealBoost -### m_appName +Simplified deals for PoCo Boost module. ```solidity -string m_appName +struct DealBoost { + address appOwner; + uint96 appPrice; + address datasetOwner; + uint96 datasetPrice; + address workerpoolOwner; + uint96 workerpoolPrice; + address requester; + uint96 workerReward; + address callback; + uint40 deadline; + uint16 botFirst; + uint16 botSize; + bytes3 shortTag; + address sponsor; +} ``` -Members +### TaskStatusEnum -### m_appType +Tasks ```solidity -string m_appType +enum TaskStatusEnum { + UNSET, + ACTIVE, + REVEALING, + COMPLETED, + FAILED +} ``` -### m_appMultiaddr +### Task ```solidity -bytes m_appMultiaddr +struct Task { + enum IexecLibCore_v5.TaskStatusEnum status; + bytes32 dealid; + uint256 idx; + uint256 timeref; + uint256 contributionDeadline; + uint256 revealDeadline; + uint256 finalDeadline; + bytes32 consensusValue; + uint256 revealCounter; + uint256 winnerCounter; + address[] contributors; + bytes32 resultDigest; + bytes results; + uint256 resultsTimestamp; + bytes resultsCallback; +} ``` -### m_appChecksum +### Consensus + +Consensus ```solidity -bytes32 m_appChecksum +struct Consensus { + mapping(bytes32 => uint256) group; + uint256 total; +} ``` -### m_appMREnclave +### ContributionStatusEnum + +Consensus ```solidity -bytes m_appMREnclave +enum ContributionStatusEnum { + UNSET, + CONTRIBUTED, + PROVED, + REJECTED +} ``` -### initialize +### Contribution ```solidity -function initialize(string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) public +struct Contribution { + enum IexecLibCore_v5.ContributionStatusEnum status; + bytes32 resultHash; + bytes32 resultSeal; + address enclaveChallenge; + uint256 weight; +} ``` -Constructor - -## AppRegistry - -_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +## IexecLibOrders_v5 -### constructor +### EIP712DOMAIN_TYPEHASH ```solidity -constructor() public +bytes32 EIP712DOMAIN_TYPEHASH ``` -Constructor - -### createApp +### APPORDER_TYPEHASH ```solidity -function createApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external returns (contract App) +bytes32 APPORDER_TYPEHASH ``` -### internal_mintCreate +### DATASETORDER_TYPEHASH ```solidity -function internal_mintCreate(address _appOwner, bytes _args) external returns (address) +bytes32 DATASETORDER_TYPEHASH ``` -### predictApp +### WORKERPOOLORDER_TYPEHASH ```solidity -function predictApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external view returns (contract App) +bytes32 WORKERPOOLORDER_TYPEHASH ``` -## IApp - -### owner +### REQUESTORDER_TYPEHASH ```solidity -function owner() external view returns (address) +bytes32 REQUESTORDER_TYPEHASH ``` -### m_appName +### APPORDEROPERATION_TYPEHASH ```solidity -function m_appName() external view returns (string) +bytes32 APPORDEROPERATION_TYPEHASH ``` -### m_appType +### DATASETORDEROPERATION_TYPEHASH ```solidity -function m_appType() external view returns (string) +bytes32 DATASETORDEROPERATION_TYPEHASH ``` -### m_appMultiaddr +### WORKERPOOLORDEROPERATION_TYPEHASH ```solidity -function m_appMultiaddr() external view returns (bytes) +bytes32 WORKERPOOLORDEROPERATION_TYPEHASH ``` -### m_appChecksum +### REQUESTORDEROPERATION_TYPEHASH ```solidity -function m_appChecksum() external view returns (bytes32) +bytes32 REQUESTORDEROPERATION_TYPEHASH ``` -### m_appMREnclave +### OrderOperationEnum ```solidity -function m_appMREnclave() external view returns (bytes) +enum OrderOperationEnum { + SIGN, + CLOSE +} ``` -## Dataset +### EIP712Domain -_Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +struct EIP712Domain { + string name; + string version; + uint256 chainId; + address verifyingContract; +} +``` -### m_datasetName +### AppOrder ```solidity -string m_datasetName +struct AppOrder { + address app; + uint256 appprice; + uint256 volume; + bytes32 tag; + address datasetrestrict; + address workerpoolrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -Members - -### m_datasetMultiaddr +### DatasetOrder ```solidity -bytes m_datasetMultiaddr +struct DatasetOrder { + address dataset; + uint256 datasetprice; + uint256 volume; + bytes32 tag; + address apprestrict; + address workerpoolrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -### m_datasetChecksum +### WorkerpoolOrder ```solidity -bytes32 m_datasetChecksum +struct WorkerpoolOrder { + address workerpool; + uint256 workerpoolprice; + uint256 volume; + bytes32 tag; + uint256 category; + uint256 trust; + address apprestrict; + address datasetrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -### initialize +### RequestOrder ```solidity -function initialize(string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) public +struct RequestOrder { + address app; + uint256 appmaxprice; + address dataset; + uint256 datasetmaxprice; + address workerpool; + uint256 workerpoolmaxprice; + address requester; + uint256 volume; + bytes32 tag; + uint256 category; + uint256 trust; + address beneficiary; + address callback; + string params; + bytes32 salt; + bytes sign; +} ``` -Constructor - -## DatasetRegistry - -_Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### constructor +### AppOrderOperation ```solidity -constructor() public +struct AppOrderOperation { + struct IexecLibOrders_v5.AppOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -Constructor - -### createDataset +### DatasetOrderOperation ```solidity -function createDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external returns (contract Dataset) +struct DatasetOrderOperation { + struct IexecLibOrders_v5.DatasetOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -### internal_mintCreate +### WorkerpoolOrderOperation ```solidity -function internal_mintCreate(address _datasetOwner, bytes _args) external returns (address) +struct WorkerpoolOrderOperation { + struct IexecLibOrders_v5.WorkerpoolOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -### predictDataset +### RequestOrderOperation ```solidity -function predictDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external view returns (contract Dataset) +struct RequestOrderOperation { + struct IexecLibOrders_v5.RequestOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -## IDataset - -### owner +### hash ```solidity -function owner() external view returns (address) +function hash(struct IexecLibOrders_v5.EIP712Domain _domain) public pure returns (bytes32 domainhash) ``` -### m_datasetName +### hash ```solidity -function m_datasetName() external view returns (string) +function hash(struct IexecLibOrders_v5.AppOrder _apporder) public pure returns (bytes32 apphash) ``` -### m_datasetMultiaddr +### hash ```solidity -function m_datasetMultiaddr() external view returns (bytes) +function hash(struct IexecLibOrders_v5.DatasetOrder _datasetorder) public pure returns (bytes32 datasethash) ``` -### m_datasetChecksum +### hash ```solidity -function m_datasetChecksum() external view returns (bytes32) +function hash(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) public pure returns (bytes32 workerpoolhash) ``` -## Address - -## BaseUpgradeabilityProxy - -_This contract implements a proxy that allows to change the -implementation address to which it will delegate. -Such a change is called an implementation upgrade._ - -### Upgraded +### hash ```solidity -event Upgraded(address implementation) +function hash(struct IexecLibOrders_v5.RequestOrder _requestorder) public pure returns (bytes32 requesthash) ``` -_Emitted when the implementation is upgraded._ - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| implementation | address | Address of the new implementation. | - -## InitializableUpgradeabilityProxy - -_Extends BaseUpgradeabilityProxy with an initializer for initializing -implementation and init data._ - -### initialize +### hash ```solidity -function initialize(address _logic, bytes _data) public payable +function hash(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) public pure returns (bytes32) ``` -_Contract initializer._ - -#### Parameters +### hash -| Name | Type | Description | -| ---- | ---- | ----------- | -| _logic | address | Address of the initial implementation. | -| _data | bytes | Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. | +```solidity +function hash(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) public pure returns (bytes32) +``` -## Proxy +### hash -_Implements delegation of calls to other contracts, with proper -forwarding of return values and bubbling of failures. -It defines a fallback function that delegates all calls to the address -returned by the abstract _implementation() internal function._ +```solidity +function hash(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) public pure returns (bytes32) +``` -### receive +### hash ```solidity -receive() external payable virtual +function hash(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) public pure returns (bytes32) ``` -_Receive function. -Implemented entirely in `_fallback`._ +## PocoStorageLib -### fallback +### PocoStorage ```solidity -fallback() external payable +struct PocoStorage { + contract IRegistry m_appregistry; + contract IRegistry m_datasetregistry; + contract IRegistry m_workerpoolregistry; + contract IERC20 m_baseToken; + string m_name; + string m_symbol; + uint8 m_decimals; + uint256 m_totalSupply; + mapping(address => uint256) m_balances; + mapping(address => uint256) m_frozens; + mapping(address => mapping(address => uint256)) m_allowances; + bytes32 m_eip712DomainSeparator; + mapping(bytes32 => address) m_presigned; + mapping(bytes32 => uint256) m_consumed; + mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; + mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; + mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; + mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; + mapping(address => uint256) m_workerScores; + address m_teebroker; + uint256 m_callbackgas; + struct IexecLibCore_v5.Category[] m_categories; + contract IexecHubV3Interface m_v3_iexecHub; + mapping(address => bool) m_v3_scoreImported; + mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; +} ``` -_Fallback function. -Implemented entirely in `_fallback`._ - -## IWorkerpool +## IApp ### owner @@ -1684,100 +1680,86 @@ Implemented entirely in `_fallback`._ function owner() external view returns (address) ``` -### m_workerpoolDescription +### m_appName ```solidity -function m_workerpoolDescription() external view returns (string) +function m_appName() external view returns (string) ``` -### m_schedulerRewardRatioPolicy +### m_appType ```solidity -function m_schedulerRewardRatioPolicy() external view returns (uint256) +function m_appType() external view returns (string) ``` -### m_workerStakeRatioPolicy +### m_appMultiaddr ```solidity -function m_workerStakeRatioPolicy() external view returns (uint256) +function m_appMultiaddr() external view returns (bytes) ``` -## Workerpool - -_Referenced in the SDK with the current path `contracts/registries/workerpools/Workerpool.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### m_workerpoolDescription +### m_appChecksum ```solidity -string m_workerpoolDescription +function m_appChecksum() external view returns (bytes32) ``` -Parameters - -### m_workerStakeRatioPolicy +### m_appMREnclave ```solidity -uint256 m_workerStakeRatioPolicy +function m_appMREnclave() external view returns (bytes) ``` -### m_schedulerRewardRatioPolicy +## IDataset + +### owner ```solidity -uint256 m_schedulerRewardRatioPolicy +function owner() external view returns (address) ``` -### PolicyUpdate +### m_datasetName ```solidity -event PolicyUpdate(uint256 oldWorkerStakeRatioPolicy, uint256 newWorkerStakeRatioPolicy, uint256 oldSchedulerRewardRatioPolicy, uint256 newSchedulerRewardRatioPolicy) +function m_datasetName() external view returns (string) ``` -Events - -### initialize +### m_datasetMultiaddr ```solidity -function initialize(string _workerpoolDescription) public +function m_datasetMultiaddr() external view returns (bytes) ``` -Constructor - -### changePolicy +### m_datasetChecksum ```solidity -function changePolicy(uint256 _newWorkerStakeRatioPolicy, uint256 _newSchedulerRewardRatioPolicy) external +function m_datasetChecksum() external view returns (bytes32) ``` -## WorkerpoolRegistry - -_Referenced in the SDK with the current path `contracts/registries/workerpools/WorkerpoolRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +## IWorkerpool -### constructor +### owner ```solidity -constructor() public +function owner() external view returns (address) ``` -Constructor - -### createWorkerpool +### m_workerpoolDescription ```solidity -function createWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external returns (contract Workerpool) +function m_workerpoolDescription() external view returns (string) ``` -### internal_mintCreate +### m_schedulerRewardRatioPolicy ```solidity -function internal_mintCreate(address _workerpoolOwner, bytes _args) external returns (address) +function m_schedulerRewardRatioPolicy() external view returns (uint256) ``` -### predictWorkerpool +### m_workerStakeRatioPolicy ```solidity -function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) +function m_workerStakeRatioPolicy() external view returns (uint256) ``` ## FacetBase From 9ddf6b31e8e841e1a612d7114ae7f926c3168f80 Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Tue, 28 Oct 2025 17:24:43 +0100 Subject: [PATCH 29/77] fix: Rollback modif --- contracts/registries/Registry.sol | 2 +- docs/solidity/index.md | 1906 ++++++++++++++--------------- 2 files changed, 954 insertions(+), 954 deletions(-) diff --git a/contracts/registries/Registry.sol b/contracts/registries/Registry.sol index b1791c7e6..c614af9bc 100644 --- a/contracts/registries/Registry.sol +++ b/contracts/registries/Registry.sol @@ -70,7 +70,7 @@ abstract contract Registry is IRegistry, ERC721Enumerable, Ownable { * iExec SDK. */ // TODO remove this function when Bellecour is deprecated. - function setName(address /* _ens */, string calldata /* _name */) external { + function setName(address /* _ens */, string calldata /* _name */) external onlyOwner { initialized = initialized; // Remove solidity state mutability warning. revert("Operation not supported on this chain"); } diff --git a/docs/solidity/index.md b/docs/solidity/index.md index 67ede4475..b49fa705b 100644 --- a/docs/solidity/index.md +++ b/docs/solidity/index.md @@ -1,1765 +1,1765 @@ # Solidity API -## IRegistry +## IexecConfigurationExtraFacet -### isRegistered +### changeRegistries ```solidity -function isRegistered(address _entry) external view returns (bool) +function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external ``` -## Registry +## IexecEscrow -### master +### Transfer ```solidity -address master +event Transfer(address from, address to, uint256 value) ``` -### proxyCode +### Lock ```solidity -bytes proxyCode +event Lock(address owner, uint256 amount) ``` -### proxyCodeHash +### Unlock ```solidity -bytes32 proxyCodeHash +event Unlock(address owner, uint256 amount) ``` -### previous +### Reward ```solidity -contract IRegistry previous +event Reward(address owner, uint256 amount, bytes32 ref) ``` -### initialized +### Seize ```solidity -bool initialized +event Seize(address owner, uint256 amount, bytes32 ref) ``` -### initialize +## Matching ```solidity -function initialize(address _previous) external +struct Matching { + bytes32 apporderHash; + address appOwner; + bytes32 datasetorderHash; + address datasetOwner; + bytes32 workerpoolorderHash; + address workerpoolOwner; + bytes32 requestorderHash; + bool hasDataset; +} ``` -### setBaseURI +## IexecPoco1Facet + +### verifySignature ```solidity -function setBaseURI(string baseUri) external +function verifySignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) ``` -### baseURI +### verifyPresignature ```solidity -function baseURI() public view returns (string) +function verifyPresignature(address _identity, bytes32 _hash) external view returns (bool) ``` -_Added for retrocompatibility! - -Returns the base URI set via {setBaseURI}. This will be -automatically added as a prefix in {tokenURI} to each token's ID._ - -### isRegistered +### verifyPresignatureOrSignature ```solidity -function isRegistered(address _entry) external view returns (bool) +function verifyPresignatureOrSignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) ``` -### setName +### assertDatasetDealCompatibility ```solidity -function setName(address, string) external +function assertDatasetDealCompatibility(struct IexecLibOrders_v5.DatasetOrder datasetOrder, bytes32 dealId) external view ``` -Sets the reverse registration name for a registry contract. +Public view function to check if a dataset order is compatible with a deal. +This function performs all the necessary checks to verify dataset order compatibility with a deal. +Reverts with `IncompatibleDatasetOrder(reason)` if the dataset order is not compatible with the deal, does +nothing otherwise. -_This functionality is supported only on Bellecour Sidechain, calls on other chains -will revert. The function is kept as nonpayable to maintain retrocompatibility with the -iExec SDK._ +_This function is mainly consumed by offchain clients. It should be carefully inspected if +used in on-chain code. +This function should not be used in `matchOrders` since it does not check the same requirements. +The choice of reverting instead of returning true/false is motivated by the Java middleware +requirements._ -## RegistryEntry +#### Parameters -_Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +| Name | Type | Description | +| ---- | ---- | ----------- | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order to verify | +| dealId | bytes32 | The deal ID to check against | -### registry +### matchOrders ```solidity -contract IRegistry registry +function matchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) ``` -### owner +Match orders. The requester gets debited. -```solidity -function owner() public view returns (address) -``` +#### Parameters -### setName +| Name | Type | Description | +| ---- | ---- | ----------- | +| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | +| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | + +### sponsorMatchOrders ```solidity -function setName(address, string) external +function sponsorMatchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) ``` -Sets the reverse registration name for a registry entry contract. +Sponsor match orders for a requester. +Unlike the standard `matchOrders(..)` hook where the requester pays for +the deal, this current hook makes it possible for any `msg.sender` to pay for +a third party requester. -_This functionality is supported only on Bellecour Sidechain, calls on other chains -will revert. The function is kept as nonpayable to maintain retrocompatibility with the -iExec SDK._ +Be aware that anyone seeing a valid request order on the network +(via an off-chain public marketplace, via a `sponsorMatchOrders(..)` +pending transaction in the mempool or by any other means) might decide +to call the standard `matchOrders(..)` hook which will result in the +requester being debited instead. Therefore, such a front run would result +in a loss of some of the requester funds deposited in the iExec account +(a loss value equivalent to the price of the deal). -## App +#### Parameters -_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +| Name | Type | Description | +| ---- | ---- | ----------- | +| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | +| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | -### m_appName +## IexecPoco2Facet + +### initialize ```solidity -string m_appName +function initialize(bytes32 _dealid, uint256 idx) public returns (bytes32) ``` -Members - -### m_appType +### contribute ```solidity -string m_appType +function contribute(bytes32 _taskid, bytes32 _resultHash, bytes32 _resultSeal, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external ``` -### m_appMultiaddr +### contributeAndFinalize ```solidity -bytes m_appMultiaddr +function contributeAndFinalize(bytes32 _taskid, bytes32 _resultDigest, bytes _results, bytes _resultsCallback, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external ``` -### m_appChecksum +### reveal ```solidity -bytes32 m_appChecksum +function reveal(bytes32 _taskid, bytes32 _resultDigest) external ``` -### m_appMREnclave +### reopen ```solidity -bytes m_appMREnclave +function reopen(bytes32 _taskid) external ``` -### initialize +### finalize ```solidity -function initialize(string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) public +function finalize(bytes32 _taskid, bytes _results, bytes _resultsCallback) external ``` -Constructor - -## AppRegistry +### claim -_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +function claim(bytes32 _taskid) public +``` -### constructor +### initializeArray ```solidity -constructor() public +function initializeArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) ``` -Constructor - -### createApp +### claimArray ```solidity -function createApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external returns (contract App) +function claimArray(bytes32[] _taskid) external returns (bool) ``` -### predictApp +### initializeAndClaimArray ```solidity -function predictApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external view returns (contract App) +function initializeAndClaimArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) ``` -## Dataset - -_Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +## IexecPocoAccessorsFacet -### m_datasetName +### viewDeal ```solidity -string m_datasetName +function viewDeal(bytes32 id) external view returns (struct IexecLibCore_v5.Deal deal) ``` -Members +Get a deal created by PoCo classic facet. -### m_datasetMultiaddr +#### Parameters -```solidity -bytes m_datasetMultiaddr -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | The ID of the deal. | -### m_datasetChecksum +### viewTask ```solidity -bytes32 m_datasetChecksum +function viewTask(bytes32 id) external view returns (struct IexecLibCore_v5.Task) ``` -### initialize +Get task created in Classic mode. + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | id of the task | + +### computeDealVolume ```solidity -function initialize(string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) public +function computeDealVolume(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external view returns (uint256) ``` -Constructor +Computes the volume of the "not yet created" deal based on the provided orders. +This function should only be used if the deal is not yet created. +For existing deals, use the deal accessors instead. -## DatasetRegistry +#### Parameters -_Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The application order. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The request order. | -### constructor +#### Return Values + +| Name | Type | Description | +| ---- | ---- | ----------- | +| [0] | uint256 | The computed deal volume. | + +### viewConsumed ```solidity -constructor() public +function viewConsumed(bytes32 _id) external view returns (uint256 consumed) ``` -Constructor - -### createDataset +### viewPresigned ```solidity -function createDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external returns (contract Dataset) +function viewPresigned(bytes32 _id) external view returns (address signer) ``` -### predictDataset +### viewContribution ```solidity -function predictDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external view returns (contract Dataset) +function viewContribution(bytes32 _taskid, address _worker) external view returns (struct IexecLibCore_v5.Contribution) ``` -## Address - -## BaseUpgradeabilityProxy - -_This contract implements a proxy that allows to change the -implementation address to which it will delegate. -Such a change is called an implementation upgrade._ - -### Upgraded +### viewScore ```solidity -event Upgraded(address implementation) +function viewScore(address _worker) external view returns (uint256) ``` -_Emitted when the implementation is upgraded._ - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| implementation | address | Address of the new implementation. | - -## InitializableUpgradeabilityProxy - -_Extends BaseUpgradeabilityProxy with an initializer for initializing -implementation and init data._ - -### initialize +### resultFor ```solidity -function initialize(address _logic, bytes _data) public payable +function resultFor(bytes32 id) external view returns (bytes) ``` -_Contract initializer._ - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| _logic | address | Address of the initial implementation. | -| _data | bytes | Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. | - -## Proxy - -_Implements delegation of calls to other contracts, with proper -forwarding of return values and bubbling of failures. -It defines a fallback function that delegates all calls to the address -returned by the abstract _implementation() internal function._ - -### receive +### name ```solidity -receive() external payable virtual +function name() external view returns (string) ``` -_Receive function. -Implemented entirely in `_fallback`._ - -### fallback +### symbol ```solidity -fallback() external payable +function symbol() external view returns (string) ``` -_Fallback function. -Implemented entirely in `_fallback`._ - -## Workerpool - -_Referenced in the SDK with the current path `contracts/registries/workerpools/Workerpool.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### m_workerpoolDescription +### decimals ```solidity -string m_workerpoolDescription +function decimals() external view returns (uint8) ``` -Parameters - -### m_workerStakeRatioPolicy +### totalSupply ```solidity -uint256 m_workerStakeRatioPolicy +function totalSupply() external view returns (uint256) ``` -### m_schedulerRewardRatioPolicy +### balanceOf ```solidity -uint256 m_schedulerRewardRatioPolicy +function balanceOf(address account) external view returns (uint256) ``` -### PolicyUpdate +### frozenOf ```solidity -event PolicyUpdate(uint256 oldWorkerStakeRatioPolicy, uint256 newWorkerStakeRatioPolicy, uint256 oldSchedulerRewardRatioPolicy, uint256 newSchedulerRewardRatioPolicy) +function frozenOf(address account) external view returns (uint256) ``` -Events - -### initialize +### allowance ```solidity -function initialize(string _workerpoolDescription) public +function allowance(address account, address spender) external view returns (uint256) ``` -Constructor - -### changePolicy +### viewAccount ```solidity -function changePolicy(uint256 _newWorkerStakeRatioPolicy, uint256 _newSchedulerRewardRatioPolicy) external +function viewAccount(address account) external view returns (struct IexecLibCore_v5.Account) ``` -## WorkerpoolRegistry - -_Referenced in the SDK with the current path `contracts/registries/workerpools/WorkerpoolRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### constructor +### token ```solidity -constructor() public +function token() external view returns (address) ``` -Constructor - -### createWorkerpool +### viewCategory ```solidity -function createWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external returns (contract Workerpool) +function viewCategory(uint256 _catid) external view returns (struct IexecLibCore_v5.Category category) ``` -### predictWorkerpool +### countCategory ```solidity -function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) +function countCategory() external view returns (uint256 count) ``` -## IexecInterfaceNative - -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in native mode. - -_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -## IexecInterfaceToken - -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in token mode. - -_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -## IexecCategoryManagerFacet - -### createCategory +### appregistry ```solidity -function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) +function appregistry() external view returns (contract IRegistry) ``` -Methods - -## IexecConfigurationExtraFacet - -### changeRegistries +### datasetregistry ```solidity -function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external +function datasetregistry() external view returns (contract IRegistry) ``` -## IexecConfigurationFacet - -### configure +### workerpoolregistry ```solidity -function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external +function workerpoolregistry() external view returns (contract IRegistry) ``` -### domain +### teebroker ```solidity -function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) +function teebroker() external view returns (address) ``` -### updateDomainSeparator +### callbackgas ```solidity -function updateDomainSeparator() external +function callbackgas() external view returns (uint256) ``` -### importScore +### viewDataset ```solidity -function importScore(address _worker) external +function viewDataset(address dataset) external view returns (struct IexecLibCore_v5.DatasetInfo) ``` -### setTeeBroker +### viewApp ```solidity -function setTeeBroker(address _teebroker) external +function viewApp(address app) external view returns (struct IexecLibCore_v5.AppInfo) ``` -### setCallbackGas +### viewWorkerpool ```solidity -function setCallbackGas(uint256 _callbackgas) external +function viewWorkerpool(address workerpool) external view returns (struct IexecLibCore_v5.WorkerpoolInfo) ``` -## IexecERC20Core - -## IexecERC20Facet - -### transfer +### contribution_deadline_ratio ```solidity -function transfer(address recipient, uint256 amount) external returns (bool) +function contribution_deadline_ratio() external pure returns (uint256) ``` -### approve +### reveal_deadline_ratio ```solidity -function approve(address spender, uint256 value) external returns (bool) +function reveal_deadline_ratio() external pure returns (uint256) ``` -### approveAndCall +### final_deadline_ratio ```solidity -function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) +function final_deadline_ratio() external pure returns (uint256) ``` -### transferFrom +### workerpool_stake_ratio ```solidity -function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) +function workerpool_stake_ratio() external pure returns (uint256) ``` -### increaseAllowance +### kitty_ratio ```solidity -function increaseAllowance(address spender, uint256 addedValue) external returns (bool) +function kitty_ratio() external pure returns (uint256) ``` -### decreaseAllowance +### kitty_min ```solidity -function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) +function kitty_min() external pure returns (uint256) ``` -## IexecEscrow - -### Transfer +### kitty_address ```solidity -event Transfer(address from, address to, uint256 value) +function kitty_address() external pure returns (address) ``` -### Lock +### groupmember_purpose ```solidity -event Lock(address owner, uint256 amount) +function groupmember_purpose() external pure returns (uint256) ``` -### Unlock +### eip712domain_separator ```solidity -event Unlock(address owner, uint256 amount) +function eip712domain_separator() external view returns (bytes32) ``` -### Reward +## IexecPocoBoostAccessorsFacet -```solidity -event Reward(address owner, uint256 amount, bytes32 ref) -``` +Access to PoCo Boost tasks must be done with PoCo Classic `IexecPocoAccessors`. -### Seize +### viewDealBoost ```solidity -event Seize(address owner, uint256 amount, bytes32 ref) +function viewDealBoost(bytes32 id) external view returns (struct IexecLibCore_v5.DealBoost deal) ``` -## IexecEscrowNativeFacet +Get a deal created by PoCo Boost facet. -### receive +#### Parameters -```solidity -receive() external payable -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | The ID of the deal. | -### fallback +## IexecPocoBoostFacet -```solidity -fallback() external payable -``` +Works for deals with requested trust = 0. -### deposit +### matchOrdersBoost ```solidity -function deposit() external payable returns (bool) +function matchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) ``` -### depositFor - -```solidity -function depositFor(address target) external payable returns (bool) -``` +This boost match orders is only compatible with trust <= 1. +The requester gets debited. -### depositForArray +#### Parameters -```solidity -function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The order signed by the application developer. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The order signed by the dataset provider. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The order signed by the workerpool manager. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The order signed by the requester. | -### withdraw +#### Return Values + +| Name | Type | Description | +| ---- | ---- | ----------- | +| [0] | bytes32 | The ID of the deal. | + +### sponsorMatchOrdersBoost ```solidity -function withdraw(uint256 amount) external returns (bool) +function sponsorMatchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) ``` -### withdrawTo +Sponsor match orders boost for a requester. +Unlike the standard `matchOrdersBoost(..)` hook where the requester pays for +the deal, this current hook makes it possible for any `msg.sender` to pay for +a third party requester. + +Be aware that anyone seeing a valid request order on the network +(via an off-chain public marketplace, via a `sponsorMatchOrdersBoost(..)` +pending transaction in the mempool or by any other means) might decide +to call the standard `matchOrdersBoost(..)` hook which will result in the +requester being debited instead. Therefore, such a front run would result +in a loss of some of the requester funds deposited in the iExec account +(a loss value equivalent to the price of the deal). + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The app order. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The requester order. | + +### pushResultBoost ```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) +function pushResultBoost(bytes32 dealId, uint256 index, bytes results, bytes resultsCallback, bytes authorizationSign, address enclaveChallenge, bytes enclaveSign) external ``` -### recover +Accept results of a task computed by a worker during Boost workflow. + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| dealId | bytes32 | The id of the target deal. | +| index | uint256 | The index of the target task of the deal. | +| results | bytes | The results of the task computed by the worker. | +| resultsCallback | bytes | The results of the task computed by the worker that will be forwarded as call data to the callback address set by the requester. | +| authorizationSign | bytes | The authorization signed by the scheduler. authorizing the worker to push a result. | +| enclaveChallenge | address | The enclave address which can produce enclave signature. | +| enclaveSign | bytes | The signature generated from the enclave. | + +### claimBoost ```solidity -function recover() external returns (uint256) +function claimBoost(bytes32 dealId, uint256 index) external ``` -## IexecEscrowTokenFacet +Claim task to get a refund if task is not completed after deadline. -### receive +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| dealId | bytes32 | The ID of the deal. | +| index | uint256 | The index of the task. | + +## IexecLibCore_v5 + +### Account + +Tools ```solidity -receive() external payable +struct Account { + uint256 stake; + uint256 locked; +} ``` -### fallback +### Category ```solidity -fallback() external payable +struct Category { + string name; + string description; + uint256 workClockTimeRef; +} ``` -### deposit +### DatasetInfo ```solidity -function deposit(uint256 amount) external returns (bool) +struct DatasetInfo { + address owner; + string m_datasetName; + bytes m_datasetMultiaddr; + bytes32 m_datasetChecksum; +} ``` -### depositFor +### AppInfo ```solidity -function depositFor(uint256 amount, address target) external returns (bool) +struct AppInfo { + address owner; + string m_appName; + string m_appType; + bytes m_appMultiaddr; + bytes32 m_appChecksum; + bytes m_appMREnclave; +} ``` -### depositForArray +### WorkerpoolInfo ```solidity -function depositForArray(uint256[] amounts, address[] targets) external returns (bool) +struct WorkerpoolInfo { + address owner; + string m_workerpoolDescription; + uint256 m_workerStakeRatioPolicy; + uint256 m_schedulerRewardRatioPolicy; +} ``` -### withdraw +### Resource + +Clerk - Deals ```solidity -function withdraw(uint256 amount) external returns (bool) +struct Resource { + address pointer; + address owner; + uint256 price; +} ``` -### withdrawTo +### Deal ```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) +struct Deal { + struct IexecLibCore_v5.Resource app; + struct IexecLibCore_v5.Resource dataset; + struct IexecLibCore_v5.Resource workerpool; + uint256 trust; + uint256 category; + bytes32 tag; + address requester; + address beneficiary; + address callback; + string params; + uint256 startTime; + uint256 botFirst; + uint256 botSize; + uint256 workerStake; + uint256 schedulerRewardRatio; + address sponsor; +} ``` -### recover +### DealBoost + +Simplified deals for PoCo Boost module. ```solidity -function recover() external returns (uint256) +struct DealBoost { + address appOwner; + uint96 appPrice; + address datasetOwner; + uint96 datasetPrice; + address workerpoolOwner; + uint96 workerpoolPrice; + address requester; + uint96 workerReward; + address callback; + uint40 deadline; + uint16 botFirst; + uint16 botSize; + bytes3 shortTag; + address sponsor; +} ``` -### receiveApproval +### TaskStatusEnum + +Tasks ```solidity -function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) +enum TaskStatusEnum { + UNSET, + ACTIVE, + REVEALING, + COMPLETED, + FAILED +} ``` -## IexecOrderManagementFacet +### Task -### manageAppOrder +```solidity +struct Task { + enum IexecLibCore_v5.TaskStatusEnum status; + bytes32 dealid; + uint256 idx; + uint256 timeref; + uint256 contributionDeadline; + uint256 revealDeadline; + uint256 finalDeadline; + bytes32 consensusValue; + uint256 revealCounter; + uint256 winnerCounter; + address[] contributors; + bytes32 resultDigest; + bytes results; + uint256 resultsTimestamp; + bytes resultsCallback; +} +``` + +### Consensus + +Consensus ```solidity -function manageAppOrder(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) external +struct Consensus { + mapping(bytes32 => uint256) group; + uint256 total; +} +``` + +### ContributionStatusEnum + +Consensus + +```solidity +enum ContributionStatusEnum { + UNSET, + CONTRIBUTED, + PROVED, + REJECTED +} +``` + +### Contribution + +```solidity +struct Contribution { + enum IexecLibCore_v5.ContributionStatusEnum status; + bytes32 resultHash; + bytes32 resultSeal; + address enclaveChallenge; + uint256 weight; +} +``` + +## IexecLibOrders_v5 + +### EIP712DOMAIN_TYPEHASH + +```solidity +bytes32 EIP712DOMAIN_TYPEHASH +``` + +### APPORDER_TYPEHASH + +```solidity +bytes32 APPORDER_TYPEHASH +``` + +### DATASETORDER_TYPEHASH + +```solidity +bytes32 DATASETORDER_TYPEHASH +``` + +### WORKERPOOLORDER_TYPEHASH + +```solidity +bytes32 WORKERPOOLORDER_TYPEHASH +``` + +### REQUESTORDER_TYPEHASH + +```solidity +bytes32 REQUESTORDER_TYPEHASH +``` + +### APPORDEROPERATION_TYPEHASH + +```solidity +bytes32 APPORDEROPERATION_TYPEHASH +``` + +### DATASETORDEROPERATION_TYPEHASH + +```solidity +bytes32 DATASETORDEROPERATION_TYPEHASH +``` + +### WORKERPOOLORDEROPERATION_TYPEHASH + +```solidity +bytes32 WORKERPOOLORDEROPERATION_TYPEHASH +``` + +### REQUESTORDEROPERATION_TYPEHASH + +```solidity +bytes32 REQUESTORDEROPERATION_TYPEHASH +``` + +### OrderOperationEnum + +```solidity +enum OrderOperationEnum { + SIGN, + CLOSE +} +``` + +### EIP712Domain + +```solidity +struct EIP712Domain { + string name; + string version; + uint256 chainId; + address verifyingContract; +} +``` + +### AppOrder + +```solidity +struct AppOrder { + address app; + uint256 appprice; + uint256 volume; + bytes32 tag; + address datasetrestrict; + address workerpoolrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} +``` + +### DatasetOrder + +```solidity +struct DatasetOrder { + address dataset; + uint256 datasetprice; + uint256 volume; + bytes32 tag; + address apprestrict; + address workerpoolrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} +``` + +### WorkerpoolOrder + +```solidity +struct WorkerpoolOrder { + address workerpool; + uint256 workerpoolprice; + uint256 volume; + bytes32 tag; + uint256 category; + uint256 trust; + address apprestrict; + address datasetrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} +``` + +### RequestOrder + +```solidity +struct RequestOrder { + address app; + uint256 appmaxprice; + address dataset; + uint256 datasetmaxprice; + address workerpool; + uint256 workerpoolmaxprice; + address requester; + uint256 volume; + bytes32 tag; + uint256 category; + uint256 trust; + address beneficiary; + address callback; + string params; + bytes32 salt; + bytes sign; +} ``` -### manageDatasetOrder +### AppOrderOperation ```solidity -function manageDatasetOrder(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) external +struct AppOrderOperation { + struct IexecLibOrders_v5.AppOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -### manageWorkerpoolOrder +### DatasetOrderOperation ```solidity -function manageWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) external +struct DatasetOrderOperation { + struct IexecLibOrders_v5.DatasetOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -### manageRequestOrder +### WorkerpoolOrderOperation ```solidity -function manageRequestOrder(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) external +struct WorkerpoolOrderOperation { + struct IexecLibOrders_v5.WorkerpoolOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -## Matching +### RequestOrderOperation ```solidity -struct Matching { - bytes32 apporderHash; - address appOwner; - bytes32 datasetorderHash; - address datasetOwner; - bytes32 workerpoolorderHash; - address workerpoolOwner; - bytes32 requestorderHash; - bool hasDataset; +struct RequestOrderOperation { + struct IexecLibOrders_v5.RequestOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; } ``` -## IexecPoco1Facet - -### verifySignature +### hash ```solidity -function verifySignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) +function hash(struct IexecLibOrders_v5.EIP712Domain _domain) public pure returns (bytes32 domainhash) ``` -### verifyPresignature +### hash ```solidity -function verifyPresignature(address _identity, bytes32 _hash) external view returns (bool) +function hash(struct IexecLibOrders_v5.AppOrder _apporder) public pure returns (bytes32 apphash) ``` -### verifyPresignatureOrSignature +### hash ```solidity -function verifyPresignatureOrSignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) +function hash(struct IexecLibOrders_v5.DatasetOrder _datasetorder) public pure returns (bytes32 datasethash) ``` -### assertDatasetDealCompatibility +### hash ```solidity -function assertDatasetDealCompatibility(struct IexecLibOrders_v5.DatasetOrder datasetOrder, bytes32 dealId) external view +function hash(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) public pure returns (bytes32 workerpoolhash) ``` -Public view function to check if a dataset order is compatible with a deal. -This function performs all the necessary checks to verify dataset order compatibility with a deal. -Reverts with `IncompatibleDatasetOrder(reason)` if the dataset order is not compatible with the deal, does -nothing otherwise. - -_This function is mainly consumed by offchain clients. It should be carefully inspected if -used in on-chain code. -This function should not be used in `matchOrders` since it does not check the same requirements. -The choice of reverting instead of returning true/false is motivated by the Java middleware -requirements._ - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order to verify | -| dealId | bytes32 | The deal ID to check against | - -### matchOrders +### hash ```solidity -function matchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) +function hash(struct IexecLibOrders_v5.RequestOrder _requestorder) public pure returns (bytes32 requesthash) ``` -Match orders. The requester gets debited. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | -| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | - -### sponsorMatchOrders +### hash ```solidity -function sponsorMatchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) +function hash(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) public pure returns (bytes32) ``` -Sponsor match orders for a requester. -Unlike the standard `matchOrders(..)` hook where the requester pays for -the deal, this current hook makes it possible for any `msg.sender` to pay for -a third party requester. - -Be aware that anyone seeing a valid request order on the network -(via an off-chain public marketplace, via a `sponsorMatchOrders(..)` -pending transaction in the mempool or by any other means) might decide -to call the standard `matchOrders(..)` hook which will result in the -requester being debited instead. Therefore, such a front run would result -in a loss of some of the requester funds deposited in the iExec account -(a loss value equivalent to the price of the deal). - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | -| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | - -## IexecPoco2Facet - -### initialize +### hash ```solidity -function initialize(bytes32 _dealid, uint256 idx) public returns (bytes32) +function hash(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) public pure returns (bytes32) ``` -### contribute +### hash ```solidity -function contribute(bytes32 _taskid, bytes32 _resultHash, bytes32 _resultSeal, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external +function hash(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) public pure returns (bytes32) ``` -### contributeAndFinalize +### hash ```solidity -function contributeAndFinalize(bytes32 _taskid, bytes32 _resultDigest, bytes _results, bytes _resultsCallback, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external +function hash(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) public pure returns (bytes32) ``` -### reveal +## PocoStorageLib + +### PocoStorage ```solidity -function reveal(bytes32 _taskid, bytes32 _resultDigest) external +struct PocoStorage { + contract IRegistry m_appregistry; + contract IRegistry m_datasetregistry; + contract IRegistry m_workerpoolregistry; + contract IERC20 m_baseToken; + string m_name; + string m_symbol; + uint8 m_decimals; + uint256 m_totalSupply; + mapping(address => uint256) m_balances; + mapping(address => uint256) m_frozens; + mapping(address => mapping(address => uint256)) m_allowances; + bytes32 m_eip712DomainSeparator; + mapping(bytes32 => address) m_presigned; + mapping(bytes32 => uint256) m_consumed; + mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; + mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; + mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; + mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; + mapping(address => uint256) m_workerScores; + address m_teebroker; + uint256 m_callbackgas; + struct IexecLibCore_v5.Category[] m_categories; + contract IexecHubV3Interface m_v3_iexecHub; + mapping(address => bool) m_v3_scoreImported; + mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; +} ``` -### reopen +## IRegistry + +### isRegistered ```solidity -function reopen(bytes32 _taskid) external +function isRegistered(address _entry) external view returns (bool) ``` -### finalize +## Registry + +### master ```solidity -function finalize(bytes32 _taskid, bytes _results, bytes _resultsCallback) external +address master ``` -### claim +### proxyCode ```solidity -function claim(bytes32 _taskid) public +bytes proxyCode ``` -### initializeArray +### proxyCodeHash ```solidity -function initializeArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) +bytes32 proxyCodeHash ``` -### claimArray +### previous ```solidity -function claimArray(bytes32[] _taskid) external returns (bool) +contract IRegistry previous ``` -### initializeAndClaimArray +### initialized ```solidity -function initializeAndClaimArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) +bool initialized ``` -## IexecPocoAccessorsFacet - -### viewDeal +### initialize ```solidity -function viewDeal(bytes32 id) external view returns (struct IexecLibCore_v5.Deal deal) +function initialize(address _previous) external ``` -Get a deal created by PoCo classic facet. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | The ID of the deal. | - -### viewTask +### setBaseURI ```solidity -function viewTask(bytes32 id) external view returns (struct IexecLibCore_v5.Task) +function setBaseURI(string baseUri) external ``` -Get task created in Classic mode. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | id of the task | - -### computeDealVolume +### baseURI ```solidity -function computeDealVolume(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external view returns (uint256) +function baseURI() public view returns (string) ``` -Computes the volume of the "not yet created" deal based on the provided orders. -This function should only be used if the deal is not yet created. -For existing deals, use the deal accessors instead. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The application order. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The request order. | - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | uint256 | The computed deal volume. | - -### viewConsumed +_Added for retrocompatibility! -```solidity -function viewConsumed(bytes32 _id) external view returns (uint256 consumed) -``` +Returns the base URI set via {setBaseURI}. This will be +automatically added as a prefix in {tokenURI} to each token's ID._ -### viewPresigned +### isRegistered ```solidity -function viewPresigned(bytes32 _id) external view returns (address signer) +function isRegistered(address _entry) external view returns (bool) ``` -### viewContribution +### setName ```solidity -function viewContribution(bytes32 _taskid, address _worker) external view returns (struct IexecLibCore_v5.Contribution) +function setName(address, string) external ``` -### viewScore +Sets the reverse registration name for a registry contract. -```solidity -function viewScore(address _worker) external view returns (uint256) -``` +_This functionality is supported only on Bellecour Sidechain, calls on other chains +will revert. The function is kept as nonpayable to maintain retrocompatibility with the +iExec SDK._ -### resultFor +## RegistryEntry -```solidity -function resultFor(bytes32 id) external view returns (bytes) -``` +_Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### name +### registry ```solidity -function name() external view returns (string) +contract IRegistry registry ``` -### symbol +### owner ```solidity -function symbol() external view returns (string) +function owner() public view returns (address) ``` -### decimals +### setName ```solidity -function decimals() external view returns (uint8) +function setName(address, string) external ``` -### totalSupply +Sets the reverse registration name for a registry entry contract. -```solidity -function totalSupply() external view returns (uint256) -``` +_This functionality is supported only on Bellecour Sidechain, calls on other chains +will revert. The function is kept as nonpayable to maintain retrocompatibility with the +iExec SDK._ -### balanceOf +## App -```solidity -function balanceOf(address account) external view returns (uint256) -``` +_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### frozenOf +### m_appName ```solidity -function frozenOf(address account) external view returns (uint256) +string m_appName ``` -### allowance +Members + +### m_appType ```solidity -function allowance(address account, address spender) external view returns (uint256) +string m_appType ``` -### viewAccount +### m_appMultiaddr ```solidity -function viewAccount(address account) external view returns (struct IexecLibCore_v5.Account) +bytes m_appMultiaddr ``` -### token +### m_appChecksum ```solidity -function token() external view returns (address) +bytes32 m_appChecksum ``` -### viewCategory +### m_appMREnclave ```solidity -function viewCategory(uint256 _catid) external view returns (struct IexecLibCore_v5.Category category) +bytes m_appMREnclave ``` -### countCategory +### initialize ```solidity -function countCategory() external view returns (uint256 count) +function initialize(string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) public ``` -### appregistry +Constructor -```solidity -function appregistry() external view returns (contract IRegistry) -``` +## AppRegistry -### datasetregistry +_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### constructor ```solidity -function datasetregistry() external view returns (contract IRegistry) +constructor() public ``` -### workerpoolregistry +Constructor + +### createApp ```solidity -function workerpoolregistry() external view returns (contract IRegistry) +function createApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external returns (contract App) ``` -### teebroker +### predictApp ```solidity -function teebroker() external view returns (address) +function predictApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external view returns (contract App) ``` -### callbackgas +## IApp + +### owner ```solidity -function callbackgas() external view returns (uint256) +function owner() external view returns (address) ``` -### viewDataset +### m_appName ```solidity -function viewDataset(address dataset) external view returns (struct IexecLibCore_v5.DatasetInfo) +function m_appName() external view returns (string) ``` -### viewApp +### m_appType ```solidity -function viewApp(address app) external view returns (struct IexecLibCore_v5.AppInfo) +function m_appType() external view returns (string) ``` -### viewWorkerpool +### m_appMultiaddr ```solidity -function viewWorkerpool(address workerpool) external view returns (struct IexecLibCore_v5.WorkerpoolInfo) +function m_appMultiaddr() external view returns (bytes) ``` -### contribution_deadline_ratio +### m_appChecksum ```solidity -function contribution_deadline_ratio() external pure returns (uint256) +function m_appChecksum() external view returns (bytes32) ``` -### reveal_deadline_ratio +### m_appMREnclave ```solidity -function reveal_deadline_ratio() external pure returns (uint256) +function m_appMREnclave() external view returns (bytes) ``` -### final_deadline_ratio +## Dataset -```solidity -function final_deadline_ratio() external pure returns (uint256) -``` +_Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### workerpool_stake_ratio +### m_datasetName ```solidity -function workerpool_stake_ratio() external pure returns (uint256) +string m_datasetName ``` -### kitty_ratio +Members + +### m_datasetMultiaddr ```solidity -function kitty_ratio() external pure returns (uint256) +bytes m_datasetMultiaddr ``` -### kitty_min +### m_datasetChecksum ```solidity -function kitty_min() external pure returns (uint256) +bytes32 m_datasetChecksum ``` -### kitty_address +### initialize ```solidity -function kitty_address() external pure returns (address) +function initialize(string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) public ``` -### groupmember_purpose +Constructor -```solidity -function groupmember_purpose() external pure returns (uint256) -``` +## DatasetRegistry -### eip712domain_separator +_Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### constructor ```solidity -function eip712domain_separator() external view returns (bytes32) +constructor() public ``` -## IexecPocoBoostAccessorsFacet - -Access to PoCo Boost tasks must be done with PoCo Classic `IexecPocoAccessors`. +Constructor -### viewDealBoost +### createDataset ```solidity -function viewDealBoost(bytes32 id) external view returns (struct IexecLibCore_v5.DealBoost deal) +function createDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external returns (contract Dataset) ``` -Get a deal created by PoCo Boost facet. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | The ID of the deal. | +### predictDataset -## IexecPocoBoostFacet +```solidity +function predictDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external view returns (contract Dataset) +``` -Works for deals with requested trust = 0. +## IDataset -### matchOrdersBoost +### owner ```solidity -function matchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) +function owner() external view returns (address) ``` -This boost match orders is only compatible with trust <= 1. -The requester gets debited. - -#### Parameters +### m_datasetName -| Name | Type | Description | -| ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The order signed by the application developer. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The order signed by the dataset provider. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The order signed by the workerpool manager. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The order signed by the requester. | +```solidity +function m_datasetName() external view returns (string) +``` -#### Return Values +### m_datasetMultiaddr -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | bytes32 | The ID of the deal. | +```solidity +function m_datasetMultiaddr() external view returns (bytes) +``` -### sponsorMatchOrdersBoost +### m_datasetChecksum ```solidity -function sponsorMatchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) +function m_datasetChecksum() external view returns (bytes32) ``` -Sponsor match orders boost for a requester. -Unlike the standard `matchOrdersBoost(..)` hook where the requester pays for -the deal, this current hook makes it possible for any `msg.sender` to pay for -a third party requester. - -Be aware that anyone seeing a valid request order on the network -(via an off-chain public marketplace, via a `sponsorMatchOrdersBoost(..)` -pending transaction in the mempool or by any other means) might decide -to call the standard `matchOrdersBoost(..)` hook which will result in the -requester being debited instead. Therefore, such a front run would result -in a loss of some of the requester funds deposited in the iExec account -(a loss value equivalent to the price of the deal). +## Address -#### Parameters +## BaseUpgradeabilityProxy -| Name | Type | Description | -| ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The app order. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The requester order. | +_This contract implements a proxy that allows to change the +implementation address to which it will delegate. +Such a change is called an implementation upgrade._ -### pushResultBoost +### Upgraded ```solidity -function pushResultBoost(bytes32 dealId, uint256 index, bytes results, bytes resultsCallback, bytes authorizationSign, address enclaveChallenge, bytes enclaveSign) external +event Upgraded(address implementation) ``` -Accept results of a task computed by a worker during Boost workflow. +_Emitted when the implementation is upgraded._ #### Parameters | Name | Type | Description | | ---- | ---- | ----------- | -| dealId | bytes32 | The id of the target deal. | -| index | uint256 | The index of the target task of the deal. | -| results | bytes | The results of the task computed by the worker. | -| resultsCallback | bytes | The results of the task computed by the worker that will be forwarded as call data to the callback address set by the requester. | -| authorizationSign | bytes | The authorization signed by the scheduler. authorizing the worker to push a result. | -| enclaveChallenge | address | The enclave address which can produce enclave signature. | -| enclaveSign | bytes | The signature generated from the enclave. | +| implementation | address | Address of the new implementation. | + +## InitializableUpgradeabilityProxy + +_Extends BaseUpgradeabilityProxy with an initializer for initializing +implementation and init data._ -### claimBoost +### initialize ```solidity -function claimBoost(bytes32 dealId, uint256 index) external +function initialize(address _logic, bytes _data) public payable ``` -Claim task to get a refund if task is not completed after deadline. +_Contract initializer._ #### Parameters | Name | Type | Description | | ---- | ---- | ----------- | -| dealId | bytes32 | The ID of the deal. | -| index | uint256 | The index of the task. | - -## IexecRelayFacet +| _logic | address | Address of the initial implementation. | +| _data | bytes | Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. | -### broadcastAppOrder +## Proxy -```solidity -function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external -``` +_Implements delegation of calls to other contracts, with proper +forwarding of return values and bubbling of failures. +It defines a fallback function that delegates all calls to the address +returned by the abstract _implementation() internal function._ -### broadcastDatasetOrder +### receive ```solidity -function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external +receive() external payable virtual ``` -### broadcastWorkerpoolOrder - -```solidity -function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external -``` +_Receive function. +Implemented entirely in `_fallback`._ -### broadcastRequestOrder +### fallback ```solidity -function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external +fallback() external payable ``` -## IexecLibCore_v5 +_Fallback function. +Implemented entirely in `_fallback`._ -### Account +## IWorkerpool -Tools +### owner ```solidity -struct Account { - uint256 stake; - uint256 locked; -} +function owner() external view returns (address) ``` -### Category +### m_workerpoolDescription ```solidity -struct Category { - string name; - string description; - uint256 workClockTimeRef; -} +function m_workerpoolDescription() external view returns (string) ``` -### DatasetInfo +### m_schedulerRewardRatioPolicy ```solidity -struct DatasetInfo { - address owner; - string m_datasetName; - bytes m_datasetMultiaddr; - bytes32 m_datasetChecksum; -} +function m_schedulerRewardRatioPolicy() external view returns (uint256) ``` -### AppInfo +### m_workerStakeRatioPolicy ```solidity -struct AppInfo { - address owner; - string m_appName; - string m_appType; - bytes m_appMultiaddr; - bytes32 m_appChecksum; - bytes m_appMREnclave; -} +function m_workerStakeRatioPolicy() external view returns (uint256) ``` -### WorkerpoolInfo +## Workerpool + +_Referenced in the SDK with the current path `contracts/registries/workerpools/Workerpool.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### m_workerpoolDescription ```solidity -struct WorkerpoolInfo { - address owner; - string m_workerpoolDescription; - uint256 m_workerStakeRatioPolicy; - uint256 m_schedulerRewardRatioPolicy; -} +string m_workerpoolDescription ``` -### Resource +Parameters -Clerk - Deals +### m_workerStakeRatioPolicy ```solidity -struct Resource { - address pointer; - address owner; - uint256 price; -} +uint256 m_workerStakeRatioPolicy ``` -### Deal +### m_schedulerRewardRatioPolicy ```solidity -struct Deal { - struct IexecLibCore_v5.Resource app; - struct IexecLibCore_v5.Resource dataset; - struct IexecLibCore_v5.Resource workerpool; - uint256 trust; - uint256 category; - bytes32 tag; - address requester; - address beneficiary; - address callback; - string params; - uint256 startTime; - uint256 botFirst; - uint256 botSize; - uint256 workerStake; - uint256 schedulerRewardRatio; - address sponsor; -} +uint256 m_schedulerRewardRatioPolicy ``` -### DealBoost - -Simplified deals for PoCo Boost module. +### PolicyUpdate ```solidity -struct DealBoost { - address appOwner; - uint96 appPrice; - address datasetOwner; - uint96 datasetPrice; - address workerpoolOwner; - uint96 workerpoolPrice; - address requester; - uint96 workerReward; - address callback; - uint40 deadline; - uint16 botFirst; - uint16 botSize; - bytes3 shortTag; - address sponsor; -} +event PolicyUpdate(uint256 oldWorkerStakeRatioPolicy, uint256 newWorkerStakeRatioPolicy, uint256 oldSchedulerRewardRatioPolicy, uint256 newSchedulerRewardRatioPolicy) ``` -### TaskStatusEnum +Events -Tasks +### initialize ```solidity -enum TaskStatusEnum { - UNSET, - ACTIVE, - REVEALING, - COMPLETED, - FAILED -} +function initialize(string _workerpoolDescription) public ``` -### Task +Constructor + +### changePolicy ```solidity -struct Task { - enum IexecLibCore_v5.TaskStatusEnum status; - bytes32 dealid; - uint256 idx; - uint256 timeref; - uint256 contributionDeadline; - uint256 revealDeadline; - uint256 finalDeadline; - bytes32 consensusValue; - uint256 revealCounter; - uint256 winnerCounter; - address[] contributors; - bytes32 resultDigest; - bytes results; - uint256 resultsTimestamp; - bytes resultsCallback; -} +function changePolicy(uint256 _newWorkerStakeRatioPolicy, uint256 _newSchedulerRewardRatioPolicy) external ``` -### Consensus +## WorkerpoolRegistry -Consensus +_Referenced in the SDK with the current path `contracts/registries/workerpools/WorkerpoolRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### constructor ```solidity -struct Consensus { - mapping(bytes32 => uint256) group; - uint256 total; -} +constructor() public ``` -### ContributionStatusEnum +Constructor -Consensus +### createWorkerpool ```solidity -enum ContributionStatusEnum { - UNSET, - CONTRIBUTED, - PROVED, - REJECTED -} +function createWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external returns (contract Workerpool) ``` -### Contribution +### predictWorkerpool ```solidity -struct Contribution { - enum IexecLibCore_v5.ContributionStatusEnum status; - bytes32 resultHash; - bytes32 resultSeal; - address enclaveChallenge; - uint256 weight; -} +function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) ``` -## IexecLibOrders_v5 - -### EIP712DOMAIN_TYPEHASH - -```solidity -bytes32 EIP712DOMAIN_TYPEHASH -``` +## IexecInterfaceNative -### APPORDER_TYPEHASH +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in native mode. -```solidity -bytes32 APPORDER_TYPEHASH -``` +_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### DATASETORDER_TYPEHASH +## IexecInterfaceToken -```solidity -bytes32 DATASETORDER_TYPEHASH -``` +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in token mode. -### WORKERPOOLORDER_TYPEHASH +_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -```solidity -bytes32 WORKERPOOLORDER_TYPEHASH -``` +## IexecCategoryManagerFacet -### REQUESTORDER_TYPEHASH +### createCategory ```solidity -bytes32 REQUESTORDER_TYPEHASH +function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) ``` -### APPORDEROPERATION_TYPEHASH +Methods -```solidity -bytes32 APPORDEROPERATION_TYPEHASH -``` +## IexecConfigurationFacet -### DATASETORDEROPERATION_TYPEHASH +### configure ```solidity -bytes32 DATASETORDEROPERATION_TYPEHASH +function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external ``` -### WORKERPOOLORDEROPERATION_TYPEHASH +### domain ```solidity -bytes32 WORKERPOOLORDEROPERATION_TYPEHASH +function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) ``` -### REQUESTORDEROPERATION_TYPEHASH +### updateDomainSeparator ```solidity -bytes32 REQUESTORDEROPERATION_TYPEHASH +function updateDomainSeparator() external ``` -### OrderOperationEnum +### importScore ```solidity -enum OrderOperationEnum { - SIGN, - CLOSE -} +function importScore(address _worker) external ``` -### EIP712Domain +### setTeeBroker ```solidity -struct EIP712Domain { - string name; - string version; - uint256 chainId; - address verifyingContract; -} +function setTeeBroker(address _teebroker) external ``` -### AppOrder +### setCallbackGas ```solidity -struct AppOrder { - address app; - uint256 appprice; - uint256 volume; - bytes32 tag; - address datasetrestrict; - address workerpoolrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function setCallbackGas(uint256 _callbackgas) external ``` -### DatasetOrder +## IexecERC20Core + +## IexecERC20Facet + +### transfer ```solidity -struct DatasetOrder { - address dataset; - uint256 datasetprice; - uint256 volume; - bytes32 tag; - address apprestrict; - address workerpoolrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function transfer(address recipient, uint256 amount) external returns (bool) ``` -### WorkerpoolOrder +### approve ```solidity -struct WorkerpoolOrder { - address workerpool; - uint256 workerpoolprice; - uint256 volume; - bytes32 tag; - uint256 category; - uint256 trust; - address apprestrict; - address datasetrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function approve(address spender, uint256 value) external returns (bool) ``` -### RequestOrder +### approveAndCall ```solidity -struct RequestOrder { - address app; - uint256 appmaxprice; - address dataset; - uint256 datasetmaxprice; - address workerpool; - uint256 workerpoolmaxprice; - address requester; - uint256 volume; - bytes32 tag; - uint256 category; - uint256 trust; - address beneficiary; - address callback; - string params; - bytes32 salt; - bytes sign; -} +function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) ``` -### AppOrderOperation +### transferFrom ```solidity -struct AppOrderOperation { - struct IexecLibOrders_v5.AppOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) ``` -### DatasetOrderOperation +### increaseAllowance ```solidity -struct DatasetOrderOperation { - struct IexecLibOrders_v5.DatasetOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function increaseAllowance(address spender, uint256 addedValue) external returns (bool) ``` -### WorkerpoolOrderOperation +### decreaseAllowance ```solidity -struct WorkerpoolOrderOperation { - struct IexecLibOrders_v5.WorkerpoolOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) ``` -### RequestOrderOperation +## IexecEscrowNativeFacet + +### receive ```solidity -struct RequestOrderOperation { - struct IexecLibOrders_v5.RequestOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +receive() external payable ``` -### hash +### fallback ```solidity -function hash(struct IexecLibOrders_v5.EIP712Domain _domain) public pure returns (bytes32 domainhash) +fallback() external payable ``` -### hash +### deposit ```solidity -function hash(struct IexecLibOrders_v5.AppOrder _apporder) public pure returns (bytes32 apphash) +function deposit() external payable returns (bool) ``` -### hash +### depositFor ```solidity -function hash(struct IexecLibOrders_v5.DatasetOrder _datasetorder) public pure returns (bytes32 datasethash) +function depositFor(address target) external payable returns (bool) ``` -### hash +### depositForArray ```solidity -function hash(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) public pure returns (bytes32 workerpoolhash) +function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) ``` -### hash +### withdraw ```solidity -function hash(struct IexecLibOrders_v5.RequestOrder _requestorder) public pure returns (bytes32 requesthash) +function withdraw(uint256 amount) external returns (bool) ``` -### hash +### withdrawTo ```solidity -function hash(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) public pure returns (bytes32) +function withdrawTo(uint256 amount, address target) external returns (bool) ``` -### hash +### recover ```solidity -function hash(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) public pure returns (bytes32) +function recover() external returns (uint256) ``` -### hash +## IexecEscrowTokenFacet + +### receive ```solidity -function hash(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) public pure returns (bytes32) +receive() external payable ``` -### hash +### fallback ```solidity -function hash(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) public pure returns (bytes32) +fallback() external payable ``` -## PocoStorageLib - -### PocoStorage +### deposit ```solidity -struct PocoStorage { - contract IRegistry m_appregistry; - contract IRegistry m_datasetregistry; - contract IRegistry m_workerpoolregistry; - contract IERC20 m_baseToken; - string m_name; - string m_symbol; - uint8 m_decimals; - uint256 m_totalSupply; - mapping(address => uint256) m_balances; - mapping(address => uint256) m_frozens; - mapping(address => mapping(address => uint256)) m_allowances; - bytes32 m_eip712DomainSeparator; - mapping(bytes32 => address) m_presigned; - mapping(bytes32 => uint256) m_consumed; - mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; - mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; - mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; - mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; - mapping(address => uint256) m_workerScores; - address m_teebroker; - uint256 m_callbackgas; - struct IexecLibCore_v5.Category[] m_categories; - contract IexecHubV3Interface m_v3_iexecHub; - mapping(address => bool) m_v3_scoreImported; - mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; -} +function deposit(uint256 amount) external returns (bool) ``` -## IApp - -### owner +### depositFor ```solidity -function owner() external view returns (address) +function depositFor(uint256 amount, address target) external returns (bool) ``` -### m_appName +### depositForArray ```solidity -function m_appName() external view returns (string) +function depositForArray(uint256[] amounts, address[] targets) external returns (bool) ``` -### m_appType +### withdraw ```solidity -function m_appType() external view returns (string) +function withdraw(uint256 amount) external returns (bool) ``` -### m_appMultiaddr +### withdrawTo ```solidity -function m_appMultiaddr() external view returns (bytes) +function withdrawTo(uint256 amount, address target) external returns (bool) ``` -### m_appChecksum +### recover ```solidity -function m_appChecksum() external view returns (bytes32) +function recover() external returns (uint256) ``` -### m_appMREnclave +### receiveApproval ```solidity -function m_appMREnclave() external view returns (bytes) +function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) ``` -## IDataset +## IexecOrderManagementFacet -### owner +### manageAppOrder ```solidity -function owner() external view returns (address) +function manageAppOrder(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) external ``` -### m_datasetName +### manageDatasetOrder ```solidity -function m_datasetName() external view returns (string) +function manageDatasetOrder(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) external ``` -### m_datasetMultiaddr +### manageWorkerpoolOrder ```solidity -function m_datasetMultiaddr() external view returns (bytes) +function manageWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) external ``` -### m_datasetChecksum +### manageRequestOrder ```solidity -function m_datasetChecksum() external view returns (bytes32) +function manageRequestOrder(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) external ``` -## IWorkerpool +## IexecRelayFacet -### owner +### broadcastAppOrder ```solidity -function owner() external view returns (address) +function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external ``` -### m_workerpoolDescription +### broadcastDatasetOrder ```solidity -function m_workerpoolDescription() external view returns (string) +function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external ``` -### m_schedulerRewardRatioPolicy +### broadcastWorkerpoolOrder ```solidity -function m_schedulerRewardRatioPolicy() external view returns (uint256) +function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external ``` -### m_workerStakeRatioPolicy +### broadcastRequestOrder ```solidity -function m_workerStakeRatioPolicy() external view returns (uint256) +function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external ``` ## FacetBase From a5db0744be444429107bb335d29cc676d6ad8740 Mon Sep 17 00:00:00 2001 From: Robin Le Caignec <72495599+Le-Caignec@users.noreply.github.com> Date: Tue, 28 Oct 2025 17:27:30 +0100 Subject: [PATCH 30/77] Update test/byContract/registries/registries.test.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- test/byContract/registries/registries.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/byContract/registries/registries.test.ts b/test/byContract/registries/registries.test.ts index 867b44b00..caca92d51 100644 --- a/test/byContract/registries/registries.test.ts +++ b/test/byContract/registries/registries.test.ts @@ -20,7 +20,7 @@ import { Workerpool__factory, } from '../../../typechain'; //import the correct InitializableUpgradeabilityProxy__factory from the local registries proxy instead of @iexec/solidity -//TODO: merge with the previous import this when @iexec/solidity will be removed +//TODO: merge with the previous import when @iexec/solidity will be removed import { InitializableUpgradeabilityProxy__factory } from '../../../typechain/factories/contracts/registries/proxy/InitializableUpgradeabilityProxy__factory'; import config from '../../../utils/config'; import { MULTIADDR_BYTES } from '../../../utils/constants'; From 11c68d608ef0d348e2a9b0f5085e7bc15d832dae Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Wed, 29 Oct 2025 09:16:22 +0100 Subject: [PATCH 31/77] chore: Update OpenZeppelin contracts to version 5.4.0 and remove TimelockController --- contracts/facets/FacetBase.sol | 2 +- contracts/facets/IexecConfigurationFacet.sol | 4 +- .../facets/IexecOrderManagementFacet.sol | 2 +- contracts/facets/IexecPoco1Facet.sol | 13 +- contracts/facets/IexecPoco2Facet.sol | 2 +- contracts/facets/IexecPocoBoostFacet.sol | 10 +- contracts/facets/IexecPocoCommon.sol | 2 +- contracts/facets/SignatureVerifier.sol | 4 +- contracts/facets/SignatureVerifier.v8.sol | 6 +- contracts/libs/PocoStorageLib.sol | 2 +- contracts/registries/IRegistry.sol | 2 +- contracts/registries/Registry.sol | 8 +- contracts/tools/TimelockController.sol | 351 ------------------ contracts/tools/testing/ERC1271Mock.sol | 2 +- contracts/tools/testing/OwnableMock.sol | 2 +- hardhat.config.ts | 6 +- package-lock.json | 27 +- package.json | 4 +- 18 files changed, 46 insertions(+), 403 deletions(-) delete mode 100644 contracts/tools/TimelockController.sol diff --git a/contracts/facets/FacetBase.sol b/contracts/facets/FacetBase.sol index ffcf7fe1e..cc3b877e5 100644 --- a/contracts/facets/FacetBase.sol +++ b/contracts/facets/FacetBase.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.0; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; -import {IERC5313} from "@openzeppelin/contracts-v5/interfaces/IERC5313.sol"; +import {IERC5313} from "@openzeppelin/contracts/interfaces/IERC5313.sol"; // TODO use LibDiamond.contractOwner() when migrating all contracts to v8. diff --git a/contracts/facets/IexecConfigurationFacet.sol b/contracts/facets/IexecConfigurationFacet.sol index 99dddaa9a..48bebb6ac 100644 --- a/contracts/facets/IexecConfigurationFacet.sol +++ b/contracts/facets/IexecConfigurationFacet.sol @@ -3,8 +3,8 @@ pragma solidity ^0.8.0; -import {IERC20} from "@openzeppelin/contracts-v5/token/ERC20/IERC20.sol"; -import {Math} from "@openzeppelin/contracts-v5/utils/math/Math.sol"; +import {IERC20} from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import {Math} from "@openzeppelin/contracts/utils/math/Math.sol"; import {FacetBase} from "./FacetBase.sol"; import {IexecConfiguration} from "../interfaces/IexecConfiguration.sol"; import {IexecHubV3Interface} from "../interfaces/IexecHubV3Interface.sol"; diff --git a/contracts/facets/IexecOrderManagementFacet.sol b/contracts/facets/IexecOrderManagementFacet.sol index 9bd6866e8..8956e17d2 100644 --- a/contracts/facets/IexecOrderManagementFacet.sol +++ b/contracts/facets/IexecOrderManagementFacet.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; -import {IERC5313} from "@openzeppelin/contracts-v5/interfaces/IERC5313.sol"; +import {IERC5313} from "@openzeppelin/contracts/interfaces/IERC5313.sol"; import {SignatureVerifier} from "./SignatureVerifier.v8.sol"; import {FacetBase} from "./FacetBase.sol"; import {IexecOrderManagement} from "../interfaces/IexecOrderManagement.sol"; diff --git a/contracts/facets/IexecPoco1Facet.sol b/contracts/facets/IexecPoco1Facet.sol index b82af2eb3..a3896c208 100644 --- a/contracts/facets/IexecPoco1Facet.sol +++ b/contracts/facets/IexecPoco1Facet.sol @@ -3,8 +3,8 @@ pragma solidity ^0.8.0; -import {IERC5313} from "@openzeppelin/contracts-v5/interfaces/IERC5313.sol"; -import {Math} from "@openzeppelin/contracts-v5/utils/math/Math.sol"; +import {IERC5313} from "@openzeppelin/contracts/interfaces/IERC5313.sol"; +import {Math} from "@openzeppelin/contracts/utils/math/Math.sol"; import {IexecLibCore_v5} from "../libs/IexecLibCore_v5.sol"; import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; import {IWorkerpool} from "../registries/workerpools/IWorkerpool.v8.sol"; @@ -27,7 +27,14 @@ struct Matching { bool hasDataset; } -contract IexecPoco1Facet is IexecPoco1, IexecPoco1Errors, FacetBase, IexecEscrow, SignatureVerifier, IexecPocoCommon { +contract IexecPoco1Facet is + IexecPoco1, + IexecPoco1Errors, + FacetBase, + IexecEscrow, + SignatureVerifier, + IexecPocoCommon +{ using Math for uint256; using IexecLibOrders_v5 for IexecLibOrders_v5.AppOrder; using IexecLibOrders_v5 for IexecLibOrders_v5.DatasetOrder; diff --git a/contracts/facets/IexecPoco2Facet.sol b/contracts/facets/IexecPoco2Facet.sol index d671da415..b4761ee2c 100644 --- a/contracts/facets/IexecPoco2Facet.sol +++ b/contracts/facets/IexecPoco2Facet.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; -import {Math} from "@openzeppelin/contracts-v5/utils/math/Math.sol"; +import {Math} from "@openzeppelin/contracts/utils/math/Math.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; import {IOracleConsumer} from "../external/interfaces/IOracleConsumer.sol"; import {IexecLibCore_v5} from "../libs/IexecLibCore_v5.sol"; diff --git a/contracts/facets/IexecPocoBoostFacet.sol b/contracts/facets/IexecPocoBoostFacet.sol index 2358f5499..9879d4ebf 100644 --- a/contracts/facets/IexecPocoBoostFacet.sol +++ b/contracts/facets/IexecPocoBoostFacet.sol @@ -3,11 +3,11 @@ pragma solidity ^0.8.0; -import {IERC5313} from "@openzeppelin/contracts-v5/interfaces/IERC5313.sol"; -import {ECDSA} from "@openzeppelin/contracts-v5/utils/cryptography/ECDSA.sol"; -import {MessageHashUtils} from "@openzeppelin/contracts-v5/utils/cryptography/MessageHashUtils.sol"; -import {Math} from "@openzeppelin/contracts-v5/utils/math/Math.sol"; -import {SafeCast} from "@openzeppelin/contracts-v5/utils/math/SafeCast.sol"; +import {IERC5313} from "@openzeppelin/contracts/interfaces/IERC5313.sol"; +import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import {MessageHashUtils} from "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol"; +import {Math} from "@openzeppelin/contracts/utils/math/Math.sol"; +import {SafeCast} from "@openzeppelin/contracts/utils/math/SafeCast.sol"; import {IOracleConsumer} from "../external/interfaces/IOracleConsumer.sol"; import {IexecLibCore_v5} from "../libs/IexecLibCore_v5.sol"; diff --git a/contracts/facets/IexecPocoCommon.sol b/contracts/facets/IexecPocoCommon.sol index 6c3e43231..0c408428c 100644 --- a/contracts/facets/IexecPocoCommon.sol +++ b/contracts/facets/IexecPocoCommon.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; -import {Math} from "@openzeppelin/contracts-v5/utils/math/Math.sol"; +import {Math} from "@openzeppelin/contracts/utils/math/Math.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; import {FacetBase} from "./FacetBase.sol"; diff --git a/contracts/facets/SignatureVerifier.sol b/contracts/facets/SignatureVerifier.sol index 68bf10902..9e9315525 100644 --- a/contracts/facets/SignatureVerifier.sol +++ b/contracts/facets/SignatureVerifier.sol @@ -4,11 +4,11 @@ pragma solidity ^0.8.0; import {IERC734} from "../external/interfaces/IERC734.sol"; -import {IERC1271} from "@openzeppelin/contracts-v5/interfaces/IERC1271.sol"; +import {IERC1271} from "@openzeppelin/contracts/interfaces/IERC1271.sol"; // import "@iexec/solidity/contracts/ERC1654/IERC1654.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; import {FacetBase} from "./FacetBase.sol"; -import {MessageHashUtils} from "@openzeppelin/contracts-v5/utils/cryptography/MessageHashUtils.sol"; +import {MessageHashUtils} from "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol"; // TODO uncomment and fix file contract SignatureVerifier is FacetBase { diff --git a/contracts/facets/SignatureVerifier.v8.sol b/contracts/facets/SignatureVerifier.v8.sol index f9dd7a049..83accbe99 100644 --- a/contracts/facets/SignatureVerifier.v8.sol +++ b/contracts/facets/SignatureVerifier.v8.sol @@ -3,9 +3,9 @@ pragma solidity ^0.8.0; -import {IERC1271} from "@openzeppelin/contracts-v5/interfaces/IERC1271.sol"; -import {ECDSA} from "@openzeppelin/contracts-v5/utils/cryptography/ECDSA.sol"; -import {MessageHashUtils} from "@openzeppelin/contracts-v5/utils/cryptography/MessageHashUtils.sol"; +import {IERC1271} from "@openzeppelin/contracts/interfaces/IERC1271.sol"; +import {ECDSA} from "@openzeppelin/contracts/utils/cryptography/ECDSA.sol"; +import {MessageHashUtils} from "@openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol"; import {FacetBase} from "./FacetBase.sol"; import {IERC734} from "../external/interfaces/IERC734.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; diff --git a/contracts/libs/PocoStorageLib.sol b/contracts/libs/PocoStorageLib.sol index 709a47c2c..65e66b465 100644 --- a/contracts/libs/PocoStorageLib.sol +++ b/contracts/libs/PocoStorageLib.sol @@ -4,7 +4,7 @@ pragma solidity ^0.8.0; import {IexecHubV3Interface} from "../interfaces/IexecHubV3Interface.sol"; -import {IERC20} from "@openzeppelin/contracts-v5/interfaces/IERC20.sol"; +import {IERC20} from "@openzeppelin/contracts/interfaces/IERC20.sol"; import {IexecLibCore_v5} from "./IexecLibCore_v5.sol"; import {IRegistry} from "../registries/IRegistry.sol"; diff --git a/contracts/registries/IRegistry.sol b/contracts/registries/IRegistry.sol index 5ff342780..3f8c14200 100644 --- a/contracts/registries/IRegistry.sol +++ b/contracts/registries/IRegistry.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; -import {IERC721Enumerable} from "@openzeppelin/contracts-v5/token/ERC721/extensions/IERC721Enumerable.sol"; +import {IERC721Enumerable} from "@openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol"; interface IRegistry is IERC721Enumerable { function isRegistered(address _entry) external view returns (bool); diff --git a/contracts/registries/Registry.sol b/contracts/registries/Registry.sol index eddbb4013..c553352e8 100644 --- a/contracts/registries/Registry.sol +++ b/contracts/registries/Registry.sol @@ -4,11 +4,11 @@ pragma solidity ^0.8.0; import "./proxy/InitializableUpgradeabilityProxy.sol"; -import {Ownable} from "@openzeppelin/contracts-v5/access/Ownable.sol"; -import {ERC721} from "@openzeppelin/contracts-v5/token/ERC721/ERC721.sol"; -import {Create2} from "@openzeppelin/contracts-v5/utils/Create2.sol"; +import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; +import {ERC721} from "@openzeppelin/contracts/token/ERC721/ERC721.sol"; +import {Create2} from "@openzeppelin/contracts/utils/Create2.sol"; import {IRegistry} from "./IRegistry.sol"; -import {ERC721Enumerable} from "@openzeppelin/contracts-v5/token/ERC721/extensions/ERC721Enumerable.sol"; +import {ERC721Enumerable} from "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol"; abstract contract Registry is IRegistry, ERC721Enumerable, Ownable { address public master; diff --git a/contracts/tools/TimelockController.sol b/contracts/tools/TimelockController.sol deleted file mode 100644 index 5253a575f..000000000 --- a/contracts/tools/TimelockController.sol +++ /dev/null @@ -1,351 +0,0 @@ -// SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH -// SPDX-License-Identifier: Apache-2.0 - -pragma solidity ^0.6.0; -pragma experimental ABIEncoderV2; - -import "@openzeppelin/contracts/access/AccessControl.sol"; -import "@openzeppelin/contracts/math/SafeMath.sol"; - -/** - * @dev Contract module which acts as a timelocked controller. When set as the - * owner of an `Ownable` smart contract, it enforces a timelock on all - * `onlyOwner` maintenance operations. This gives time for users of the - * controlled contract to exit before a potentially dangerous maintenance - * operation is applied. - * - * By default, this contract is self administered, meaning administration tasks - * have to go through the timelock process. The proposer (resp executor) role - * is in charge of proposing (resp executing) operations. A common use case is - * to position this {TimelockController} as the owner of a smart contract, with - * a multisig or a DAO as the sole proposer. - */ -contract TimelockController is AccessControl { - bytes32 public constant TIMELOCK_ADMIN_ROLE = keccak256("TIMELOCK_ADMIN_ROLE"); - bytes32 public constant PROPOSER_ROLE = keccak256("PROPOSER_ROLE"); - bytes32 public constant EXECUTOR_ROLE = keccak256("EXECUTOR_ROLE"); - uint256 internal constant _DONE_TIMESTAMP = uint256(1); - - mapping(bytes32 => uint256) private _timestamps; - uint256 private _minDelay; - - /** - * @dev Emitted when a call is scheduled as part of operation `id`. - */ - event CallScheduled( - bytes32 indexed id, - uint256 indexed index, - address target, - uint256 value, - bytes data, - bytes32 predecessor, - uint256 delay - ); - - /** - * @dev Emitted when a call is performed as part of operation `id`. - */ - event CallExecuted( - bytes32 indexed id, - uint256 indexed index, - address target, - uint256 value, - bytes data - ); - - /** - * @dev Emitted when operation `id` is cancelled. - */ - event Cancelled(bytes32 indexed id); - - /** - * @dev Emitted when the minimum delay for future operations is modified. - */ - event MinDelayChange(uint256 oldDuration, uint256 newDuration); - - /** - * @dev Initializes the contract with a given `minDelay`. - */ - constructor( - uint256 minDelay, - address[] memory administrators, - address[] memory proposers, - address[] memory executors - ) public { - _setRoleAdmin(TIMELOCK_ADMIN_ROLE, TIMELOCK_ADMIN_ROLE); - _setRoleAdmin(PROPOSER_ROLE, TIMELOCK_ADMIN_ROLE); - _setRoleAdmin(EXECUTOR_ROLE, TIMELOCK_ADMIN_ROLE); - - // register administrators - for (uint256 i = 0; i < administrators.length; ++i) { - _setupRole(TIMELOCK_ADMIN_ROLE, administrators[i]); - } - - // register proposers - for (uint256 i = 0; i < proposers.length; ++i) { - _setupRole(PROPOSER_ROLE, proposers[i]); - } - - // register executors - for (uint256 i = 0; i < executors.length; ++i) { - _setupRole(EXECUTOR_ROLE, executors[i]); - } - - _minDelay = minDelay; - emit MinDelayChange(0, minDelay); - } - - /** - * @dev Modifier to make a function callable only by a certain role. In - * addition to checking the sender's role, `address(0)` 's role is also - * considered. Granting a role to `address(0)` is equivalent to enabling - * this role for everyone. - */ - modifier onlyRole(bytes32 role) { - require( - hasRole(role, _msgSender()) || hasRole(role, address(0)), - "TimelockController: sender requires permission" - ); - _; - } - - /* - * @dev Contract might receive/hold ETH as part of the maintenance process. - */ - receive() external payable {} - - /** - * @dev Returns whether an operation is pending or not. - */ - function isOperationPending(bytes32 id) public view returns (bool pending) { - return _timestamps[id] > _DONE_TIMESTAMP; - } - - /** - * @dev Returns whether an operation is ready or not. - */ - function isOperationReady(bytes32 id) public view returns (bool ready) { - // solhint-disable-next-line not-rely-on-time - return _timestamps[id] > _DONE_TIMESTAMP && _timestamps[id] <= block.timestamp; - } - - /** - * @dev Returns whether an operation is done or not. - */ - function isOperationDone(bytes32 id) public view returns (bool done) { - return _timestamps[id] == _DONE_TIMESTAMP; - } - - /** - * @dev Returns the timestamp at with an operation becomes ready (0 for - * unset operations, 1 for done operations). - */ - function getTimestamp(bytes32 id) public view returns (uint256 timestamp) { - return _timestamps[id]; - } - - /** - * @dev Returns the minimum delay for an operation to become valid. - */ - function getMinDelay() public view returns (uint256 duration) { - return _minDelay; - } - - /** - * @dev Returns the identifier of an operation containing a single - * transaction. - */ - function hashOperation( - address target, - uint256 value, - bytes calldata data, - bytes32 predecessor, - bytes32 salt - ) public pure returns (bytes32 hash) { - return keccak256(abi.encode(target, value, data, predecessor, salt)); - } - - /** - * @dev Returns the identifier of an operation containing a batch of - * transactions. - */ - function hashOperationBatch( - address[] calldata targets, - uint256[] calldata values, - bytes[] calldata datas, - bytes32 predecessor, - bytes32 salt - ) public pure returns (bytes32 hash) { - return keccak256(abi.encode(targets, values, datas, predecessor, salt)); - } - - /** - * @dev Schedule an operation containing a single transaction. - * - * Emits a {CallScheduled} event. - * - * Requirements: - * - * - the caller must have the 'proposer' role. - */ - function schedule( - address target, - uint256 value, - bytes calldata data, - bytes32 predecessor, - bytes32 salt, - uint256 delay - ) public virtual onlyRole(PROPOSER_ROLE) { - bytes32 id = hashOperation(target, value, data, predecessor, salt); - _schedule(id, delay); - emit CallScheduled(id, 0, target, value, data, predecessor, delay); - } - - /** - * @dev Schedule an operation containing a batch of transactions. - * - * Emits one {CallScheduled} event per transaction in the batch. - * - * Requirements: - * - * - the caller must have the 'proposer' role. - */ - function scheduleBatch( - address[] calldata targets, - uint256[] calldata values, - bytes[] calldata datas, - bytes32 predecessor, - bytes32 salt, - uint256 delay - ) public virtual onlyRole(PROPOSER_ROLE) { - require(targets.length == values.length, "TimelockController: length mismatch"); - require(targets.length == datas.length, "TimelockController: length mismatch"); - - bytes32 id = hashOperationBatch(targets, values, datas, predecessor, salt); - _schedule(id, delay); - for (uint256 i = 0; i < targets.length; ++i) { - emit CallScheduled(id, i, targets[i], values[i], datas[i], predecessor, delay); - } - } - - /** - * @dev Schedule an operation that is to becomes valid after a given delay. - */ - function _schedule(bytes32 id, uint256 delay) private { - require(_timestamps[id] == 0, "TimelockController: operation already scheduled"); - require(delay >= _minDelay, "TimelockController: insufficient delay"); - // solhint-disable-next-line not-rely-on-time - _timestamps[id] = SafeMath.add(block.timestamp, delay); - } - - /** - * @dev Cancel an operation. - * - * Requirements: - * - * - the caller must have the 'proposer' role. - */ - function cancel(bytes32 id) public virtual onlyRole(PROPOSER_ROLE) { - require(isOperationPending(id), "TimelockController: operation cannot be cancelled"); - delete _timestamps[id]; - - emit Cancelled(id); - } - - /** - * @dev Execute an (ready) operation containing a single transaction. - * - * Emits a {CallExecuted} event. - * - * Requirements: - * - * - the caller must have the 'executor' role. - */ - function execute( - address target, - uint256 value, - bytes calldata data, - bytes32 predecessor, - bytes32 salt - ) public payable virtual onlyRole(EXECUTOR_ROLE) { - bytes32 id = hashOperation(target, value, data, predecessor, salt); - _beforeCall(predecessor); - _call(id, 0, target, value, data); - _afterCall(id); - } - - /** - * @dev Execute an (ready) operation containing a batch of transactions. - * - * Emits one {CallExecuted} event per transaction in the batch. - * - * Requirements: - * - * - the caller must have the 'executor' role. - */ - function executeBatch( - address[] calldata targets, - uint256[] calldata values, - bytes[] calldata datas, - bytes32 predecessor, - bytes32 salt - ) public payable virtual onlyRole(EXECUTOR_ROLE) { - require(targets.length == values.length, "TimelockController: length mismatch"); - require(targets.length == datas.length, "TimelockController: length mismatch"); - - bytes32 id = hashOperationBatch(targets, values, datas, predecessor, salt); - _beforeCall(predecessor); - for (uint256 i = 0; i < targets.length; ++i) { - _call(id, i, targets[i], values[i], datas[i]); - } - _afterCall(id); - } - - /** - * @dev Checks before execution of an operation's calls. - */ - function _beforeCall(bytes32 predecessor) private view { - require( - predecessor == bytes32(0) || isOperationDone(predecessor), - "TimelockController: missing dependency" - ); - } - - /** - * @dev Checks after execution of an operation's calls. - */ - function _afterCall(bytes32 id) private { - require(isOperationReady(id), "TimelockController: operation is not ready"); - _timestamps[id] = _DONE_TIMESTAMP; - } - - /** - * @dev Execute an operation's call. - * - * Emits a {CallExecuted} event. - */ - function _call( - bytes32 id, - uint256 index, - address target, - uint256 value, - bytes calldata data - ) private { - // solhint-disable-next-line avoid-low-level-calls - (bool success, ) = target.call{value: value}(data); - require(success, "TimelockController: underlying transaction reverted"); - - emit CallExecuted(id, index, target, value, data); - } - - /** - * @dev Changes the timelock duration for future operations. - * - * Emits a {MinDelayChange} event. - */ - function updateDelay(uint256 newDelay) external virtual { - require(msg.sender == address(this), "TimelockController: caller must be timelock"); - emit MinDelayChange(_minDelay, newDelay); - _minDelay = newDelay; - } -} diff --git a/contracts/tools/testing/ERC1271Mock.sol b/contracts/tools/testing/ERC1271Mock.sol index a20d91430..2fb491f7c 100644 --- a/contracts/tools/testing/ERC1271Mock.sol +++ b/contracts/tools/testing/ERC1271Mock.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; -import "@openzeppelin/contracts-v5/interfaces/IERC1271.sol"; +import "@openzeppelin/contracts/interfaces/IERC1271.sol"; contract ERC1271Mock is IERC1271 { function isValidSignature( diff --git a/contracts/tools/testing/OwnableMock.sol b/contracts/tools/testing/OwnableMock.sol index 7e396ff65..27d77675a 100644 --- a/contracts/tools/testing/OwnableMock.sol +++ b/contracts/tools/testing/OwnableMock.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; -import "@openzeppelin/contracts-v5/access/Ownable.sol"; +import "@openzeppelin/contracts/access/Ownable.sol"; contract OwnableMock is Ownable { constructor() Ownable(msg.sender) {} diff --git a/hardhat.config.ts b/hardhat.config.ts index b419a23b5..7a25ccbe8 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -226,8 +226,9 @@ const config: HardhatUserConfig = { '@mudgen/diamond-1/contracts/libraries/LibDiamond.sol', '@mudgen/diamond-1/contracts/upgradeInitializers/DiamondInit.sol', // Used as mock or fake in UTs - '@openzeppelin/contracts-v5/interfaces/IERC1271.sol', + '@openzeppelin/contracts/interfaces/IERC1271.sol', // Used in deployment + '@openzeppelin/contracts/governance/TimelockController.sol', '@amxx/factory/contracts/v6/GenericFactory.sol', 'createx/src/ICreateX.sol', ], @@ -308,8 +309,7 @@ task('abis', 'Generate contract ABIs').setAction(async (taskArgs, hre) => { // Remove non relevant contracts // !!! Update package.json#files if this is updated. .filter((name) => !name.startsWith('contracts/tools/testing')) - .filter((name) => !name.startsWith('contracts/tools/diagrams')) - .filter((name) => !name.startsWith('contracts/tools/TimelockController')); + .filter((name) => !name.startsWith('contracts/tools/diagrams')); for (const contractFile of contracts) { const artifact = await hre.artifacts.readArtifact(contractFile); const abiFileDir = `${abisDir}/${path.dirname(contractFile)}`; diff --git a/package-lock.json b/package-lock.json index 8d3a7ae71..c6b38eeb5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,8 +12,7 @@ "@iexec/interface": "3.0.35-8", "@iexec/solidity": "^0.1.1", "@mudgen/diamond-1": "github:mudgen/diamond-1-hardhat#3da037b", - "@openzeppelin/contracts": "3.3.0", - "@openzeppelin/contracts-v5": "npm:@openzeppelin/contracts@^5.0.2", + "@openzeppelin/contracts": "^5.0.2", "@uniswap/v2-periphery": "1.1.0-beta.0", "createx": "github:pcaversaccio/createx#v1.0.0", "rlc-faucet-contract": "1.0.10" @@ -1621,15 +1620,10 @@ } }, "node_modules/@openzeppelin/contracts": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.3.0.tgz", - "integrity": "sha512-AemZEsQYtUp1WRkcmZm1div5ORfTpLquLaziCIrSagjxyKdmObxuaY1yjQ5SHFMctR8rLwp706NXTbiIRJg7pw==" - }, - "node_modules/@openzeppelin/contracts-v5": { - "name": "@openzeppelin/contracts", - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.0.2.tgz", - "integrity": "sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==" + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.4.0.tgz", + "integrity": "sha512-eCYgWnLg6WO+X52I16TZt8uEjbtdkgLC0SUX/xnAksjjrQI4Xfn4iBRoI5j55dmlOhDv1Y7BoR3cU7e3WWhC6A==", + "license": "MIT" }, "node_modules/@openzeppelin/upgrades-core": { "version": "1.37.1", @@ -14030,14 +14024,9 @@ "optional": true }, "@openzeppelin/contracts": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.3.0.tgz", - "integrity": "sha512-AemZEsQYtUp1WRkcmZm1div5ORfTpLquLaziCIrSagjxyKdmObxuaY1yjQ5SHFMctR8rLwp706NXTbiIRJg7pw==" - }, - "@openzeppelin/contracts-v5": { - "version": "npm:@openzeppelin/contracts@5.0.2", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.0.2.tgz", - "integrity": "sha512-ytPc6eLGcHHnapAZ9S+5qsdomhjo6QBHTDRRBFfTxXIpsicMhVPouPgmUPebZZZGX7vt9USA+Z+0M0dSVtSUEA==" + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.4.0.tgz", + "integrity": "sha512-eCYgWnLg6WO+X52I16TZt8uEjbtdkgLC0SUX/xnAksjjrQI4Xfn4iBRoI5j55dmlOhDv1Y7BoR3cU7e3WWhC6A==" }, "@openzeppelin/upgrades-core": { "version": "1.37.1", diff --git a/package.json b/package.json index e487e8507..057689631 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,6 @@ "/contracts", "!/contracts/tools/testing/**/*", "!/contracts/tools/diagrams/**/*", - "!/contracts/tools/TimelockController/**/*", "/deployments", "/artifacts/contracts", "!/artifacts/contracts/**/*.dbg.json" @@ -50,8 +49,7 @@ "@iexec/interface": "3.0.35-8", "@iexec/solidity": "^0.1.1", "@mudgen/diamond-1": "github:mudgen/diamond-1-hardhat#3da037b", - "@openzeppelin/contracts": "3.3.0", - "@openzeppelin/contracts-v5": "npm:@openzeppelin/contracts@^5.0.2", + "@openzeppelin/contracts": "^5.0.2", "@uniswap/v2-periphery": "1.1.0-beta.0", "createx": "github:pcaversaccio/createx#v1.0.0", "rlc-faucet-contract": "1.0.10" From 2fde33cf5427189638df90346c6faffcc832f611 Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Wed, 29 Oct 2025 09:16:43 +0100 Subject: [PATCH 32/77] refactor: Clean up Solidity documentation by removing outdated sections and adding new contract interfaces for improved clarity and organization --- docs/solidity/index.md | 497 +++++++++++++++++++++-------------------- 1 file changed, 256 insertions(+), 241 deletions(-) diff --git a/docs/solidity/index.md b/docs/solidity/index.md index 88fdf3fb9..a98bedbea 100644 --- a/docs/solidity/index.md +++ b/docs/solidity/index.md @@ -1,25 +1,5 @@ # Solidity API -## IexecInterfaceNative - -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in native mode. - -_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -## IexecInterfaceToken - -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in token mode. - -_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -## FacetBase - -_Every facet must inherit from this contract._ - ## IexecEscrow ### Transfer @@ -52,32 +32,6 @@ event Reward(address owner, uint256 amount, bytes32 ref) event Seize(address owner, uint256 amount, bytes32 ref) ``` -## IexecOrderManagementFacet - -### manageAppOrder - -```solidity -function manageAppOrder(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) external -``` - -### manageDatasetOrder - -```solidity -function manageDatasetOrder(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) external -``` - -### manageWorkerpoolOrder - -```solidity -function manageWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) external -``` - -### manageRequestOrder - -```solidity -function manageRequestOrder(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) external -``` - ## Matching ```solidity @@ -497,115 +451,6 @@ function groupmember_purpose() external pure returns (uint256) function eip712domain_separator() external view returns (bytes32) ``` -## IexecPocoBoostAccessorsFacet - -Access to PoCo Boost tasks must be done with PoCo Classic `IexecPocoAccessors`. - -### viewDealBoost - -```solidity -function viewDealBoost(bytes32 id) external view returns (struct IexecLibCore_v5.DealBoost deal) -``` - -Get a deal created by PoCo Boost facet. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | The ID of the deal. | - -## IexecPocoBoostFacet - -Works for deals with requested trust = 0. - -### matchOrdersBoost - -```solidity -function matchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) -``` - -This boost match orders is only compatible with trust <= 1. -The requester gets debited. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The order signed by the application developer. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The order signed by the dataset provider. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The order signed by the workerpool manager. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The order signed by the requester. | - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | bytes32 | The ID of the deal. | - -### sponsorMatchOrdersBoost - -```solidity -function sponsorMatchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) -``` - -Sponsor match orders boost for a requester. -Unlike the standard `matchOrdersBoost(..)` hook where the requester pays for -the deal, this current hook makes it possible for any `msg.sender` to pay for -a third party requester. - -Be aware that anyone seeing a valid request order on the network -(via an off-chain public marketplace, via a `sponsorMatchOrdersBoost(..)` -pending transaction in the mempool or by any other means) might decide -to call the standard `matchOrdersBoost(..)` hook which will result in the -requester being debited instead. Therefore, such a front run would result -in a loss of some of the requester funds deposited in the iExec account -(a loss value equivalent to the price of the deal). - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The app order. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The requester order. | - -### pushResultBoost - -```solidity -function pushResultBoost(bytes32 dealId, uint256 index, bytes results, bytes resultsCallback, bytes authorizationSign, address enclaveChallenge, bytes enclaveSign) external -``` - -Accept results of a task computed by a worker during Boost workflow. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| dealId | bytes32 | The id of the target deal. | -| index | uint256 | The index of the target task of the deal. | -| results | bytes | The results of the task computed by the worker. | -| resultsCallback | bytes | The results of the task computed by the worker that will be forwarded as call data to the callback address set by the requester. | -| authorizationSign | bytes | The authorization signed by the scheduler. authorizing the worker to push a result. | -| enclaveChallenge | address | The enclave address which can produce enclave signature. | -| enclaveSign | bytes | The signature generated from the enclave. | - -### claimBoost - -```solidity -function claimBoost(bytes32 dealId, uint256 index) external -``` - -Claim task to get a refund if task is not completed after deadline. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| dealId | bytes32 | The ID of the deal. | -| index | uint256 | The index of the task. | - ## IexecLibCore_v5 ### Account @@ -1065,7 +910,7 @@ struct PocoStorage { address m_teebroker; uint256 m_callbackgas; struct IexecLibCore_v5.Category[] m_categories; - address m_v3_iexecHub; + contract IexecHubV3Interface m_v3_iexecHub; mapping(address => bool) m_v3_scoreImported; mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; } @@ -1079,6 +924,79 @@ struct PocoStorage { function isRegistered(address _entry) external view returns (bool) ``` +## Registry + +### master + +```solidity +address master +``` + +### proxyCode + +```solidity +bytes proxyCode +``` + +### proxyCodeHash + +```solidity +bytes32 proxyCodeHash +``` + +### previous + +```solidity +contract IRegistry previous +``` + +### initialized + +```solidity +bool initialized +``` + +### initialize + +```solidity +function initialize(address _previous) external +``` + +### setBaseURI + +```solidity +function setBaseURI(string baseUri) external +``` + +### baseURI + +```solidity +function baseURI() public view returns (string) +``` + +_Added for retrocompatibility! + +Returns the base URI set via {setBaseURI}. This will be +automatically added as a prefix in {tokenURI} to each token's ID._ + +### isRegistered + +```solidity +function isRegistered(address _entry) external view returns (bool) +``` + +### setName + +```solidity +function setName(address, string) external +``` + +Sets the reverse registration name for a registry contract. + +_This functionality is supported only on Bellecour Sidechain, calls on other chains +will revert. The function is kept as nonpayable to maintain retrocompatibility with the +iExec SDK._ + ## IApp ### owner @@ -1143,6 +1061,73 @@ function m_datasetMultiaddr() external view returns (bytes) function m_datasetChecksum() external view returns (bytes32) ``` +## Address + +## BaseUpgradeabilityProxy + +_This contract implements a proxy that allows to change the +implementation address to which it will delegate. +Such a change is called an implementation upgrade._ + +### Upgraded + +```solidity +event Upgraded(address implementation) +``` + +_Emitted when the implementation is upgraded._ + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| implementation | address | Address of the new implementation. | + +## InitializableUpgradeabilityProxy + +_Extends BaseUpgradeabilityProxy with an initializer for initializing +implementation and init data._ + +### initialize + +```solidity +function initialize(address _logic, bytes _data) public payable +``` + +_Contract initializer._ + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| _logic | address | Address of the initial implementation. | +| _data | bytes | Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. | + +## Proxy + +_Implements delegation of calls to other contracts, with proper +forwarding of return values and bubbling of failures. +It defines a fallback function that delegates all calls to the address +returned by the abstract _implementation() internal function._ + +### receive + +```solidity +receive() external payable virtual +``` + +_Receive function. +Implemented entirely in `_fallback`._ + +### fallback + +```solidity +fallback() external payable +``` + +_Fallback function. +Implemented entirely in `_fallback`._ + ## IWorkerpool ### owner @@ -1169,6 +1154,22 @@ function m_schedulerRewardRatioPolicy() external view returns (uint256) function m_workerStakeRatioPolicy() external view returns (uint256) ``` +## IexecInterfaceNative + +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in native mode. + +_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +## IexecInterfaceToken + +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in token mode. + +_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + ## IexecCategoryManagerFacet ### createCategory @@ -1227,18 +1228,6 @@ function setCallbackGas(uint256 _callbackgas) external ## IexecERC20Core -### Transfer - -```solidity -event Transfer(address from, address to, uint256 value) -``` - -### Approval - -```solidity -event Approval(address owner, address spender, uint256 value) -``` - ## IexecERC20Facet ### transfer @@ -1383,140 +1372,166 @@ function recover() external returns (uint256) function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) ``` -## IexecRelayFacet +## IexecOrderManagementFacet -### broadcastAppOrder +### manageAppOrder ```solidity -function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external +function manageAppOrder(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) external ``` -### broadcastDatasetOrder +### manageDatasetOrder ```solidity -function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external +function manageDatasetOrder(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) external ``` -### broadcastWorkerpoolOrder +### manageWorkerpoolOrder ```solidity -function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external +function manageWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) external ``` -### broadcastRequestOrder +### manageRequestOrder ```solidity -function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external +function manageRequestOrder(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) external ``` -## PocoStorageLib +## IexecPocoBoostAccessorsFacet -### PocoStorage +Access to PoCo Boost tasks must be done with PoCo Classic `IexecPocoAccessors`. + +### viewDealBoost ```solidity -struct PocoStorage { - contract IRegistry m_appregistry; - contract IRegistry m_datasetregistry; - contract IRegistry m_workerpoolregistry; - contract IERC20 m_baseToken; - string m_name; - string m_symbol; - uint8 m_decimals; - uint256 m_totalSupply; - mapping(address => uint256) m_balances; - mapping(address => uint256) m_frozens; - mapping(address => mapping(address => uint256)) m_allowances; - bytes32 m_eip712DomainSeparator; - mapping(bytes32 => address) m_presigned; - mapping(bytes32 => uint256) m_consumed; - mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; - mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; - mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; - mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; - mapping(address => uint256) m_workerScores; - address m_teebroker; - uint256 m_callbackgas; - struct IexecLibCore_v5.Category[] m_categories; - contract IexecHubV3Interface m_v3_iexecHub; - mapping(address => bool) m_v3_scoreImported; -} +function viewDealBoost(bytes32 id) external view returns (struct IexecLibCore_v5.DealBoost deal) ``` -## IRegistry +Get a deal created by PoCo Boost facet. -### isRegistered +#### Parameters -```solidity -function isRegistered(address _entry) external view returns (bool) -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | The ID of the deal. | -## Registry +## IexecPocoBoostFacet -### master +Works for deals with requested trust = 0. + +### matchOrdersBoost ```solidity -address master +function matchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) ``` -### proxyCode +This boost match orders is only compatible with trust <= 1. +The requester gets debited. -```solidity -bytes proxyCode -``` +#### Parameters -### proxyCodeHash +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The order signed by the application developer. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The order signed by the dataset provider. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The order signed by the workerpool manager. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The order signed by the requester. | -```solidity -bytes32 proxyCodeHash -``` +#### Return Values -### previous +| Name | Type | Description | +| ---- | ---- | ----------- | +| [0] | bytes32 | The ID of the deal. | + +### sponsorMatchOrdersBoost ```solidity -contract IRegistry previous +function sponsorMatchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) ``` -### initialized +Sponsor match orders boost for a requester. +Unlike the standard `matchOrdersBoost(..)` hook where the requester pays for +the deal, this current hook makes it possible for any `msg.sender` to pay for +a third party requester. -```solidity -bool initialized -``` +Be aware that anyone seeing a valid request order on the network +(via an off-chain public marketplace, via a `sponsorMatchOrdersBoost(..)` +pending transaction in the mempool or by any other means) might decide +to call the standard `matchOrdersBoost(..)` hook which will result in the +requester being debited instead. Therefore, such a front run would result +in a loss of some of the requester funds deposited in the iExec account +(a loss value equivalent to the price of the deal). -### constructor +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The app order. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The requester order. | + +### pushResultBoost ```solidity -constructor(address _master, string _name, string _symbol) public +function pushResultBoost(bytes32 dealId, uint256 index, bytes results, bytes resultsCallback, bytes authorizationSign, address enclaveChallenge, bytes enclaveSign) external ``` -### initialize +Accept results of a task computed by a worker during Boost workflow. + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| dealId | bytes32 | The id of the target deal. | +| index | uint256 | The index of the target task of the deal. | +| results | bytes | The results of the task computed by the worker. | +| resultsCallback | bytes | The results of the task computed by the worker that will be forwarded as call data to the callback address set by the requester. | +| authorizationSign | bytes | The authorization signed by the scheduler. authorizing the worker to push a result. | +| enclaveChallenge | address | The enclave address which can produce enclave signature. | +| enclaveSign | bytes | The signature generated from the enclave. | + +### claimBoost ```solidity -function initialize(address _previous) external +function claimBoost(bytes32 dealId, uint256 index) external ``` -### setBaseURI +Claim task to get a refund if task is not completed after deadline. + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| dealId | bytes32 | The ID of the deal. | +| index | uint256 | The index of the task. | + +## IexecRelayFacet + +### broadcastAppOrder ```solidity -function setBaseURI(string _baseURI) external +function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external ``` -### isRegistered +### broadcastDatasetOrder ```solidity -function isRegistered(address _entry) external view returns (bool) +function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external ``` -### setName +### broadcastWorkerpoolOrder ```solidity -function setName(address, string) external +function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external ``` -Sets the reverse registration name for a registry contract. +### broadcastRequestOrder -_This functionality is supported only on Bellecour Sidechain, calls on other chains -will revert. The function is kept as nonpayable to maintain retrocompatibility with the -iExec SDK._ +```solidity +function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external +``` ## RegistryEntry From 15db2b8dd0f730ce544f0a1dcca291ac4dc02ef3 Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Wed, 29 Oct 2025 09:34:44 +0100 Subject: [PATCH 33/77] feat: Introduce TimelockController contract to enforce timelocked operations for enhanced security in maintenance tasks --- contracts/tools/TimelockController.sol | 349 +++++++++++++++++++++++++ 1 file changed, 349 insertions(+) create mode 100644 contracts/tools/TimelockController.sol diff --git a/contracts/tools/TimelockController.sol b/contracts/tools/TimelockController.sol new file mode 100644 index 000000000..26d59e44b --- /dev/null +++ b/contracts/tools/TimelockController.sol @@ -0,0 +1,349 @@ +// SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH +// SPDX-License-Identifier: Apache-2.0 + +pragma solidity ^0.8.0; + +import "@openzeppelin/contracts/access/AccessControl.sol"; + +/** + * @dev Contract module which acts as a timelocked controller. When set as the + * owner of an `Ownable` smart contract, it enforces a timelock on all + * `onlyOwner` maintenance operations. This gives time for users of the + * controlled contract to exit before a potentially dangerous maintenance + * operation is applied. + * + * By default, this contract is self administered, meaning administration tasks + * have to go through the timelock process. The proposer (resp executor) role + * is in charge of proposing (resp executing) operations. A common use case is + * to position this {TimelockController} as the owner of a smart contract, with + * a multisig or a DAO as the sole proposer. + */ +contract TimelockController is AccessControl { + bytes32 public constant TIMELOCK_ADMIN_ROLE = keccak256("TIMELOCK_ADMIN_ROLE"); + bytes32 public constant PROPOSER_ROLE = keccak256("PROPOSER_ROLE"); + bytes32 public constant EXECUTOR_ROLE = keccak256("EXECUTOR_ROLE"); + uint256 internal constant _DONE_TIMESTAMP = uint256(1); + + mapping(bytes32 => uint256) private _timestamps; + uint256 private _minDelay; + + /** + * @dev Emitted when a call is scheduled as part of operation `id`. + */ + event CallScheduled( + bytes32 indexed id, + uint256 indexed index, + address target, + uint256 value, + bytes data, + bytes32 predecessor, + uint256 delay + ); + + /** + * @dev Emitted when a call is performed as part of operation `id`. + */ + event CallExecuted( + bytes32 indexed id, + uint256 indexed index, + address target, + uint256 value, + bytes data + ); + + /** + * @dev Emitted when operation `id` is cancelled. + */ + event Cancelled(bytes32 indexed id); + + /** + * @dev Emitted when the minimum delay for future operations is modified. + */ + event MinDelayChange(uint256 oldDuration, uint256 newDuration); + + /** + * @dev Initializes the contract with a given `minDelay`. + */ + constructor( + uint256 minDelay, + address[] memory administrators, + address[] memory proposers, + address[] memory executors + ) { + _setRoleAdmin(TIMELOCK_ADMIN_ROLE, TIMELOCK_ADMIN_ROLE); + _setRoleAdmin(PROPOSER_ROLE, TIMELOCK_ADMIN_ROLE); + _setRoleAdmin(EXECUTOR_ROLE, TIMELOCK_ADMIN_ROLE); + + // register administrators + for (uint256 i = 0; i < administrators.length; ++i) { + _grantRole(TIMELOCK_ADMIN_ROLE, administrators[i]); + } + + // register proposers + for (uint256 i = 0; i < proposers.length; ++i) { + _grantRole(PROPOSER_ROLE, proposers[i]); + } + + // register executors + for (uint256 i = 0; i < executors.length; ++i) { + _grantRole(EXECUTOR_ROLE, executors[i]); + } + + _minDelay = minDelay; + emit MinDelayChange(0, minDelay); + } + + /** + * @dev Modifier to make a function callable only by a certain role. In + * addition to checking the sender's role, `address(0)` 's role is also + * considered. Granting a role to `address(0)` is equivalent to enabling + * this role for everyone. + */ + modifier onlyRoleOrOpenRole(bytes32 role) { + require( + hasRole(role, _msgSender()) || hasRole(role, address(0)), + "TimelockController: sender requires permission" + ); + _; + } + + /* + * @dev Contract might receive/hold ETH as part of the maintenance process. + */ + receive() external payable {} + + /** + * @dev Returns whether an operation is pending or not. + */ + function isOperationPending(bytes32 id) public view returns (bool pending) { + return _timestamps[id] > _DONE_TIMESTAMP; + } + + /** + * @dev Returns whether an operation is ready or not. + */ + function isOperationReady(bytes32 id) public view returns (bool ready) { + // solhint-disable-next-line not-rely-on-time + return _timestamps[id] > _DONE_TIMESTAMP && _timestamps[id] <= block.timestamp; + } + + /** + * @dev Returns whether an operation is done or not. + */ + function isOperationDone(bytes32 id) public view returns (bool done) { + return _timestamps[id] == _DONE_TIMESTAMP; + } + + /** + * @dev Returns the timestamp at with an operation becomes ready (0 for + * unset operations, 1 for done operations). + */ + function getTimestamp(bytes32 id) public view returns (uint256 timestamp) { + return _timestamps[id]; + } + + /** + * @dev Returns the minimum delay for an operation to become valid. + */ + function getMinDelay() public view returns (uint256 duration) { + return _minDelay; + } + + /** + * @dev Returns the identifier of an operation containing a single + * transaction. + */ + function hashOperation( + address target, + uint256 value, + bytes calldata data, + bytes32 predecessor, + bytes32 salt + ) public pure returns (bytes32 hash) { + return keccak256(abi.encode(target, value, data, predecessor, salt)); + } + + /** + * @dev Returns the identifier of an operation containing a batch of + * transactions. + */ + function hashOperationBatch( + address[] calldata targets, + uint256[] calldata values, + bytes[] calldata datas, + bytes32 predecessor, + bytes32 salt + ) public pure returns (bytes32 hash) { + return keccak256(abi.encode(targets, values, datas, predecessor, salt)); + } + + /** + * @dev Schedule an operation containing a single transaction. + * + * Emits a {CallScheduled} event. + * + * Requirements: + * + * - the caller must have the 'proposer' role. + */ + function schedule( + address target, + uint256 value, + bytes calldata data, + bytes32 predecessor, + bytes32 salt, + uint256 delay + ) public virtual onlyRoleOrOpenRole(PROPOSER_ROLE) { + bytes32 id = hashOperation(target, value, data, predecessor, salt); + _schedule(id, delay); + emit CallScheduled(id, 0, target, value, data, predecessor, delay); + } + + /** + * @dev Schedule an operation containing a batch of transactions. + * + * Emits one {CallScheduled} event per transaction in the batch. + * + * Requirements: + * + * - the caller must have the 'proposer' role. + */ + function scheduleBatch( + address[] calldata targets, + uint256[] calldata values, + bytes[] calldata datas, + bytes32 predecessor, + bytes32 salt, + uint256 delay + ) public virtual onlyRoleOrOpenRole(PROPOSER_ROLE) { + require(targets.length == values.length, "TimelockController: length mismatch"); + require(targets.length == datas.length, "TimelockController: length mismatch"); + + bytes32 id = hashOperationBatch(targets, values, datas, predecessor, salt); + _schedule(id, delay); + for (uint256 i = 0; i < targets.length; ++i) { + emit CallScheduled(id, i, targets[i], values[i], datas[i], predecessor, delay); + } + } + + /** + * @dev Schedule an operation that is to becomes valid after a given delay. + */ + function _schedule(bytes32 id, uint256 delay) private { + require(_timestamps[id] == 0, "TimelockController: operation already scheduled"); + require(delay >= _minDelay, "TimelockController: insufficient delay"); + // solhint-disable-next-line not-rely-on-time + _timestamps[id] = block.timestamp + delay; + } + + /** + * @dev Cancel an operation. + * + * Requirements: + * + * - the caller must have the 'proposer' role. + */ + function cancel(bytes32 id) public virtual onlyRoleOrOpenRole(PROPOSER_ROLE) { + require(isOperationPending(id), "TimelockController: operation cannot be cancelled"); + delete _timestamps[id]; + + emit Cancelled(id); + } + + /** + * @dev Execute an (ready) operation containing a single transaction. + * + * Emits a {CallExecuted} event. + * + * Requirements: + * + * - the caller must have the 'executor' role. + */ + function execute( + address target, + uint256 value, + bytes calldata data, + bytes32 predecessor, + bytes32 salt + ) public payable virtual onlyRoleOrOpenRole(EXECUTOR_ROLE) { + bytes32 id = hashOperation(target, value, data, predecessor, salt); + _beforeCall(predecessor); + _call(id, 0, target, value, data); + _afterCall(id); + } + + /** + * @dev Execute an (ready) operation containing a batch of transactions. + * + * Emits one {CallExecuted} event per transaction in the batch. + * + * Requirements: + * + * - the caller must have the 'executor' role. + */ + function executeBatch( + address[] calldata targets, + uint256[] calldata values, + bytes[] calldata datas, + bytes32 predecessor, + bytes32 salt + ) public payable virtual onlyRoleOrOpenRole(EXECUTOR_ROLE) { + require(targets.length == values.length, "TimelockController: length mismatch"); + require(targets.length == datas.length, "TimelockController: length mismatch"); + + bytes32 id = hashOperationBatch(targets, values, datas, predecessor, salt); + _beforeCall(predecessor); + for (uint256 i = 0; i < targets.length; ++i) { + _call(id, i, targets[i], values[i], datas[i]); + } + _afterCall(id); + } + + /** + * @dev Checks before execution of an operation's calls. + */ + function _beforeCall(bytes32 predecessor) private view { + require( + predecessor == bytes32(0) || isOperationDone(predecessor), + "TimelockController: missing dependency" + ); + } + + /** + * @dev Checks after execution of an operation's calls. + */ + function _afterCall(bytes32 id) private { + require(isOperationReady(id), "TimelockController: operation is not ready"); + _timestamps[id] = _DONE_TIMESTAMP; + } + + /** + * @dev Execute an operation's call. + * + * Emits a {CallExecuted} event. + */ + function _call( + bytes32 id, + uint256 index, + address target, + uint256 value, + bytes calldata data + ) private { + // solhint-disable-next-line avoid-low-level-calls + (bool success, ) = target.call{value: value}(data); + require(success, "TimelockController: underlying transaction reverted"); + + emit CallExecuted(id, index, target, value, data); + } + + /** + * @dev Changes the timelock duration for future operations. + * + * Emits a {MinDelayChange} event. + */ + function updateDelay(uint256 newDelay) external virtual { + require(msg.sender == address(this), "TimelockController: caller must be timelock"); + emit MinDelayChange(_minDelay, newDelay); + _minDelay = newDelay; + } +} From a822b2f8417df169caf017dc6ee0df484f59ba98 Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Wed, 29 Oct 2025 09:34:51 +0100 Subject: [PATCH 34/77] fix: Add missing newlines at the end of multiple JSON files to ensure proper formatting --- abis/contracts/tools/TimelockController.json | 749 +++++++++++++++++++ 1 file changed, 749 insertions(+) create mode 100644 abis/contracts/tools/TimelockController.json diff --git a/abis/contracts/tools/TimelockController.json b/abis/contracts/tools/TimelockController.json new file mode 100644 index 000000000..e862399bb --- /dev/null +++ b/abis/contracts/tools/TimelockController.json @@ -0,0 +1,749 @@ +[ + { + "inputs": [ + { + "internalType": "uint256", + "name": "minDelay", + "type": "uint256" + }, + { + "internalType": "address[]", + "name": "administrators", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "proposers", + "type": "address[]" + }, + { + "internalType": "address[]", + "name": "executors", + "type": "address[]" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "CallExecuted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "index", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "delay", + "type": "uint256" + } + ], + "name": "CallScheduled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "Cancelled", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "oldDuration", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "newDuration", + "type": "uint256" + } + ], + "name": "MinDelayChange", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "previousAdminRole", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "bytes32", + "name": "newAdminRole", + "type": "bytes32" + } + ], + "name": "RoleAdminChanged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "sender", + "type": "address" + } + ], + "name": "RoleRevoked", + "type": "event" + }, + { + "inputs": [], + "name": "DEFAULT_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "EXECUTOR_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PROPOSER_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "TIMELOCK_ADMIN_ROLE", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "cancel", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "execute", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "datas", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "executeBatch", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "getMinDelay", + "outputs": [ + { + "internalType": "uint256", + "name": "duration", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + } + ], + "name": "getRoleAdmin", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "getTimestamp", + "outputs": [ + { + "internalType": "uint256", + "name": "timestamp", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "grantRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "hasRole", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "hashOperation", + "outputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "datas", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + } + ], + "name": "hashOperationBatch", + "outputs": [ + { + "internalType": "bytes32", + "name": "hash", + "type": "bytes32" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "isOperationDone", + "outputs": [ + { + "internalType": "bool", + "name": "done", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "isOperationPending", + "outputs": [ + { + "internalType": "bool", + "name": "pending", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "id", + "type": "bytes32" + } + ], + "name": "isOperationReady", + "outputs": [ + { + "internalType": "bool", + "name": "ready", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "callerConfirmation", + "type": "address" + } + ], + "name": "renounceRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "role", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "revokeRole", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "target", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "delay", + "type": "uint256" + } + ], + "name": "schedule", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "targets", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes[]", + "name": "datas", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "predecessor", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "delay", + "type": "uint256" + } + ], + "name": "scheduleBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "newDelay", + "type": "uint256" + } + ], + "name": "updateDelay", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } +] From a7d29aa3ac663b9ec4704c2a581ec64a058608e5 Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Wed, 29 Oct 2025 11:01:57 +0100 Subject: [PATCH 35/77] chore: WIP --- abis/contracts/IexecInterfaceNative.json | 37 +++ abis/contracts/IexecInterfaceToken.json | 37 +++ .../facets/IexecEscrowTokenFacet.json | 2 +- abis/contracts/facets/IexecPoco1.json | 287 ++++++++++++++++++ abis/contracts/facets/IexecPoco1Facet.json | 37 +++ abis/contracts/interfaces/IexecPoco1.json | 37 +++ contracts/facets/IexecEscrowTokenFacet.sol | 48 ++- contracts/facets/IexecPoco1Facet.sol | 4 + contracts/interfaces/IexecPoco1.sol | 3 + .../IexecEscrow/IexecEscrowToken.test.ts | 32 ++ test/byContract/IexecPoco/IexecPoco1.test.ts | 85 +++++- 11 files changed, 603 insertions(+), 6 deletions(-) create mode 100644 abis/contracts/facets/IexecPoco1.json diff --git a/abis/contracts/IexecInterfaceNative.json b/abis/contracts/IexecInterfaceNative.json index f17de5719..63f84f8bf 100644 --- a/abis/contracts/IexecInterfaceNative.json +++ b/abis/contracts/IexecInterfaceNative.json @@ -441,6 +441,25 @@ "name": "DealSponsored", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "taskId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "DoItCalled", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -1927,6 +1946,24 @@ "stateMutability": "payable", "type": "function" }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "taskId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "doIt", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "domain", diff --git a/abis/contracts/IexecInterfaceToken.json b/abis/contracts/IexecInterfaceToken.json index 74edd3ea7..2e2078046 100644 --- a/abis/contracts/IexecInterfaceToken.json +++ b/abis/contracts/IexecInterfaceToken.json @@ -441,6 +441,25 @@ "name": "DealSponsored", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "taskId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "DoItCalled", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -1938,6 +1957,24 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "taskId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "doIt", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "domain", diff --git a/abis/contracts/facets/IexecEscrowTokenFacet.json b/abis/contracts/facets/IexecEscrowTokenFacet.json index 2ac4a0beb..c075cf2df 100644 --- a/abis/contracts/facets/IexecEscrowTokenFacet.json +++ b/abis/contracts/facets/IexecEscrowTokenFacet.json @@ -227,7 +227,7 @@ }, { "internalType": "bytes", - "name": "", + "name": "data", "type": "bytes" } ], diff --git a/abis/contracts/facets/IexecPoco1.json b/abis/contracts/facets/IexecPoco1.json new file mode 100644 index 000000000..3ef8bde6e --- /dev/null +++ b/abis/contracts/facets/IexecPoco1.json @@ -0,0 +1,287 @@ +[ + { + "inputs": [ + { + "internalType": "bytes32", + "name": "taskId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "doIt", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "address", + "name": "app", + "type": "address" + }, + { + "internalType": "uint256", + "name": "appprice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "volume", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "tag", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "datasetrestrict", + "type": "address" + }, + { + "internalType": "address", + "name": "workerpoolrestrict", + "type": "address" + }, + { + "internalType": "address", + "name": "requesterrestrict", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "sign", + "type": "bytes" + } + ], + "internalType": "struct IexecLibOrders_v5.AppOrder", + "name": "", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "dataset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "datasetprice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "volume", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "tag", + "type": "bytes32" + }, + { + "internalType": "address", + "name": "apprestrict", + "type": "address" + }, + { + "internalType": "address", + "name": "workerpoolrestrict", + "type": "address" + }, + { + "internalType": "address", + "name": "requesterrestrict", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "sign", + "type": "bytes" + } + ], + "internalType": "struct IexecLibOrders_v5.DatasetOrder", + "name": "", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "workerpool", + "type": "address" + }, + { + "internalType": "uint256", + "name": "workerpoolprice", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "volume", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "tag", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "category", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "trust", + "type": "uint256" + }, + { + "internalType": "address", + "name": "apprestrict", + "type": "address" + }, + { + "internalType": "address", + "name": "datasetrestrict", + "type": "address" + }, + { + "internalType": "address", + "name": "requesterrestrict", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "sign", + "type": "bytes" + } + ], + "internalType": "struct IexecLibOrders_v5.WorkerpoolOrder", + "name": "", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "address", + "name": "app", + "type": "address" + }, + { + "internalType": "uint256", + "name": "appmaxprice", + "type": "uint256" + }, + { + "internalType": "address", + "name": "dataset", + "type": "address" + }, + { + "internalType": "uint256", + "name": "datasetmaxprice", + "type": "uint256" + }, + { + "internalType": "address", + "name": "workerpool", + "type": "address" + }, + { + "internalType": "uint256", + "name": "workerpoolmaxprice", + "type": "uint256" + }, + { + "internalType": "address", + "name": "requester", + "type": "address" + }, + { + "internalType": "uint256", + "name": "volume", + "type": "uint256" + }, + { + "internalType": "bytes32", + "name": "tag", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "category", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "trust", + "type": "uint256" + }, + { + "internalType": "address", + "name": "beneficiary", + "type": "address" + }, + { + "internalType": "address", + "name": "callback", + "type": "address" + }, + { + "internalType": "string", + "name": "params", + "type": "string" + }, + { + "internalType": "bytes32", + "name": "salt", + "type": "bytes32" + }, + { + "internalType": "bytes", + "name": "sign", + "type": "bytes" + } + ], + "internalType": "struct IexecLibOrders_v5.RequestOrder", + "name": "", + "type": "tuple" + } + ], + "name": "matchOrders", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } +] \ No newline at end of file diff --git a/abis/contracts/facets/IexecPoco1Facet.json b/abis/contracts/facets/IexecPoco1Facet.json index 8664e0e7b..d8abd779f 100644 --- a/abis/contracts/facets/IexecPoco1Facet.json +++ b/abis/contracts/facets/IexecPoco1Facet.json @@ -29,6 +29,25 @@ "name": "DealSponsored", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "taskId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "DoItCalled", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -269,6 +288,24 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "taskId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "doIt", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { diff --git a/abis/contracts/interfaces/IexecPoco1.json b/abis/contracts/interfaces/IexecPoco1.json index 2b7d7f02a..c56f92ad9 100644 --- a/abis/contracts/interfaces/IexecPoco1.json +++ b/abis/contracts/interfaces/IexecPoco1.json @@ -18,6 +18,25 @@ "name": "DealSponsored", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "taskId", + "type": "bytes32" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "DoItCalled", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -145,6 +164,24 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "taskId", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "doIt", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { diff --git a/contracts/facets/IexecEscrowTokenFacet.sol b/contracts/facets/IexecEscrowTokenFacet.sol index 7d044e5df..bb9c20f57 100644 --- a/contracts/facets/IexecEscrowTokenFacet.sol +++ b/contracts/facets/IexecEscrowTokenFacet.sol @@ -8,6 +8,8 @@ import {FacetBase} from "./FacetBase.sol"; import {IexecEscrowToken} from "../interfaces/IexecEscrowToken.sol"; import {IexecTokenSpender} from "../interfaces/IexecTokenSpender.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; +import {IexecPoco1} from "../interfaces/IexecPoco1.sol"; +import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; contract IexecEscrowTokenFacet is IexecEscrowToken, IexecTokenSpender, FacetBase, IexecERC20Core { @@ -70,12 +72,54 @@ contract IexecEscrowTokenFacet is IexecEscrowToken, IexecTokenSpender, FacetBase address sender, uint256 amount, address token, - bytes calldata - ) external override returns (bool) { + bytes calldata data + ) external returns (bool) { PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); require(token == address($.m_baseToken), "wrong-token"); _deposit(sender, amount); _mint(sender, amount); + if (data.length > 0) { + // (bool success, bytes memory result) = address(this).call(data); + ( + IexecLibOrders_v5.AppOrder memory apporder, + IexecLibOrders_v5.DatasetOrder memory datasetorder, + IexecLibOrders_v5.WorkerpoolOrder memory workerpoolorder, + IexecLibOrders_v5.RequestOrder memory requestorder + ) = abi.decode( + data, + ( + IexecLibOrders_v5.AppOrder, + IexecLibOrders_v5.DatasetOrder, + IexecLibOrders_v5.WorkerpoolOrder, + IexecLibOrders_v5.RequestOrder + ) + ); + workerpoolorder; + requestorder; + emit IexecPoco1.Called(apporder.app, datasetorder.dataset); + // (bool success, bytes memory result) = address(this).call( + // abi.encodeWithSelector( + // IexecPoco1.matchOrders.selector, + // apporder, + // datasetorder, + // workerpoolorder, + // requestorder + // ) + // ); + // // Bubble up the original revert reason if the call failed + // if (!success) { + // if (result.length > 0) { + // // Decode revert reason and revert with it + // assembly { + // let returndata_size := mload(result) + // revert(add(result, 32), returndata_size) + // } + // } else { + // revert("receive-approval-failed"); + // } + // } + } + return true; } diff --git a/contracts/facets/IexecPoco1Facet.sol b/contracts/facets/IexecPoco1Facet.sol index b82af2eb3..a6f4299c5 100644 --- a/contracts/facets/IexecPoco1Facet.sol +++ b/contracts/facets/IexecPoco1Facet.sol @@ -450,4 +450,8 @@ contract IexecPoco1Facet is IexecPoco1, IexecPoco1Errors, FacetBase, IexecEscrow return dealid; } + + function doIt(address app, address dataset) external override { + emit Called(app, dataset); + } } diff --git a/contracts/interfaces/IexecPoco1.sol b/contracts/interfaces/IexecPoco1.sol index 9840fb354..55b28e0fa 100644 --- a/contracts/interfaces/IexecPoco1.sol +++ b/contracts/interfaces/IexecPoco1.sol @@ -46,4 +46,7 @@ interface IexecPoco1 { IexecLibOrders_v5.WorkerpoolOrder calldata, IexecLibOrders_v5.RequestOrder calldata ) external returns (bytes32); + + event Called(address app, address dataset); + function doIt(address app, address dataset) external; } diff --git a/test/byContract/IexecEscrow/IexecEscrowToken.test.ts b/test/byContract/IexecEscrow/IexecEscrowToken.test.ts index 10978d2ec..e06f108f2 100644 --- a/test/byContract/IexecEscrow/IexecEscrowToken.test.ts +++ b/test/byContract/IexecEscrow/IexecEscrowToken.test.ts @@ -406,8 +406,40 @@ describe('IexecEscrowToken', () => { ); }); }); + + describe('receiveApproval', () => { + it('Should receive approval, deposit tokens, and call the callback', async () => { + const matchOrdersData = await getMatchOrdersData(); + // const matchOrdersData = '0xabcd'; + const tx = await rlcInstance + .connect(anyone) + .approveAndCall(proxyAddress, amount, matchOrdersData); + await expect(tx).to.changeTokenBalances( + rlcInstance, + [anyone, iexecPoco], + [-amount, amount], + ); + await expect(tx).to.emit(rlcInstance, 'Transfer').withArgs(anyone, iexecPoco, amount); + await expect(tx).to.emit(iexecPoco, 'Transfer').withArgs(AddressZero, anyone, amount); + await expect(tx) + .to.emit(iexecPoco, 'DoItCalled') + .withArgs(ethers.keccak256('0xabcd'), 5); + // await expect(tx) + // .to.emit(iexecPoco, 'SchedulerNotice') + // .to.emit(iexecPoco, 'OrdersMatched'); + }); + }); }); +/** + * Returns sample encoded data for matchOrders call. + */ +async function getMatchOrdersData() { + const iface = new ethers.Interface(['function doIt(bytes32 taskId, uint256 value) external']); + const data = iface.encodeFunctionData('doIt', [ethers.keccak256('0xabcd'), 5]); + return data; +} + function getTotalAmount(amounts: bigint[]) { return amounts.reduce((a, b) => a + b, 0n); } diff --git a/test/byContract/IexecPoco/IexecPoco1.test.ts b/test/byContract/IexecPoco/IexecPoco1.test.ts index 3e67d8d43..c3d2d6954 100644 --- a/test/byContract/IexecPoco/IexecPoco1.test.ts +++ b/test/byContract/IexecPoco/IexecPoco1.test.ts @@ -4,7 +4,13 @@ import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers'; import { loadFixture } from '@nomicfoundation/hardhat-network-helpers'; import { expect } from 'chai'; -import { Contract, ContractTransactionResponse, Wallet, ZeroAddress, ZeroHash } from 'ethers'; +import { + Contract, + ContractTransactionResponse, + Wallet, + ZeroAddress, + ZeroHash, +} from 'ethers'; import { ethers } from 'hardhat'; import { ERC1271Mock__factory, @@ -15,6 +21,7 @@ import { IexecPocoAccessors, IexecPocoAccessors__factory, OwnableMock__factory, + RLC__factory, } from '../../../typechain'; import { TAG_STANDARD, TAG_TEE } from '../../../utils/constants'; import { @@ -37,6 +44,7 @@ import { import { compactSignature } from '../../../utils/tools'; import { IexecWrapper } from '../../utils/IexecWrapper'; import { loadHardhatFixtureDeployment } from '../../utils/hardhat-fixture-deployer'; +import { AddressZero } from '@ethersproject/constants'; /* * TODO add Standard tests. @@ -63,6 +71,7 @@ describe('IexecPoco1', () => { let iexecWrapper: IexecWrapper; let [appAddress, datasetAddress, workerpoolAddress]: string[] = []; let [ + iexecAdmin, requester, sponsor, beneficiary, @@ -99,8 +108,16 @@ describe('IexecPoco1', () => { async function initFixture() { const accounts = await getIexecAccounts(); - ({ requester, sponsor, beneficiary, appProvider, datasetProvider, scheduler, anyone } = - accounts); + ({ + iexecAdmin, + requester, + sponsor, + beneficiary, + appProvider, + datasetProvider, + scheduler, + anyone, + } = accounts); iexecWrapper = new IexecWrapper(proxyAddress, accounts); ({ appAddress, datasetAddress, workerpoolAddress } = await iexecWrapper.createAssets()); iexecPoco = IexecInterfaceNative__factory.connect(proxyAddress, anyone); @@ -146,6 +163,68 @@ describe('IexecPoco1', () => { .then((deployedContract) => deployedContract.getAddress()); } + describe('receiveApproval', () => { + it.only('Should receive approval, deposit tokens, and call the callback', async () => { + const rlcInstance = RLC__factory.connect(await iexecPoco.token(), anyone); + const amount = ethers.parseUnits('100', 9); + await rlcInstance + .connect(iexecAdmin) + .transfer(anyone.address, amount * 10n) //enough to cover tests. + .then((tx) => tx.wait()); + + const matchOrdersData = await getMatchOrdersData(); + const tx = await rlcInstance + .connect(anyone) + .approveAndCall(proxyAddress, amount, matchOrdersData); + await expect(tx).to.changeTokenBalances( + rlcInstance, + [anyone, iexecPoco], + [-amount, amount], + ); + await expect(tx).to.emit(rlcInstance, 'Transfer').withArgs(anyone, iexecPoco, amount); + await expect(tx).to.emit(iexecPoco, 'Transfer').withArgs(AddressZero, anyone, amount); + await expect(tx) + .to.emit(iexecPoco, 'Called') + .withArgs(orders.app.app, orders.dataset.dataset); + // await expect(tx) + // .to.emit(iexecPoco, 'SchedulerNotice') + // .to.emit(iexecPoco, 'OrdersMatched'); + }); + + async function getMatchOrdersData() { + const orders = buildOrders({ + assets: ordersAssets, + prices: ordersPrices, + requester: requester.address, + beneficiary: beneficiary.address, + tag: TAG_TEE, + volume: botVolume, + callback: randomAddress, + trust: 1n, + category: 0, + params: '', + }); + await signOrders(iexecWrapper.getDomain(), orders, ordersActors); + return (await iexecPocoAsRequester.matchOrders.populateTransaction(...orders.toArray())) + .data; + // ---------------------------------- + // const iface = new ethers.Interface([ + // 'function doIt(bytes32 taskId, uint256 value) external', + // ]); + // const data = iface.encodeFunctionData('doIt', [ethers.keccak256('0xabcd'), 5]); + // return data; + // ---------------------------------- + // const iface = IexecInterfaceToken__factory.createInterface() as Interface; + // const data = iface.encodeFunctionData('matchOrders', [ + // orders.app, + // orders.dataset, + // orders.workerpool, + // orders.requester, + // ]); + // return '0x' + data.slice(10); // remove function selector + } + }); + describe('Verify signature', () => { ['verifySignature', 'verifyPresignatureOrSignature'].forEach((verifySignatureFunction) => { it(`Should ${verifySignatureFunction} of smart contract`, async () => { From 66573d6c5ed2589fba97b7952c05e04f19cb8ae7 Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Wed, 29 Oct 2025 17:39:02 +0100 Subject: [PATCH 36/77] fix remove empty line --- abis/contracts/registries/apps/AppRegistry.json | 2 +- abis/contracts/registries/datasets/DatasetRegistry.json | 2 +- abis/contracts/registries/workerpools/WorkerpoolRegistry.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/abis/contracts/registries/apps/AppRegistry.json b/abis/contracts/registries/apps/AppRegistry.json index 035e3ccc4..c695c19ee 100644 --- a/abis/contracts/registries/apps/AppRegistry.json +++ b/abis/contracts/registries/apps/AppRegistry.json @@ -843,4 +843,4 @@ "stateMutability": "nonpayable", "type": "function" } -] +] \ No newline at end of file diff --git a/abis/contracts/registries/datasets/DatasetRegistry.json b/abis/contracts/registries/datasets/DatasetRegistry.json index 883c7164f..eb46ae27f 100644 --- a/abis/contracts/registries/datasets/DatasetRegistry.json +++ b/abis/contracts/registries/datasets/DatasetRegistry.json @@ -823,4 +823,4 @@ "stateMutability": "nonpayable", "type": "function" } -] +] \ No newline at end of file diff --git a/abis/contracts/registries/workerpools/WorkerpoolRegistry.json b/abis/contracts/registries/workerpools/WorkerpoolRegistry.json index 799b97230..8c95342c5 100644 --- a/abis/contracts/registries/workerpools/WorkerpoolRegistry.json +++ b/abis/contracts/registries/workerpools/WorkerpoolRegistry.json @@ -803,4 +803,4 @@ "stateMutability": "nonpayable", "type": "function" } -] +] \ No newline at end of file From 25ef2592d06cbd464f71ae8e4517dedd607f9cdc Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Wed, 29 Oct 2025 17:43:39 +0100 Subject: [PATCH 37/77] fix: remove unnecessary empty lines in contract creation functions for cleaner code --- contracts/registries/apps/AppRegistry.sol | 2 -- contracts/registries/datasets/DatasetRegistry.sol | 2 -- contracts/registries/workerpools/WorkerpoolRegistry.sol | 2 -- 3 files changed, 6 deletions(-) diff --git a/contracts/registries/apps/AppRegistry.sol b/contracts/registries/apps/AppRegistry.sol index 8801065ba..8030eeaeb 100644 --- a/contracts/registries/apps/AppRegistry.sol +++ b/contracts/registries/apps/AppRegistry.sol @@ -53,13 +53,11 @@ contract AppRegistry is Registry { _appMREnclave ); address entry = _mintPredict(_appOwner, initializer); - // TEMPORARY MIGRATION FIX: Check if contract already exists to revert without custom error for backward compatibility // TODO: Remove this in the next major version if (entry.code.length > 0) { revert("Create2: Failed on deploy"); } - _mintCreate(_appOwner, initializer); return App(entry); } diff --git a/contracts/registries/datasets/DatasetRegistry.sol b/contracts/registries/datasets/DatasetRegistry.sol index ecdb56c7a..d4a31aac2 100644 --- a/contracts/registries/datasets/DatasetRegistry.sol +++ b/contracts/registries/datasets/DatasetRegistry.sol @@ -47,13 +47,11 @@ contract DatasetRegistry is Registry { _datasetChecksum ); address entry = _mintPredict(_datasetOwner, initializer); - // TEMPORARY MIGRATION FIX: Check if contract already exists to revert without custom error for backward compatibility // TODO: Remove this in the next major version if (entry.code.length > 0) { revert("Create2: Failed on deploy"); } - _mintCreate(_datasetOwner, initializer); return Dataset(entry); } diff --git a/contracts/registries/workerpools/WorkerpoolRegistry.sol b/contracts/registries/workerpools/WorkerpoolRegistry.sol index 38e46efce..575f1e60a 100644 --- a/contracts/registries/workerpools/WorkerpoolRegistry.sol +++ b/contracts/registries/workerpools/WorkerpoolRegistry.sol @@ -33,13 +33,11 @@ contract WorkerpoolRegistry is Registry { ) external returns (Workerpool) { bytes memory initializer = encodeInitializer(_workerpoolDescription); address entry = _mintPredict(_workerpoolOwner, initializer); - // TEMPORARY MIGRATION FIX: Check if contract already exists to revert without custom error for backward compatibility // TODO: Remove this in the next major version if (entry.code.length > 0) { revert("Create2: Failed on deploy"); } - _mintCreate(_workerpoolOwner, initializer); return Workerpool(entry); } From 3a332cc9a177cd1ea9fb707aa590de7a182b5147 Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Wed, 29 Oct 2025 17:55:49 +0100 Subject: [PATCH 38/77] fix: optimize balance checks in transfer and burn functions for improved readability --- contracts/facets/IexecERC20Core.sol | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/contracts/facets/IexecERC20Core.sol b/contracts/facets/IexecERC20Core.sol index 02d531e5d..f44769704 100644 --- a/contracts/facets/IexecERC20Core.sol +++ b/contracts/facets/IexecERC20Core.sol @@ -12,12 +12,13 @@ contract IexecERC20Core is IexecERC20Common, FacetBase { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); + uint256 senderBalance = $.m_balances[sender]; // Read balance once // TEMPORARY MIGRATION FIX: Check balance to prevent underflow and revert without reason for backward compatibility // TODO: Remove this in the next major version - if ($.m_balances[sender] < amount) { + if (senderBalance < amount) { revert(); } - $.m_balances[sender] = $.m_balances[sender] - amount; + $.m_balances[sender] = senderBalance - amount; $.m_balances[recipient] = $.m_balances[recipient] + amount; emit Transfer(sender, recipient, amount); } @@ -42,11 +43,6 @@ contract IexecERC20Core is IexecERC20Common, FacetBase { if ($.m_balances[account] < amount) { revert(); } - // TEMPORARY MIGRATION FIX: Check totalSupply to prevent underflow and revert without reason for backward compatibility - // TODO: Remove this in the next major version - if ($.m_totalSupply < amount) { - revert(); - } $.m_totalSupply = $.m_totalSupply - amount; $.m_balances[account] = $.m_balances[account] - amount; emit Transfer(account, address(0), amount); From 622a17bd3caaa55001646b7b7c6bca6b7ccbb4f8 Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Wed, 29 Oct 2025 17:59:48 +0100 Subject: [PATCH 39/77] fix: optimize allowance checks in transferFrom and decreaseAllowance functions for improved readability --- contracts/facets/IexecERC20Facet.sol | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/contracts/facets/IexecERC20Facet.sol b/contracts/facets/IexecERC20Facet.sol index aa45a838a..a2d4ee2ba 100644 --- a/contracts/facets/IexecERC20Facet.sol +++ b/contracts/facets/IexecERC20Facet.sol @@ -47,10 +47,11 @@ contract IexecERC20Facet is IexecERC20, FacetBase, IexecERC20Core { _transfer(sender, recipient, amount); // TEMPORARY MIGRATION FIX: Check allowance to prevent underflow and revert without reason for backward compatibility // TODO: Remove this in the next major version - if ($.m_allowances[sender][_msgSender()] < amount) { + uint256 currentAllowance = $.m_allowances[sender][_msgSender()]; // Read allowance once + if (currentAllowance < amount) { revert(); } - _approve(sender, _msgSender(), $.m_allowances[sender][_msgSender()] - amount); + _approve(sender, _msgSender(), currentAllowance - amount); return true; } @@ -70,10 +71,11 @@ contract IexecERC20Facet is IexecERC20, FacetBase, IexecERC20Core { PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); // TEMPORARY MIGRATION FIX: Check allowance to prevent underflow and revert without reason for backward compatibility // TODO: Remove this in the next major version - if ($.m_allowances[_msgSender()][spender] < subtractedValue) { + uint256 currentAllowance = $.m_allowances[_msgSender()][spender]; // Read allowance once + if (currentAllowance < subtractedValue) { revert(); } - _approve(_msgSender(), spender, $.m_allowances[_msgSender()][spender] - subtractedValue); + _approve(_msgSender(), spender, currentAllowance - subtractedValue); return true; } } From 9e9639f497efe09648bf8d8b028287396b9c92cf Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Wed, 29 Oct 2025 18:35:36 +0100 Subject: [PATCH 40/77] fix: update @openzeppelin/contracts version to ^5.4.0 for improved functionality --- package-lock.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index c6b38eeb5..6737c9c6e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@iexec/interface": "3.0.35-8", "@iexec/solidity": "^0.1.1", "@mudgen/diamond-1": "github:mudgen/diamond-1-hardhat#3da037b", - "@openzeppelin/contracts": "^5.0.2", + "@openzeppelin/contracts": "^5.4.0", "@uniswap/v2-periphery": "1.1.0-beta.0", "createx": "github:pcaversaccio/createx#v1.0.0", "rlc-faucet-contract": "1.0.10" diff --git a/package.json b/package.json index 057689631..fb8347d1e 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@iexec/interface": "3.0.35-8", "@iexec/solidity": "^0.1.1", "@mudgen/diamond-1": "github:mudgen/diamond-1-hardhat#3da037b", - "@openzeppelin/contracts": "^5.0.2", + "@openzeppelin/contracts": "^5.4.0", "@uniswap/v2-periphery": "1.1.0-beta.0", "createx": "github:pcaversaccio/createx#v1.0.0", "rlc-faucet-contract": "1.0.10" From 541536b429a001dc18f9c4101d27bd49611af735 Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Wed, 29 Oct 2025 18:37:24 +0100 Subject: [PATCH 41/77] fix: add MathOverflowedMulDiv error type to IexecPoco2Facet.json for improved error handling --- abis/contracts/facets/IexecPoco2Facet.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/abis/contracts/facets/IexecPoco2Facet.json b/abis/contracts/facets/IexecPoco2Facet.json index 4f8727481..221f2ba05 100644 --- a/abis/contracts/facets/IexecPoco2Facet.json +++ b/abis/contracts/facets/IexecPoco2Facet.json @@ -1,4 +1,9 @@ [ + { + "inputs": [], + "name": "MathOverflowedMulDiv", + "type": "error" + }, { "anonymous": false, "inputs": [ @@ -522,4 +527,4 @@ "stateMutability": "nonpayable", "type": "function" } -] +] \ No newline at end of file From e59c38a2dfe94a2cbb5879803d8af06f761ee074 Mon Sep 17 00:00:00 2001 From: Robin Le Caignec <72495599+Le-Caignec@users.noreply.github.com> Date: Wed, 29 Oct 2025 18:38:31 +0100 Subject: [PATCH 42/77] Update test/byContract/registries/registries.test.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- test/byContract/registries/registries.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/byContract/registries/registries.test.ts b/test/byContract/registries/registries.test.ts index caca92d51..cf3d94832 100644 --- a/test/byContract/registries/registries.test.ts +++ b/test/byContract/registries/registries.test.ts @@ -19,7 +19,7 @@ import { WorkerpoolRegistry__factory, Workerpool__factory, } from '../../../typechain'; -//import the correct InitializableUpgradeabilityProxy__factory from the local registries proxy instead of @iexec/solidity +//import the correct InitializableUpgradeabilityProxy__factory from the local registry's proxy instead of @iexec/solidity //TODO: merge with the previous import when @iexec/solidity will be removed import { InitializableUpgradeabilityProxy__factory } from '../../../typechain/factories/contracts/registries/proxy/InitializableUpgradeabilityProxy__factory'; import config from '../../../utils/config'; From 8bc4bdea7fdd298c7afe0d6181bc156b76739f49 Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Thu, 30 Oct 2025 08:30:34 +0100 Subject: [PATCH 43/77] fix: remove broken changes --- abis/contracts/IexecInterfaceNative.json | 39 +- abis/contracts/IexecInterfaceToken.json | 39 +- .../facets/IexecEscrowTokenFacet.json | 4 +- abis/contracts/facets/IexecPoco1.json | 287 ------- abis/contracts/facets/IexecPoco1Facet.json | 39 +- abis/contracts/interfaces/IexecPoco1.json | 39 +- contracts/facets/IexecEscrowTokenFacet.sol | 49 +- contracts/facets/IexecPoco1Facet.sol | 13 +- contracts/interfaces/IexecPoco1.sol | 5 +- docs/solidity/index.md | 710 +++++++----------- .../IexecEscrow/IexecEscrowToken.test.ts | 32 - test/byContract/IexecPoco/IexecPoco1.test.ts | 85 +-- 12 files changed, 297 insertions(+), 1044 deletions(-) delete mode 100644 abis/contracts/facets/IexecPoco1.json diff --git a/abis/contracts/IexecInterfaceNative.json b/abis/contracts/IexecInterfaceNative.json index 63f84f8bf..5ae605c68 100644 --- a/abis/contracts/IexecInterfaceNative.json +++ b/abis/contracts/IexecInterfaceNative.json @@ -441,25 +441,6 @@ "name": "DealSponsored", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes32", - "name": "taskId", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "DoItCalled", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -1946,24 +1927,6 @@ "stateMutability": "payable", "type": "function" }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "taskId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "doIt", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [], "name": "domain", @@ -4433,4 +4396,4 @@ "stateMutability": "payable", "type": "receive" } -] \ No newline at end of file +] diff --git a/abis/contracts/IexecInterfaceToken.json b/abis/contracts/IexecInterfaceToken.json index 2e2078046..4001f846f 100644 --- a/abis/contracts/IexecInterfaceToken.json +++ b/abis/contracts/IexecInterfaceToken.json @@ -441,25 +441,6 @@ "name": "DealSponsored", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes32", - "name": "taskId", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "DoItCalled", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -1957,24 +1938,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "taskId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "doIt", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [], "name": "domain", @@ -4444,4 +4407,4 @@ "stateMutability": "payable", "type": "receive" } -] \ No newline at end of file +] diff --git a/abis/contracts/facets/IexecEscrowTokenFacet.json b/abis/contracts/facets/IexecEscrowTokenFacet.json index c075cf2df..29a361344 100644 --- a/abis/contracts/facets/IexecEscrowTokenFacet.json +++ b/abis/contracts/facets/IexecEscrowTokenFacet.json @@ -227,7 +227,7 @@ }, { "internalType": "bytes", - "name": "data", + "name": "", "type": "bytes" } ], @@ -302,4 +302,4 @@ "stateMutability": "payable", "type": "receive" } -] \ No newline at end of file +] diff --git a/abis/contracts/facets/IexecPoco1.json b/abis/contracts/facets/IexecPoco1.json deleted file mode 100644 index 3ef8bde6e..000000000 --- a/abis/contracts/facets/IexecPoco1.json +++ /dev/null @@ -1,287 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "bytes32", - "name": "taskId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "doIt", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "components": [ - { - "internalType": "address", - "name": "app", - "type": "address" - }, - { - "internalType": "uint256", - "name": "appprice", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "volume", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "tag", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "datasetrestrict", - "type": "address" - }, - { - "internalType": "address", - "name": "workerpoolrestrict", - "type": "address" - }, - { - "internalType": "address", - "name": "requesterrestrict", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "sign", - "type": "bytes" - } - ], - "internalType": "struct IexecLibOrders_v5.AppOrder", - "name": "", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "address", - "name": "dataset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "datasetprice", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "volume", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "tag", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "apprestrict", - "type": "address" - }, - { - "internalType": "address", - "name": "workerpoolrestrict", - "type": "address" - }, - { - "internalType": "address", - "name": "requesterrestrict", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "sign", - "type": "bytes" - } - ], - "internalType": "struct IexecLibOrders_v5.DatasetOrder", - "name": "", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "address", - "name": "workerpool", - "type": "address" - }, - { - "internalType": "uint256", - "name": "workerpoolprice", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "volume", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "tag", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "category", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "trust", - "type": "uint256" - }, - { - "internalType": "address", - "name": "apprestrict", - "type": "address" - }, - { - "internalType": "address", - "name": "datasetrestrict", - "type": "address" - }, - { - "internalType": "address", - "name": "requesterrestrict", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "sign", - "type": "bytes" - } - ], - "internalType": "struct IexecLibOrders_v5.WorkerpoolOrder", - "name": "", - "type": "tuple" - }, - { - "components": [ - { - "internalType": "address", - "name": "app", - "type": "address" - }, - { - "internalType": "uint256", - "name": "appmaxprice", - "type": "uint256" - }, - { - "internalType": "address", - "name": "dataset", - "type": "address" - }, - { - "internalType": "uint256", - "name": "datasetmaxprice", - "type": "uint256" - }, - { - "internalType": "address", - "name": "workerpool", - "type": "address" - }, - { - "internalType": "uint256", - "name": "workerpoolmaxprice", - "type": "uint256" - }, - { - "internalType": "address", - "name": "requester", - "type": "address" - }, - { - "internalType": "uint256", - "name": "volume", - "type": "uint256" - }, - { - "internalType": "bytes32", - "name": "tag", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "category", - "type": "uint256" - }, - { - "internalType": "uint256", - "name": "trust", - "type": "uint256" - }, - { - "internalType": "address", - "name": "beneficiary", - "type": "address" - }, - { - "internalType": "address", - "name": "callback", - "type": "address" - }, - { - "internalType": "string", - "name": "params", - "type": "string" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - }, - { - "internalType": "bytes", - "name": "sign", - "type": "bytes" - } - ], - "internalType": "struct IexecLibOrders_v5.RequestOrder", - "name": "", - "type": "tuple" - } - ], - "name": "matchOrders", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "nonpayable", - "type": "function" - } -] \ No newline at end of file diff --git a/abis/contracts/facets/IexecPoco1Facet.json b/abis/contracts/facets/IexecPoco1Facet.json index d8abd779f..ea52d0f77 100644 --- a/abis/contracts/facets/IexecPoco1Facet.json +++ b/abis/contracts/facets/IexecPoco1Facet.json @@ -29,25 +29,6 @@ "name": "DealSponsored", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes32", - "name": "taskId", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "DoItCalled", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -288,24 +269,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "taskId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "doIt", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -922,4 +885,4 @@ "stateMutability": "view", "type": "function" } -] \ No newline at end of file +] diff --git a/abis/contracts/interfaces/IexecPoco1.json b/abis/contracts/interfaces/IexecPoco1.json index c56f92ad9..2d95fce9e 100644 --- a/abis/contracts/interfaces/IexecPoco1.json +++ b/abis/contracts/interfaces/IexecPoco1.json @@ -18,25 +18,6 @@ "name": "DealSponsored", "type": "event" }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "bytes32", - "name": "taskId", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "DoItCalled", - "type": "event" - }, { "anonymous": false, "inputs": [ @@ -164,24 +145,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "taskId", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - } - ], - "name": "doIt", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, { "inputs": [ { @@ -798,4 +761,4 @@ "stateMutability": "view", "type": "function" } -] \ No newline at end of file +] diff --git a/contracts/facets/IexecEscrowTokenFacet.sol b/contracts/facets/IexecEscrowTokenFacet.sol index bb9c20f57..92761d7aa 100644 --- a/contracts/facets/IexecEscrowTokenFacet.sol +++ b/contracts/facets/IexecEscrowTokenFacet.sol @@ -8,11 +8,8 @@ import {FacetBase} from "./FacetBase.sol"; import {IexecEscrowToken} from "../interfaces/IexecEscrowToken.sol"; import {IexecTokenSpender} from "../interfaces/IexecTokenSpender.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; -import {IexecPoco1} from "../interfaces/IexecPoco1.sol"; -import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; contract IexecEscrowTokenFacet is IexecEscrowToken, IexecTokenSpender, FacetBase, IexecERC20Core { - /*************************************************************************** * Escrow methods: public * ***************************************************************************/ @@ -72,54 +69,12 @@ contract IexecEscrowTokenFacet is IexecEscrowToken, IexecTokenSpender, FacetBase address sender, uint256 amount, address token, - bytes calldata data - ) external returns (bool) { + bytes calldata + ) external override returns (bool) { PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); require(token == address($.m_baseToken), "wrong-token"); _deposit(sender, amount); _mint(sender, amount); - if (data.length > 0) { - // (bool success, bytes memory result) = address(this).call(data); - ( - IexecLibOrders_v5.AppOrder memory apporder, - IexecLibOrders_v5.DatasetOrder memory datasetorder, - IexecLibOrders_v5.WorkerpoolOrder memory workerpoolorder, - IexecLibOrders_v5.RequestOrder memory requestorder - ) = abi.decode( - data, - ( - IexecLibOrders_v5.AppOrder, - IexecLibOrders_v5.DatasetOrder, - IexecLibOrders_v5.WorkerpoolOrder, - IexecLibOrders_v5.RequestOrder - ) - ); - workerpoolorder; - requestorder; - emit IexecPoco1.Called(apporder.app, datasetorder.dataset); - // (bool success, bytes memory result) = address(this).call( - // abi.encodeWithSelector( - // IexecPoco1.matchOrders.selector, - // apporder, - // datasetorder, - // workerpoolorder, - // requestorder - // ) - // ); - // // Bubble up the original revert reason if the call failed - // if (!success) { - // if (result.length > 0) { - // // Decode revert reason and revert with it - // assembly { - // let returndata_size := mload(result) - // revert(add(result, 32), returndata_size) - // } - // } else { - // revert("receive-approval-failed"); - // } - // } - } - return true; } diff --git a/contracts/facets/IexecPoco1Facet.sol b/contracts/facets/IexecPoco1Facet.sol index a6f4299c5..8598048e5 100644 --- a/contracts/facets/IexecPoco1Facet.sol +++ b/contracts/facets/IexecPoco1Facet.sol @@ -27,7 +27,14 @@ struct Matching { bool hasDataset; } -contract IexecPoco1Facet is IexecPoco1, IexecPoco1Errors, FacetBase, IexecEscrow, SignatureVerifier, IexecPocoCommon { +contract IexecPoco1Facet is + IexecPoco1, + IexecPoco1Errors, + FacetBase, + IexecEscrow, + SignatureVerifier, + IexecPocoCommon +{ using Math for uint256; using IexecLibOrders_v5 for IexecLibOrders_v5.AppOrder; using IexecLibOrders_v5 for IexecLibOrders_v5.DatasetOrder; @@ -450,8 +457,4 @@ contract IexecPoco1Facet is IexecPoco1, IexecPoco1Errors, FacetBase, IexecEscrow return dealid; } - - function doIt(address app, address dataset) external override { - emit Called(app, dataset); - } } diff --git a/contracts/interfaces/IexecPoco1.sol b/contracts/interfaces/IexecPoco1.sol index 55b28e0fa..70d8bfb31 100644 --- a/contracts/interfaces/IexecPoco1.sol +++ b/contracts/interfaces/IexecPoco1.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; pragma experimental ABIEncoderV2; import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; @@ -46,7 +46,4 @@ interface IexecPoco1 { IexecLibOrders_v5.WorkerpoolOrder calldata, IexecLibOrders_v5.RequestOrder calldata ) external returns (bytes32); - - event Called(address app, address dataset); - function doIt(address app, address dataset) external; } diff --git a/docs/solidity/index.md b/docs/solidity/index.md index b49fa705b..fa5ddcf95 100644 --- a/docs/solidity/index.md +++ b/docs/solidity/index.md @@ -1,5 +1,31 @@ # Solidity API +## IexecInterfaceNative + +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in native mode. + +_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +## IexecInterfaceToken + +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in token mode. + +_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +## IexecCategoryManagerFacet + +### createCategory + +```solidity +function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) +``` + +Methods + ## IexecConfigurationExtraFacet ### changeRegistries @@ -8,6 +34,84 @@ function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external ``` +## IexecConfigurationFacet + +### configure + +```solidity +function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external +``` + +### domain + +```solidity +function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) +``` + +### updateDomainSeparator + +```solidity +function updateDomainSeparator() external +``` + +### importScore + +```solidity +function importScore(address _worker) external +``` + +### setTeeBroker + +```solidity +function setTeeBroker(address _teebroker) external +``` + +### setCallbackGas + +```solidity +function setCallbackGas(uint256 _callbackgas) external +``` + +## IexecERC20Core + +## IexecERC20Facet + +### transfer + +```solidity +function transfer(address recipient, uint256 amount) external returns (bool) +``` + +### approve + +```solidity +function approve(address spender, uint256 value) external returns (bool) +``` + +### approveAndCall + +```solidity +function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) +``` + +### transferFrom + +```solidity +function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) +``` + +### increaseAllowance + +```solidity +function increaseAllowance(address spender, uint256 addedValue) external returns (bool) +``` + +### decreaseAllowance + +```solidity +function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) +``` + ## IexecEscrow ### Transfer @@ -40,6 +144,138 @@ event Reward(address owner, uint256 amount, bytes32 ref) event Seize(address owner, uint256 amount, bytes32 ref) ``` +## IexecEscrowNativeFacet + +### receive + +```solidity +receive() external payable +``` + +### fallback + +```solidity +fallback() external payable +``` + +### deposit + +```solidity +function deposit() external payable returns (bool) +``` + +### depositFor + +```solidity +function depositFor(address target) external payable returns (bool) +``` + +### depositForArray + +```solidity +function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) +``` + +### withdraw + +```solidity +function withdraw(uint256 amount) external returns (bool) +``` + +### withdrawTo + +```solidity +function withdrawTo(uint256 amount, address target) external returns (bool) +``` + +### recover + +```solidity +function recover() external returns (uint256) +``` + +## IexecEscrowTokenFacet + +### receive + +```solidity +receive() external payable +``` + +### fallback + +```solidity +fallback() external payable +``` + +### deposit + +```solidity +function deposit(uint256 amount) external returns (bool) +``` + +### depositFor + +```solidity +function depositFor(uint256 amount, address target) external returns (bool) +``` + +### depositForArray + +```solidity +function depositForArray(uint256[] amounts, address[] targets) external returns (bool) +``` + +### withdraw + +```solidity +function withdraw(uint256 amount) external returns (bool) +``` + +### withdrawTo + +```solidity +function withdrawTo(uint256 amount, address target) external returns (bool) +``` + +### recover + +```solidity +function recover() external returns (uint256) +``` + +### receiveApproval + +```solidity +function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) +``` + +## IexecOrderManagementFacet + +### manageAppOrder + +```solidity +function manageAppOrder(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) external +``` + +### manageDatasetOrder + +```solidity +function manageDatasetOrder(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) external +``` + +### manageWorkerpoolOrder + +```solidity +function manageWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) external +``` + +### manageRequestOrder + +```solidity +function manageRequestOrder(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) external +``` + ## Matching ```solidity @@ -568,30 +804,56 @@ Claim task to get a refund if task is not completed after deadline. | dealId | bytes32 | The ID of the deal. | | index | uint256 | The index of the task. | -## IexecLibCore_v5 - -### Account +## IexecRelayFacet -Tools +### broadcastAppOrder ```solidity -struct Account { - uint256 stake; - uint256 locked; -} +function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external ``` -### Category +### broadcastDatasetOrder ```solidity -struct Category { - string name; - string description; - uint256 workClockTimeRef; -} +function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external ``` -### DatasetInfo +### broadcastWorkerpoolOrder + +```solidity +function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external +``` + +### broadcastRequestOrder + +```solidity +function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external +``` + +## IexecLibCore_v5 + +### Account + +Tools + +```solidity +struct Account { + uint256 stake; + uint256 locked; +} +``` + +### Category + +```solidity +struct Category { + string name; + string description; + uint256 workClockTimeRef; +} +``` + +### DatasetInfo ```solidity struct DatasetInfo { @@ -1500,421 +1762,3 @@ function createWorkerpool(address _workerpoolOwner, string _workerpoolDescriptio function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) ``` -## IexecInterfaceNative - -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in native mode. - -_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -## IexecInterfaceToken - -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in token mode. - -_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -## IexecCategoryManagerFacet - -### createCategory - -```solidity -function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) -``` - -Methods - -## IexecConfigurationFacet - -### configure - -```solidity -function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external -``` - -### domain - -```solidity -function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) -``` - -### updateDomainSeparator - -```solidity -function updateDomainSeparator() external -``` - -### importScore - -```solidity -function importScore(address _worker) external -``` - -### setTeeBroker - -```solidity -function setTeeBroker(address _teebroker) external -``` - -### setCallbackGas - -```solidity -function setCallbackGas(uint256 _callbackgas) external -``` - -## IexecERC20Core - -## IexecERC20Facet - -### transfer - -```solidity -function transfer(address recipient, uint256 amount) external returns (bool) -``` - -### approve - -```solidity -function approve(address spender, uint256 value) external returns (bool) -``` - -### approveAndCall - -```solidity -function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) -``` - -### transferFrom - -```solidity -function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) -``` - -### increaseAllowance - -```solidity -function increaseAllowance(address spender, uint256 addedValue) external returns (bool) -``` - -### decreaseAllowance - -```solidity -function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) -``` - -## IexecEscrowNativeFacet - -### receive - -```solidity -receive() external payable -``` - -### fallback - -```solidity -fallback() external payable -``` - -### deposit - -```solidity -function deposit() external payable returns (bool) -``` - -### depositFor - -```solidity -function depositFor(address target) external payable returns (bool) -``` - -### depositForArray - -```solidity -function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) -``` - -### withdraw - -```solidity -function withdraw(uint256 amount) external returns (bool) -``` - -### withdrawTo - -```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) -``` - -### recover - -```solidity -function recover() external returns (uint256) -``` - -## IexecEscrowTokenFacet - -### receive - -```solidity -receive() external payable -``` - -### fallback - -```solidity -fallback() external payable -``` - -### deposit - -```solidity -function deposit(uint256 amount) external returns (bool) -``` - -### depositFor - -```solidity -function depositFor(uint256 amount, address target) external returns (bool) -``` - -### depositForArray - -```solidity -function depositForArray(uint256[] amounts, address[] targets) external returns (bool) -``` - -### withdraw - -```solidity -function withdraw(uint256 amount) external returns (bool) -``` - -### withdrawTo - -```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) -``` - -### recover - -```solidity -function recover() external returns (uint256) -``` - -### receiveApproval - -```solidity -function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) -``` - -## IexecOrderManagementFacet - -### manageAppOrder - -```solidity -function manageAppOrder(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) external -``` - -### manageDatasetOrder - -```solidity -function manageDatasetOrder(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) external -``` - -### manageWorkerpoolOrder - -```solidity -function manageWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) external -``` - -### manageRequestOrder - -```solidity -function manageRequestOrder(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) external -``` - -## IexecRelayFacet - -### broadcastAppOrder - -```solidity -function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external -``` - -### broadcastDatasetOrder - -```solidity -function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external -``` - -### broadcastWorkerpoolOrder - -```solidity -function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external -``` - -### broadcastRequestOrder - -```solidity -function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external -``` - -## FacetBase - -_Every facet must inherit from this contract._ - -## PocoStorageLib - -### PocoStorage - -```solidity -struct PocoStorage { - contract IRegistry m_appregistry; - contract IRegistry m_datasetregistry; - contract IRegistry m_workerpoolregistry; - contract IERC20 m_baseToken; - string m_name; - string m_symbol; - uint8 m_decimals; - uint256 m_totalSupply; - mapping(address => uint256) m_balances; - mapping(address => uint256) m_frozens; - mapping(address => mapping(address => uint256)) m_allowances; - bytes32 m_eip712DomainSeparator; - mapping(bytes32 => address) m_presigned; - mapping(bytes32 => uint256) m_consumed; - mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; - mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; - mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; - mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; - mapping(address => uint256) m_workerScores; - address m_teebroker; - uint256 m_callbackgas; - struct IexecLibCore_v5.Category[] m_categories; - address m_v3_iexecHub; - mapping(address => bool) m_v3_scoreImported; - mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; -} -``` - -## IRegistry - -### isRegistered - -```solidity -function isRegistered(address _entry) external view returns (bool) -``` - -## IexecEscrowTokenSwapFacet - -### UniswapV2Router - -```solidity -function UniswapV2Router() external view returns (contract IUniswapV2Router02) -``` - -### estimateDepositEthSent - -```solidity -function estimateDepositEthSent(uint256 eth) external view returns (uint256 token) -``` - -### estimateDepositTokenWanted - -```solidity -function estimateDepositTokenWanted(uint256 token) external view returns (uint256 eth) -``` - -### estimateWithdrawTokenSent - -```solidity -function estimateWithdrawTokenSent(uint256 token) external view returns (uint256 eth) -``` - -### estimateWithdrawEthWanted - -```solidity -function estimateWithdrawEthWanted(uint256 eth) external view returns (uint256 token) -``` - -### receive - -```solidity -receive() external payable -``` - -### fallback - -```solidity -fallback() external payable -``` - -### depositEth - -```solidity -function depositEth() external payable -``` - -### depositEthFor - -```solidity -function depositEthFor(address target) external payable -``` - -### safeDepositEth - -```solidity -function safeDepositEth(uint256 minimum) external payable -``` - -### safeDepositEthFor - -```solidity -function safeDepositEthFor(uint256 minimum, address target) external payable -``` - -### requestToken - -```solidity -function requestToken(uint256 amount) external payable -``` - -### requestTokenFor - -```solidity -function requestTokenFor(uint256 amount, address target) external payable -``` - -### withdrawEth - -```solidity -function withdrawEth(uint256 amount) external -``` - -### withdrawEthTo - -```solidity -function withdrawEthTo(uint256 amount, address target) external -``` - -### safeWithdrawEth - -```solidity -function safeWithdrawEth(uint256 amount, uint256 minimum) external -``` - -### safeWithdrawEthTo - -```solidity -function safeWithdrawEthTo(uint256 amount, uint256 minimum, address target) external -``` - -### matchOrdersWithEth - -```solidity -function matchOrdersWithEth(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) public payable returns (bytes32) -``` - diff --git a/test/byContract/IexecEscrow/IexecEscrowToken.test.ts b/test/byContract/IexecEscrow/IexecEscrowToken.test.ts index bdfaf3201..f7bf57223 100644 --- a/test/byContract/IexecEscrow/IexecEscrowToken.test.ts +++ b/test/byContract/IexecEscrow/IexecEscrowToken.test.ts @@ -406,40 +406,8 @@ describe('IexecEscrowToken', () => { ); }); }); - - describe('receiveApproval', () => { - it('Should receive approval, deposit tokens, and call the callback', async () => { - const matchOrdersData = await getMatchOrdersData(); - // const matchOrdersData = '0xabcd'; - const tx = await rlcInstance - .connect(anyone) - .approveAndCall(proxyAddress, amount, matchOrdersData); - await expect(tx).to.changeTokenBalances( - rlcInstance, - [anyone, iexecPoco], - [-amount, amount], - ); - await expect(tx).to.emit(rlcInstance, 'Transfer').withArgs(anyone, iexecPoco, amount); - await expect(tx).to.emit(iexecPoco, 'Transfer').withArgs(AddressZero, anyone, amount); - await expect(tx) - .to.emit(iexecPoco, 'DoItCalled') - .withArgs(ethers.keccak256('0xabcd'), 5); - // await expect(tx) - // .to.emit(iexecPoco, 'SchedulerNotice') - // .to.emit(iexecPoco, 'OrdersMatched'); - }); - }); }); -/** - * Returns sample encoded data for matchOrders call. - */ -async function getMatchOrdersData() { - const iface = new ethers.Interface(['function doIt(bytes32 taskId, uint256 value) external']); - const data = iface.encodeFunctionData('doIt', [ethers.keccak256('0xabcd'), 5]); - return data; -} - function getTotalAmount(amounts: bigint[]) { return amounts.reduce((a, b) => a + b, 0n); } diff --git a/test/byContract/IexecPoco/IexecPoco1.test.ts b/test/byContract/IexecPoco/IexecPoco1.test.ts index c3d2d6954..3e67d8d43 100644 --- a/test/byContract/IexecPoco/IexecPoco1.test.ts +++ b/test/byContract/IexecPoco/IexecPoco1.test.ts @@ -4,13 +4,7 @@ import { SignerWithAddress } from '@nomicfoundation/hardhat-ethers/signers'; import { loadFixture } from '@nomicfoundation/hardhat-network-helpers'; import { expect } from 'chai'; -import { - Contract, - ContractTransactionResponse, - Wallet, - ZeroAddress, - ZeroHash, -} from 'ethers'; +import { Contract, ContractTransactionResponse, Wallet, ZeroAddress, ZeroHash } from 'ethers'; import { ethers } from 'hardhat'; import { ERC1271Mock__factory, @@ -21,7 +15,6 @@ import { IexecPocoAccessors, IexecPocoAccessors__factory, OwnableMock__factory, - RLC__factory, } from '../../../typechain'; import { TAG_STANDARD, TAG_TEE } from '../../../utils/constants'; import { @@ -44,7 +37,6 @@ import { import { compactSignature } from '../../../utils/tools'; import { IexecWrapper } from '../../utils/IexecWrapper'; import { loadHardhatFixtureDeployment } from '../../utils/hardhat-fixture-deployer'; -import { AddressZero } from '@ethersproject/constants'; /* * TODO add Standard tests. @@ -71,7 +63,6 @@ describe('IexecPoco1', () => { let iexecWrapper: IexecWrapper; let [appAddress, datasetAddress, workerpoolAddress]: string[] = []; let [ - iexecAdmin, requester, sponsor, beneficiary, @@ -108,16 +99,8 @@ describe('IexecPoco1', () => { async function initFixture() { const accounts = await getIexecAccounts(); - ({ - iexecAdmin, - requester, - sponsor, - beneficiary, - appProvider, - datasetProvider, - scheduler, - anyone, - } = accounts); + ({ requester, sponsor, beneficiary, appProvider, datasetProvider, scheduler, anyone } = + accounts); iexecWrapper = new IexecWrapper(proxyAddress, accounts); ({ appAddress, datasetAddress, workerpoolAddress } = await iexecWrapper.createAssets()); iexecPoco = IexecInterfaceNative__factory.connect(proxyAddress, anyone); @@ -163,68 +146,6 @@ describe('IexecPoco1', () => { .then((deployedContract) => deployedContract.getAddress()); } - describe('receiveApproval', () => { - it.only('Should receive approval, deposit tokens, and call the callback', async () => { - const rlcInstance = RLC__factory.connect(await iexecPoco.token(), anyone); - const amount = ethers.parseUnits('100', 9); - await rlcInstance - .connect(iexecAdmin) - .transfer(anyone.address, amount * 10n) //enough to cover tests. - .then((tx) => tx.wait()); - - const matchOrdersData = await getMatchOrdersData(); - const tx = await rlcInstance - .connect(anyone) - .approveAndCall(proxyAddress, amount, matchOrdersData); - await expect(tx).to.changeTokenBalances( - rlcInstance, - [anyone, iexecPoco], - [-amount, amount], - ); - await expect(tx).to.emit(rlcInstance, 'Transfer').withArgs(anyone, iexecPoco, amount); - await expect(tx).to.emit(iexecPoco, 'Transfer').withArgs(AddressZero, anyone, amount); - await expect(tx) - .to.emit(iexecPoco, 'Called') - .withArgs(orders.app.app, orders.dataset.dataset); - // await expect(tx) - // .to.emit(iexecPoco, 'SchedulerNotice') - // .to.emit(iexecPoco, 'OrdersMatched'); - }); - - async function getMatchOrdersData() { - const orders = buildOrders({ - assets: ordersAssets, - prices: ordersPrices, - requester: requester.address, - beneficiary: beneficiary.address, - tag: TAG_TEE, - volume: botVolume, - callback: randomAddress, - trust: 1n, - category: 0, - params: '', - }); - await signOrders(iexecWrapper.getDomain(), orders, ordersActors); - return (await iexecPocoAsRequester.matchOrders.populateTransaction(...orders.toArray())) - .data; - // ---------------------------------- - // const iface = new ethers.Interface([ - // 'function doIt(bytes32 taskId, uint256 value) external', - // ]); - // const data = iface.encodeFunctionData('doIt', [ethers.keccak256('0xabcd'), 5]); - // return data; - // ---------------------------------- - // const iface = IexecInterfaceToken__factory.createInterface() as Interface; - // const data = iface.encodeFunctionData('matchOrders', [ - // orders.app, - // orders.dataset, - // orders.workerpool, - // orders.requester, - // ]); - // return '0x' + data.slice(10); // remove function selector - } - }); - describe('Verify signature', () => { ['verifySignature', 'verifyPresignatureOrSignature'].forEach((verifySignatureFunction) => { it(`Should ${verifySignatureFunction} of smart contract`, async () => { From 6c797196175fca5874731a30ae33b43482284b7e Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Thu, 30 Oct 2025 08:31:10 +0100 Subject: [PATCH 44/77] refactor: remove deprecated interfaces and streamline documentation for clarity --- docs/solidity/index.md | 1010 ++++++++++++++++++++-------------------- 1 file changed, 505 insertions(+), 505 deletions(-) diff --git a/docs/solidity/index.md b/docs/solidity/index.md index fa5ddcf95..f3d743153 100644 --- a/docs/solidity/index.md +++ b/docs/solidity/index.md @@ -1,117 +1,7 @@ # Solidity API -## IexecInterfaceNative - -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in native mode. - -_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -## IexecInterfaceToken - -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in token mode. - -_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -## IexecCategoryManagerFacet - -### createCategory - -```solidity -function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) -``` - -Methods - -## IexecConfigurationExtraFacet - -### changeRegistries - -```solidity -function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external -``` - -## IexecConfigurationFacet - -### configure - -```solidity -function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external -``` - -### domain - -```solidity -function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) -``` - -### updateDomainSeparator - -```solidity -function updateDomainSeparator() external -``` - -### importScore - -```solidity -function importScore(address _worker) external -``` - -### setTeeBroker - -```solidity -function setTeeBroker(address _teebroker) external -``` - -### setCallbackGas - -```solidity -function setCallbackGas(uint256 _callbackgas) external -``` - ## IexecERC20Core -## IexecERC20Facet - -### transfer - -```solidity -function transfer(address recipient, uint256 amount) external returns (bool) -``` - -### approve - -```solidity -function approve(address spender, uint256 value) external returns (bool) -``` - -### approveAndCall - -```solidity -function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) -``` - -### transferFrom - -```solidity -function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) -``` - -### increaseAllowance - -```solidity -function increaseAllowance(address spender, uint256 addedValue) external returns (bool) -``` - -### decreaseAllowance - -```solidity -function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) -``` - ## IexecEscrow ### Transfer @@ -144,56 +34,6 @@ event Reward(address owner, uint256 amount, bytes32 ref) event Seize(address owner, uint256 amount, bytes32 ref) ``` -## IexecEscrowNativeFacet - -### receive - -```solidity -receive() external payable -``` - -### fallback - -```solidity -fallback() external payable -``` - -### deposit - -```solidity -function deposit() external payable returns (bool) -``` - -### depositFor - -```solidity -function depositFor(address target) external payable returns (bool) -``` - -### depositForArray - -```solidity -function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) -``` - -### withdraw - -```solidity -function withdraw(uint256 amount) external returns (bool) -``` - -### withdrawTo - -```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) -``` - -### recover - -```solidity -function recover() external returns (uint256) -``` - ## IexecEscrowTokenFacet ### receive @@ -250,32 +90,6 @@ function recover() external returns (uint256) function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) ``` -## IexecOrderManagementFacet - -### manageAppOrder - -```solidity -function manageAppOrder(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) external -``` - -### manageDatasetOrder - -```solidity -function manageDatasetOrder(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) external -``` - -### manageWorkerpoolOrder - -```solidity -function manageWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) external -``` - -### manageRequestOrder - -```solidity -function manageRequestOrder(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) external -``` - ## Matching ```solidity @@ -695,202 +509,67 @@ function groupmember_purpose() external pure returns (uint256) function eip712domain_separator() external view returns (bytes32) ``` -## IexecPocoBoostAccessorsFacet +## IexecLibCore_v5 -Access to PoCo Boost tasks must be done with PoCo Classic `IexecPocoAccessors`. +### Account -### viewDealBoost +Tools ```solidity -function viewDealBoost(bytes32 id) external view returns (struct IexecLibCore_v5.DealBoost deal) +struct Account { + uint256 stake; + uint256 locked; +} ``` -Get a deal created by PoCo Boost facet. - -#### Parameters +### Category -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | The ID of the deal. | +```solidity +struct Category { + string name; + string description; + uint256 workClockTimeRef; +} +``` -## IexecPocoBoostFacet +### DatasetInfo -Works for deals with requested trust = 0. +```solidity +struct DatasetInfo { + address owner; + string m_datasetName; + bytes m_datasetMultiaddr; + bytes32 m_datasetChecksum; +} +``` -### matchOrdersBoost +### AppInfo ```solidity -function matchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) +struct AppInfo { + address owner; + string m_appName; + string m_appType; + bytes m_appMultiaddr; + bytes32 m_appChecksum; + bytes m_appMREnclave; +} ``` -This boost match orders is only compatible with trust <= 1. -The requester gets debited. +### WorkerpoolInfo -#### Parameters +```solidity +struct WorkerpoolInfo { + address owner; + string m_workerpoolDescription; + uint256 m_workerStakeRatioPolicy; + uint256 m_schedulerRewardRatioPolicy; +} +``` -| Name | Type | Description | -| ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The order signed by the application developer. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The order signed by the dataset provider. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The order signed by the workerpool manager. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The order signed by the requester. | +### Resource -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | bytes32 | The ID of the deal. | - -### sponsorMatchOrdersBoost - -```solidity -function sponsorMatchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) -``` - -Sponsor match orders boost for a requester. -Unlike the standard `matchOrdersBoost(..)` hook where the requester pays for -the deal, this current hook makes it possible for any `msg.sender` to pay for -a third party requester. - -Be aware that anyone seeing a valid request order on the network -(via an off-chain public marketplace, via a `sponsorMatchOrdersBoost(..)` -pending transaction in the mempool or by any other means) might decide -to call the standard `matchOrdersBoost(..)` hook which will result in the -requester being debited instead. Therefore, such a front run would result -in a loss of some of the requester funds deposited in the iExec account -(a loss value equivalent to the price of the deal). - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The app order. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The requester order. | - -### pushResultBoost - -```solidity -function pushResultBoost(bytes32 dealId, uint256 index, bytes results, bytes resultsCallback, bytes authorizationSign, address enclaveChallenge, bytes enclaveSign) external -``` - -Accept results of a task computed by a worker during Boost workflow. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| dealId | bytes32 | The id of the target deal. | -| index | uint256 | The index of the target task of the deal. | -| results | bytes | The results of the task computed by the worker. | -| resultsCallback | bytes | The results of the task computed by the worker that will be forwarded as call data to the callback address set by the requester. | -| authorizationSign | bytes | The authorization signed by the scheduler. authorizing the worker to push a result. | -| enclaveChallenge | address | The enclave address which can produce enclave signature. | -| enclaveSign | bytes | The signature generated from the enclave. | - -### claimBoost - -```solidity -function claimBoost(bytes32 dealId, uint256 index) external -``` - -Claim task to get a refund if task is not completed after deadline. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| dealId | bytes32 | The ID of the deal. | -| index | uint256 | The index of the task. | - -## IexecRelayFacet - -### broadcastAppOrder - -```solidity -function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external -``` - -### broadcastDatasetOrder - -```solidity -function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external -``` - -### broadcastWorkerpoolOrder - -```solidity -function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external -``` - -### broadcastRequestOrder - -```solidity -function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external -``` - -## IexecLibCore_v5 - -### Account - -Tools - -```solidity -struct Account { - uint256 stake; - uint256 locked; -} -``` - -### Category - -```solidity -struct Category { - string name; - string description; - uint256 workClockTimeRef; -} -``` - -### DatasetInfo - -```solidity -struct DatasetInfo { - address owner; - string m_datasetName; - bytes m_datasetMultiaddr; - bytes32 m_datasetChecksum; -} -``` - -### AppInfo - -```solidity -struct AppInfo { - address owner; - string m_appName; - string m_appType; - bytes m_appMultiaddr; - bytes32 m_appChecksum; - bytes m_appMREnclave; -} -``` - -### WorkerpoolInfo - -```solidity -struct WorkerpoolInfo { - address owner; - string m_workerpoolDescription; - uint256 m_workerStakeRatioPolicy; - uint256 m_schedulerRewardRatioPolicy; -} -``` - -### Resource - -Clerk - Deals +Clerk - Deals ```solidity struct Resource { @@ -1376,318 +1055,639 @@ _This functionality is supported only on Bellecour Sidechain, calls on other cha will revert. The function is kept as nonpayable to maintain retrocompatibility with the iExec SDK._ -## RegistryEntry - -_Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### registry - -```solidity -contract IRegistry registry -``` +## IApp ### owner ```solidity -function owner() public view returns (address) -``` - -### setName - -```solidity -function setName(address, string) external +function owner() external view returns (address) ``` -Sets the reverse registration name for a registry entry contract. - -_This functionality is supported only on Bellecour Sidechain, calls on other chains -will revert. The function is kept as nonpayable to maintain retrocompatibility with the -iExec SDK._ - -## App - -_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - ### m_appName ```solidity -string m_appName +function m_appName() external view returns (string) ``` -Members - ### m_appType ```solidity -string m_appType +function m_appType() external view returns (string) ``` ### m_appMultiaddr ```solidity -bytes m_appMultiaddr +function m_appMultiaddr() external view returns (bytes) ``` ### m_appChecksum ```solidity -bytes32 m_appChecksum +function m_appChecksum() external view returns (bytes32) ``` ### m_appMREnclave ```solidity -bytes m_appMREnclave +function m_appMREnclave() external view returns (bytes) ``` -### initialize +## IDataset + +### owner ```solidity -function initialize(string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) public +function owner() external view returns (address) ``` -Constructor - -## AppRegistry - -_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### constructor +### m_datasetName ```solidity -constructor() public +function m_datasetName() external view returns (string) ``` -Constructor - -### createApp +### m_datasetMultiaddr ```solidity -function createApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external returns (contract App) +function m_datasetMultiaddr() external view returns (bytes) ``` -### predictApp +### m_datasetChecksum ```solidity -function predictApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external view returns (contract App) +function m_datasetChecksum() external view returns (bytes32) ``` -## IApp +## Address -### owner +## BaseUpgradeabilityProxy -```solidity -function owner() external view returns (address) -``` +_This contract implements a proxy that allows to change the +implementation address to which it will delegate. +Such a change is called an implementation upgrade._ -### m_appName +### Upgraded ```solidity -function m_appName() external view returns (string) +event Upgraded(address implementation) ``` -### m_appType +_Emitted when the implementation is upgraded._ -```solidity -function m_appType() external view returns (string) -``` +#### Parameters -### m_appMultiaddr +| Name | Type | Description | +| ---- | ---- | ----------- | +| implementation | address | Address of the new implementation. | -```solidity -function m_appMultiaddr() external view returns (bytes) -``` +## InitializableUpgradeabilityProxy -### m_appChecksum +_Extends BaseUpgradeabilityProxy with an initializer for initializing +implementation and init data._ + +### initialize ```solidity -function m_appChecksum() external view returns (bytes32) +function initialize(address _logic, bytes _data) public payable ``` -### m_appMREnclave +_Contract initializer._ + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| _logic | address | Address of the initial implementation. | +| _data | bytes | Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. | + +## Proxy + +_Implements delegation of calls to other contracts, with proper +forwarding of return values and bubbling of failures. +It defines a fallback function that delegates all calls to the address +returned by the abstract _implementation() internal function._ + +### receive ```solidity -function m_appMREnclave() external view returns (bytes) +receive() external payable virtual ``` -## Dataset +_Receive function. +Implemented entirely in `_fallback`._ -_Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. +### fallback + +```solidity +fallback() external payable +``` + +_Fallback function. +Implemented entirely in `_fallback`._ + +## IWorkerpool + +### owner + +```solidity +function owner() external view returns (address) +``` + +### m_workerpoolDescription + +```solidity +function m_workerpoolDescription() external view returns (string) +``` + +### m_schedulerRewardRatioPolicy + +```solidity +function m_schedulerRewardRatioPolicy() external view returns (uint256) +``` + +### m_workerStakeRatioPolicy + +```solidity +function m_workerStakeRatioPolicy() external view returns (uint256) +``` + +## IexecInterfaceNative + +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in native mode. + +_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. Changing the name or the path would cause a breaking change in the SDK._ -### m_datasetName +## IexecInterfaceToken + +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in token mode. + +_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +## IexecCategoryManagerFacet + +### createCategory ```solidity -string m_datasetName +function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) ``` -Members +Methods -### m_datasetMultiaddr +## IexecConfigurationExtraFacet + +### changeRegistries ```solidity -bytes m_datasetMultiaddr +function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external ``` -### m_datasetChecksum +## IexecConfigurationFacet + +### configure ```solidity -bytes32 m_datasetChecksum +function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external ``` -### initialize +### domain ```solidity -function initialize(string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) public +function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) ``` -Constructor +### updateDomainSeparator -## DatasetRegistry +```solidity +function updateDomainSeparator() external +``` -_Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +### importScore -### constructor +```solidity +function importScore(address _worker) external +``` + +### setTeeBroker ```solidity -constructor() public +function setTeeBroker(address _teebroker) external ``` -Constructor +### setCallbackGas -### createDataset +```solidity +function setCallbackGas(uint256 _callbackgas) external +``` + +## IexecERC20Facet + +### transfer ```solidity -function createDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external returns (contract Dataset) +function transfer(address recipient, uint256 amount) external returns (bool) ``` -### predictDataset +### approve ```solidity -function predictDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external view returns (contract Dataset) +function approve(address spender, uint256 value) external returns (bool) ``` -## IDataset +### approveAndCall -### owner +```solidity +function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) +``` + +### transferFrom ```solidity -function owner() external view returns (address) +function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) ``` -### m_datasetName +### increaseAllowance ```solidity -function m_datasetName() external view returns (string) +function increaseAllowance(address spender, uint256 addedValue) external returns (bool) ``` -### m_datasetMultiaddr +### decreaseAllowance ```solidity -function m_datasetMultiaddr() external view returns (bytes) +function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) ``` -### m_datasetChecksum +## IexecEscrowNativeFacet + +### receive ```solidity -function m_datasetChecksum() external view returns (bytes32) +receive() external payable ``` -## Address +### fallback -## BaseUpgradeabilityProxy +```solidity +fallback() external payable +``` -_This contract implements a proxy that allows to change the -implementation address to which it will delegate. -Such a change is called an implementation upgrade._ +### deposit -### Upgraded +```solidity +function deposit() external payable returns (bool) +``` + +### depositFor ```solidity -event Upgraded(address implementation) +function depositFor(address target) external payable returns (bool) ``` -_Emitted when the implementation is upgraded._ +### depositForArray + +```solidity +function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) +``` + +### withdraw + +```solidity +function withdraw(uint256 amount) external returns (bool) +``` + +### withdrawTo + +```solidity +function withdrawTo(uint256 amount, address target) external returns (bool) +``` + +### recover + +```solidity +function recover() external returns (uint256) +``` + +## IexecOrderManagementFacet + +### manageAppOrder + +```solidity +function manageAppOrder(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) external +``` + +### manageDatasetOrder + +```solidity +function manageDatasetOrder(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) external +``` + +### manageWorkerpoolOrder + +```solidity +function manageWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) external +``` + +### manageRequestOrder + +```solidity +function manageRequestOrder(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) external +``` + +## IexecPocoBoostAccessorsFacet + +Access to PoCo Boost tasks must be done with PoCo Classic `IexecPocoAccessors`. + +### viewDealBoost + +```solidity +function viewDealBoost(bytes32 id) external view returns (struct IexecLibCore_v5.DealBoost deal) +``` + +Get a deal created by PoCo Boost facet. #### Parameters | Name | Type | Description | | ---- | ---- | ----------- | -| implementation | address | Address of the new implementation. | +| id | bytes32 | The ID of the deal. | -## InitializableUpgradeabilityProxy +## IexecPocoBoostFacet -_Extends BaseUpgradeabilityProxy with an initializer for initializing -implementation and init data._ +Works for deals with requested trust = 0. -### initialize +### matchOrdersBoost ```solidity -function initialize(address _logic, bytes _data) public payable +function matchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) ``` -_Contract initializer._ +This boost match orders is only compatible with trust <= 1. +The requester gets debited. #### Parameters | Name | Type | Description | | ---- | ---- | ----------- | -| _logic | address | Address of the initial implementation. | -| _data | bytes | Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. | +| appOrder | struct IexecLibOrders_v5.AppOrder | The order signed by the application developer. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The order signed by the dataset provider. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The order signed by the workerpool manager. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The order signed by the requester. | -## Proxy +#### Return Values -_Implements delegation of calls to other contracts, with proper -forwarding of return values and bubbling of failures. -It defines a fallback function that delegates all calls to the address -returned by the abstract _implementation() internal function._ +| Name | Type | Description | +| ---- | ---- | ----------- | +| [0] | bytes32 | The ID of the deal. | -### receive +### sponsorMatchOrdersBoost ```solidity -receive() external payable virtual +function sponsorMatchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) ``` -_Receive function. -Implemented entirely in `_fallback`._ +Sponsor match orders boost for a requester. +Unlike the standard `matchOrdersBoost(..)` hook where the requester pays for +the deal, this current hook makes it possible for any `msg.sender` to pay for +a third party requester. -### fallback +Be aware that anyone seeing a valid request order on the network +(via an off-chain public marketplace, via a `sponsorMatchOrdersBoost(..)` +pending transaction in the mempool or by any other means) might decide +to call the standard `matchOrdersBoost(..)` hook which will result in the +requester being debited instead. Therefore, such a front run would result +in a loss of some of the requester funds deposited in the iExec account +(a loss value equivalent to the price of the deal). + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The app order. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The requester order. | + +### pushResultBoost ```solidity -fallback() external payable +function pushResultBoost(bytes32 dealId, uint256 index, bytes results, bytes resultsCallback, bytes authorizationSign, address enclaveChallenge, bytes enclaveSign) external ``` -_Fallback function. -Implemented entirely in `_fallback`._ +Accept results of a task computed by a worker during Boost workflow. -## IWorkerpool +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| dealId | bytes32 | The id of the target deal. | +| index | uint256 | The index of the target task of the deal. | +| results | bytes | The results of the task computed by the worker. | +| resultsCallback | bytes | The results of the task computed by the worker that will be forwarded as call data to the callback address set by the requester. | +| authorizationSign | bytes | The authorization signed by the scheduler. authorizing the worker to push a result. | +| enclaveChallenge | address | The enclave address which can produce enclave signature. | +| enclaveSign | bytes | The signature generated from the enclave. | + +### claimBoost + +```solidity +function claimBoost(bytes32 dealId, uint256 index) external +``` + +Claim task to get a refund if task is not completed after deadline. + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| dealId | bytes32 | The ID of the deal. | +| index | uint256 | The index of the task. | + +## IexecRelayFacet + +### broadcastAppOrder + +```solidity +function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external +``` + +### broadcastDatasetOrder + +```solidity +function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external +``` + +### broadcastWorkerpoolOrder + +```solidity +function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external +``` + +### broadcastRequestOrder + +```solidity +function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external +``` + +## RegistryEntry + +_Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### registry + +```solidity +contract IRegistry registry +``` ### owner ```solidity -function owner() external view returns (address) +function owner() public view returns (address) ``` -### m_workerpoolDescription +### setName ```solidity -function m_workerpoolDescription() external view returns (string) +function setName(address, string) external ``` -### m_schedulerRewardRatioPolicy +Sets the reverse registration name for a registry entry contract. + +_This functionality is supported only on Bellecour Sidechain, calls on other chains +will revert. The function is kept as nonpayable to maintain retrocompatibility with the +iExec SDK._ + +## App + +_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### m_appName ```solidity -function m_schedulerRewardRatioPolicy() external view returns (uint256) +string m_appName ``` -### m_workerStakeRatioPolicy +Members + +### m_appType ```solidity -function m_workerStakeRatioPolicy() external view returns (uint256) +string m_appType +``` + +### m_appMultiaddr + +```solidity +bytes m_appMultiaddr +``` + +### m_appChecksum + +```solidity +bytes32 m_appChecksum +``` + +### m_appMREnclave + +```solidity +bytes m_appMREnclave +``` + +### initialize + +```solidity +function initialize(string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) public +``` + +Constructor + +## AppRegistry + +_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### constructor + +```solidity +constructor() public +``` + +Constructor + +### createApp + +```solidity +function createApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external returns (contract App) +``` + +### predictApp + +```solidity +function predictApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external view returns (contract App) +``` + +## Dataset + +_Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### m_datasetName + +```solidity +string m_datasetName +``` + +Members + +### m_datasetMultiaddr + +```solidity +bytes m_datasetMultiaddr +``` + +### m_datasetChecksum + +```solidity +bytes32 m_datasetChecksum +``` + +### initialize + +```solidity +function initialize(string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) public +``` + +Constructor + +## DatasetRegistry + +_Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### constructor + +```solidity +constructor() public +``` + +Constructor + +### createDataset + +```solidity +function createDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external returns (contract Dataset) +``` + +### predictDataset + +```solidity +function predictDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external view returns (contract Dataset) ``` ## Workerpool From 5e5670c65bfd796dc148dba6c3baaf53dba1970d Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Thu, 30 Oct 2025 08:37:42 +0100 Subject: [PATCH 45/77] fix: abis formatage --- abis/contracts/IexecInterfaceNative.json | 2 +- abis/contracts/IexecInterfaceToken.json | 2 +- abis/contracts/facets/IexecEscrowTokenFacet.json | 2 +- abis/contracts/facets/IexecPoco1Facet.json | 2 +- abis/contracts/interfaces/IexecPoco1.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/abis/contracts/IexecInterfaceNative.json b/abis/contracts/IexecInterfaceNative.json index 5ae605c68..f17de5719 100644 --- a/abis/contracts/IexecInterfaceNative.json +++ b/abis/contracts/IexecInterfaceNative.json @@ -4396,4 +4396,4 @@ "stateMutability": "payable", "type": "receive" } -] +] \ No newline at end of file diff --git a/abis/contracts/IexecInterfaceToken.json b/abis/contracts/IexecInterfaceToken.json index 4001f846f..74edd3ea7 100644 --- a/abis/contracts/IexecInterfaceToken.json +++ b/abis/contracts/IexecInterfaceToken.json @@ -4407,4 +4407,4 @@ "stateMutability": "payable", "type": "receive" } -] +] \ No newline at end of file diff --git a/abis/contracts/facets/IexecEscrowTokenFacet.json b/abis/contracts/facets/IexecEscrowTokenFacet.json index 29a361344..2ac4a0beb 100644 --- a/abis/contracts/facets/IexecEscrowTokenFacet.json +++ b/abis/contracts/facets/IexecEscrowTokenFacet.json @@ -302,4 +302,4 @@ "stateMutability": "payable", "type": "receive" } -] +] \ No newline at end of file diff --git a/abis/contracts/facets/IexecPoco1Facet.json b/abis/contracts/facets/IexecPoco1Facet.json index ea52d0f77..8664e0e7b 100644 --- a/abis/contracts/facets/IexecPoco1Facet.json +++ b/abis/contracts/facets/IexecPoco1Facet.json @@ -885,4 +885,4 @@ "stateMutability": "view", "type": "function" } -] +] \ No newline at end of file diff --git a/abis/contracts/interfaces/IexecPoco1.json b/abis/contracts/interfaces/IexecPoco1.json index 2d95fce9e..2b7d7f02a 100644 --- a/abis/contracts/interfaces/IexecPoco1.json +++ b/abis/contracts/interfaces/IexecPoco1.json @@ -761,4 +761,4 @@ "stateMutability": "view", "type": "function" } -] +] \ No newline at end of file From eaca8fbfa2bd34a5768f4245570bf34aadc27a94 Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Thu, 30 Oct 2025 08:40:54 +0100 Subject: [PATCH 46/77] fix: update Solidity version to 0.8.0 across multiple interface and library files --- contracts/interfaces/IOwnable.sol | 2 +- contracts/interfaces/IexecAccessorsABILegacy.sol | 2 +- contracts/interfaces/IexecCategoryManager.sol | 2 +- contracts/interfaces/IexecConfiguration.sol | 2 +- contracts/interfaces/IexecConfigurationExtra.sol | 2 +- contracts/interfaces/IexecERC20.sol | 2 +- contracts/interfaces/IexecERC20Common.sol | 2 +- contracts/interfaces/IexecEscrowNative.sol | 2 +- contracts/interfaces/IexecEscrowToken.sol | 2 +- contracts/interfaces/IexecRelay.sol | 2 +- contracts/interfaces/IexecTokenSpender.sol | 2 +- contracts/libs/IexecLibCore_v5.sol | 2 +- contracts/libs/IexecLibOrders_v5.sol | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/contracts/interfaces/IOwnable.sol b/contracts/interfaces/IOwnable.sol index 5a43907e8..de4e8dbee 100644 --- a/contracts/interfaces/IOwnable.sol +++ b/contracts/interfaces/IOwnable.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; pragma experimental ABIEncoderV2; interface IOwnable { diff --git a/contracts/interfaces/IexecAccessorsABILegacy.sol b/contracts/interfaces/IexecAccessorsABILegacy.sol index afba8df8b..b5a3bfe02 100644 --- a/contracts/interfaces/IexecAccessorsABILegacy.sol +++ b/contracts/interfaces/IexecAccessorsABILegacy.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; pragma experimental ABIEncoderV2; import "../libs/IexecLibCore_v5.sol"; diff --git a/contracts/interfaces/IexecCategoryManager.sol b/contracts/interfaces/IexecCategoryManager.sol index 055addea7..f774c0b39 100644 --- a/contracts/interfaces/IexecCategoryManager.sol +++ b/contracts/interfaces/IexecCategoryManager.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; pragma experimental ABIEncoderV2; interface IexecCategoryManager { diff --git a/contracts/interfaces/IexecConfiguration.sol b/contracts/interfaces/IexecConfiguration.sol index c184c18af..cc1b0fe8f 100644 --- a/contracts/interfaces/IexecConfiguration.sol +++ b/contracts/interfaces/IexecConfiguration.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; pragma experimental ABIEncoderV2; import "../libs/IexecLibOrders_v5.sol"; diff --git a/contracts/interfaces/IexecConfigurationExtra.sol b/contracts/interfaces/IexecConfigurationExtra.sol index d5526c9b4..e4edca11c 100644 --- a/contracts/interfaces/IexecConfigurationExtra.sol +++ b/contracts/interfaces/IexecConfigurationExtra.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; pragma experimental ABIEncoderV2; interface IexecConfigurationExtra { diff --git a/contracts/interfaces/IexecERC20.sol b/contracts/interfaces/IexecERC20.sol index 281589934..bda831234 100644 --- a/contracts/interfaces/IexecERC20.sol +++ b/contracts/interfaces/IexecERC20.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; pragma experimental ABIEncoderV2; import {IexecERC20Common} from "./IexecERC20Common.sol"; diff --git a/contracts/interfaces/IexecERC20Common.sol b/contracts/interfaces/IexecERC20Common.sol index 650770883..8100418d3 100644 --- a/contracts/interfaces/IexecERC20Common.sol +++ b/contracts/interfaces/IexecERC20Common.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; pragma experimental ABIEncoderV2; // TODO merge with IexecERC20 interface. diff --git a/contracts/interfaces/IexecEscrowNative.sol b/contracts/interfaces/IexecEscrowNative.sol index 749929281..eec34c99f 100644 --- a/contracts/interfaces/IexecEscrowNative.sol +++ b/contracts/interfaces/IexecEscrowNative.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; pragma experimental ABIEncoderV2; interface IexecEscrowNative { diff --git a/contracts/interfaces/IexecEscrowToken.sol b/contracts/interfaces/IexecEscrowToken.sol index 346ef2dbe..6f0646074 100644 --- a/contracts/interfaces/IexecEscrowToken.sol +++ b/contracts/interfaces/IexecEscrowToken.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; pragma experimental ABIEncoderV2; interface IexecEscrowToken { diff --git a/contracts/interfaces/IexecRelay.sol b/contracts/interfaces/IexecRelay.sol index ae1abe3f6..fc67c0ac9 100644 --- a/contracts/interfaces/IexecRelay.sol +++ b/contracts/interfaces/IexecRelay.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; pragma experimental ABIEncoderV2; import "../libs/IexecLibOrders_v5.sol"; diff --git a/contracts/interfaces/IexecTokenSpender.sol b/contracts/interfaces/IexecTokenSpender.sol index c7a34dcad..61ef0bef2 100644 --- a/contracts/interfaces/IexecTokenSpender.sol +++ b/contracts/interfaces/IexecTokenSpender.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; pragma experimental ABIEncoderV2; interface IexecTokenSpender { diff --git a/contracts/libs/IexecLibCore_v5.sol b/contracts/libs/IexecLibCore_v5.sol index a32c551c0..14b947b7b 100644 --- a/contracts/libs/IexecLibCore_v5.sol +++ b/contracts/libs/IexecLibCore_v5.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2024 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; library IexecLibCore_v5 { /** diff --git a/contracts/libs/IexecLibOrders_v5.sol b/contracts/libs/IexecLibOrders_v5.sol index 7fb18a979..f6ad31d56 100644 --- a/contracts/libs/IexecLibOrders_v5.sol +++ b/contracts/libs/IexecLibOrders_v5.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.6.0; +pragma solidity >=0.8.0; pragma experimental ABIEncoderV2; library IexecLibOrders_v5 { From a4e41d6c30370caa87453135ec99e48a72ebe929 Mon Sep 17 00:00:00 2001 From: Robin Le Caignec <72495599+Le-Caignec@users.noreply.github.com> Date: Thu, 30 Oct 2025 08:41:49 +0100 Subject: [PATCH 47/77] Update contracts/interfaces/IexecPoco1.sol Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- contracts/interfaces/IexecPoco1.sol | 2 -- 1 file changed, 2 deletions(-) diff --git a/contracts/interfaces/IexecPoco1.sol b/contracts/interfaces/IexecPoco1.sol index 70d8bfb31..e57572b4b 100644 --- a/contracts/interfaces/IexecPoco1.sol +++ b/contracts/interfaces/IexecPoco1.sol @@ -2,8 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity >=0.8.0; -pragma experimental ABIEncoderV2; - import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; interface IexecPoco1 { From 740de8f5110e0dcce4b987af579f593a16698e4d Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Thu, 30 Oct 2025 09:17:23 +0100 Subject: [PATCH 48/77] fix: ci --- .github/workflows/main.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index fa6143cd5..bac73960d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -32,8 +32,9 @@ jobs: run: npm run check-storage-layout - name: Test deployment run: npm run deploy - - name: Test Timelock deployment - run: npm run deploy:timelock + # TODO: Timelock will be removed in a dedicated PR + # - name: Test Timelock deployment + # run: npm run deploy:timelock - name: Run coverage run: npm run coverage - name: Run partial native tests From 1d937ca19d6d1a494ec4a293aa719e8611ee08a0 Mon Sep 17 00:00:00 2001 From: Zied <26070035+zguesmi@users.noreply.github.com> Date: Thu, 30 Oct 2025 09:48:39 +0100 Subject: [PATCH 49/77] chore: Apply copilot suggestions --- contracts/facets/IexecConfigurationExtraFacet.sol | 4 ++-- contracts/facets/IexecPocoAccessorsFacet.sol | 2 +- test/byContract/registries/registries.test.ts | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/contracts/facets/IexecConfigurationExtraFacet.sol b/contracts/facets/IexecConfigurationExtraFacet.sol index 6a33aba3e..97f24c226 100644 --- a/contracts/facets/IexecConfigurationExtraFacet.sol +++ b/contracts/facets/IexecConfigurationExtraFacet.sol @@ -3,9 +3,9 @@ pragma solidity ^0.8.0; -import {FacetBase } from "./FacetBase.sol"; +import {FacetBase} from "./FacetBase.sol"; import {IexecConfigurationExtra} from "../interfaces/IexecConfigurationExtra.sol"; -import {IRegistry} from "../registries/Registry.sol"; +import {IRegistry} from "../registries/IRegistry.sol"; import {PocoStorageLib} from "../libs/PocoStorageLib.sol"; contract IexecConfigurationExtraFacet is IexecConfigurationExtra, FacetBase { diff --git a/contracts/facets/IexecPocoAccessorsFacet.sol b/contracts/facets/IexecPocoAccessorsFacet.sol index 546abb89a..0a962f075 100644 --- a/contracts/facets/IexecPocoAccessorsFacet.sol +++ b/contracts/facets/IexecPocoAccessorsFacet.sol @@ -11,7 +11,7 @@ import {IDataset} from "../registries/datasets/IDataset.v8.sol"; import {IApp} from "../registries/apps/IApp.v8.sol"; import {IWorkerpool} from "../registries/workerpools/IWorkerpool.v8.sol"; import {IexecPocoAccessors} from "../interfaces/IexecPocoAccessors.sol"; -import {IRegistry} from "../registries/Registry.sol"; +import {IRegistry} from "../registries/IRegistry.sol"; import {IexecPocoCommon} from "./IexecPocoCommon.sol"; import {SignatureVerifier} from "./SignatureVerifier.v8.sol"; diff --git a/test/byContract/registries/registries.test.ts b/test/byContract/registries/registries.test.ts index ce03677f9..1a13006f3 100644 --- a/test/byContract/registries/registries.test.ts +++ b/test/byContract/registries/registries.test.ts @@ -385,7 +385,7 @@ describe('Registries', () => { await expect( datasetRegistry.createDataset(datasetProvider.address, ...createDatasetArgs), - ).to.be.revertedWithCustomError(appRegistry, 'Create2FailedDeployment'); + ).to.be.revertedWithCustomError(datasetRegistry, 'Create2FailedDeployment'); }); }); @@ -469,7 +469,7 @@ describe('Registries', () => { await expect( workerpoolRegistry.createWorkerpool(scheduler.address, ...createWorkerpoolArgs), - ).to.be.revertedWithCustomError(appRegistry, 'Create2FailedDeployment'); + ).to.be.revertedWithCustomError(workerpoolRegistry, 'Create2FailedDeployment'); }); }); From 856ca2632b77ba877d131073e70553e4fcd95bbe Mon Sep 17 00:00:00 2001 From: Robin Le Caignec <72495599+Le-Caignec@users.noreply.github.com> Date: Thu, 30 Oct 2025 10:28:46 +0100 Subject: [PATCH 50/77] Update contracts/libs/IexecLibOrders_v5.sol Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- contracts/libs/IexecLibOrders_v5.sol | 2 -- 1 file changed, 2 deletions(-) diff --git a/contracts/libs/IexecLibOrders_v5.sol b/contracts/libs/IexecLibOrders_v5.sol index f6ad31d56..7e7b4b264 100644 --- a/contracts/libs/IexecLibOrders_v5.sol +++ b/contracts/libs/IexecLibOrders_v5.sol @@ -2,8 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity >=0.8.0; -pragma experimental ABIEncoderV2; - library IexecLibOrders_v5 { // bytes32 public constant EIP712DOMAIN_TYPEHASH = keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'); // bytes32 public constant APPORDER_TYPEHASH = keccak256('AppOrder(address app,uint256 appprice,uint256 volume,bytes32 tag,address datasetrestrict,address workerpoolrestrict,address requesterrestrict,bytes32 salt)'); From 1a4735c83b7ab22718e9c4e95c07f5546fd37d9c Mon Sep 17 00:00:00 2001 From: Robin Le Caignec <72495599+Le-Caignec@users.noreply.github.com> Date: Thu, 30 Oct 2025 10:28:57 +0100 Subject: [PATCH 51/77] Update contracts/interfaces/IexecEscrowToken.sol Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- contracts/interfaces/IexecEscrowToken.sol | 1 - 1 file changed, 1 deletion(-) diff --git a/contracts/interfaces/IexecEscrowToken.sol b/contracts/interfaces/IexecEscrowToken.sol index 6f0646074..3f67cccec 100644 --- a/contracts/interfaces/IexecEscrowToken.sol +++ b/contracts/interfaces/IexecEscrowToken.sol @@ -2,7 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity >=0.8.0; -pragma experimental ABIEncoderV2; interface IexecEscrowToken { receive() external payable; From da22fd65e659dd308f6fed698e49649bc45f73e4 Mon Sep 17 00:00:00 2001 From: Robin Le Caignec <72495599+Le-Caignec@users.noreply.github.com> Date: Thu, 30 Oct 2025 10:29:08 +0100 Subject: [PATCH 52/77] Update contracts/interfaces/IexecRelay.sol Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- contracts/interfaces/IexecRelay.sol | 1 - 1 file changed, 1 deletion(-) diff --git a/contracts/interfaces/IexecRelay.sol b/contracts/interfaces/IexecRelay.sol index fc67c0ac9..fd5537da1 100644 --- a/contracts/interfaces/IexecRelay.sol +++ b/contracts/interfaces/IexecRelay.sol @@ -2,7 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity >=0.8.0; -pragma experimental ABIEncoderV2; import "../libs/IexecLibOrders_v5.sol"; From 4a19736f2bbbb0a799131901fb92a35bf4660f03 Mon Sep 17 00:00:00 2001 From: Robin Le Caignec <72495599+Le-Caignec@users.noreply.github.com> Date: Thu, 30 Oct 2025 10:29:22 +0100 Subject: [PATCH 53/77] Update contracts/interfaces/IexecTokenSpender.sol Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- contracts/interfaces/IexecTokenSpender.sol | 1 - 1 file changed, 1 deletion(-) diff --git a/contracts/interfaces/IexecTokenSpender.sol b/contracts/interfaces/IexecTokenSpender.sol index 61ef0bef2..3b494e325 100644 --- a/contracts/interfaces/IexecTokenSpender.sol +++ b/contracts/interfaces/IexecTokenSpender.sol @@ -2,7 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity >=0.8.0; -pragma experimental ABIEncoderV2; interface IexecTokenSpender { function receiveApproval(address, uint256, address, bytes calldata) external returns (bool); From 242f53199aa1fa3e9cb02af25443241d6d376807 Mon Sep 17 00:00:00 2001 From: Robin Le Caignec <72495599+Le-Caignec@users.noreply.github.com> Date: Thu, 30 Oct 2025 10:29:33 +0100 Subject: [PATCH 54/77] Update contracts/interfaces/IOwnable.sol Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- contracts/interfaces/IOwnable.sol | 1 - 1 file changed, 1 deletion(-) diff --git a/contracts/interfaces/IOwnable.sol b/contracts/interfaces/IOwnable.sol index de4e8dbee..f2584e4a7 100644 --- a/contracts/interfaces/IOwnable.sol +++ b/contracts/interfaces/IOwnable.sol @@ -2,7 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity >=0.8.0; -pragma experimental ABIEncoderV2; interface IOwnable { event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); From 31e5748f48c5df1b0cfbccd2bf8075ca182a14bd Mon Sep 17 00:00:00 2001 From: Robin Le Caignec <72495599+Le-Caignec@users.noreply.github.com> Date: Thu, 30 Oct 2025 10:29:42 +0100 Subject: [PATCH 55/77] Update contracts/interfaces/IexecAccessorsABILegacy.sol Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- contracts/interfaces/IexecAccessorsABILegacy.sol | 1 - 1 file changed, 1 deletion(-) diff --git a/contracts/interfaces/IexecAccessorsABILegacy.sol b/contracts/interfaces/IexecAccessorsABILegacy.sol index b5a3bfe02..5877b950c 100644 --- a/contracts/interfaces/IexecAccessorsABILegacy.sol +++ b/contracts/interfaces/IexecAccessorsABILegacy.sol @@ -2,7 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity >=0.8.0; -pragma experimental ABIEncoderV2; import "../libs/IexecLibCore_v5.sol"; From d111b6649a67d2af840d5f0f06d41a65fd5965a1 Mon Sep 17 00:00:00 2001 From: Robin Le Caignec <72495599+Le-Caignec@users.noreply.github.com> Date: Thu, 30 Oct 2025 10:29:51 +0100 Subject: [PATCH 56/77] Update contracts/interfaces/IexecCategoryManager.sol Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- contracts/interfaces/IexecCategoryManager.sol | 1 - 1 file changed, 1 deletion(-) diff --git a/contracts/interfaces/IexecCategoryManager.sol b/contracts/interfaces/IexecCategoryManager.sol index f774c0b39..cad229b89 100644 --- a/contracts/interfaces/IexecCategoryManager.sol +++ b/contracts/interfaces/IexecCategoryManager.sol @@ -2,7 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity >=0.8.0; -pragma experimental ABIEncoderV2; interface IexecCategoryManager { event CreateCategory(uint256 catid, string name, string description, uint256 workClockTimeRef); From bebed166eae0af87af4ab787859653605ae8ff73 Mon Sep 17 00:00:00 2001 From: Robin Le Caignec <72495599+Le-Caignec@users.noreply.github.com> Date: Thu, 30 Oct 2025 10:30:05 +0100 Subject: [PATCH 57/77] Update contracts/interfaces/IexecConfigurationExtra.sol Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- contracts/interfaces/IexecConfigurationExtra.sol | 2 -- 1 file changed, 2 deletions(-) diff --git a/contracts/interfaces/IexecConfigurationExtra.sol b/contracts/interfaces/IexecConfigurationExtra.sol index e4edca11c..fdfa35a43 100644 --- a/contracts/interfaces/IexecConfigurationExtra.sol +++ b/contracts/interfaces/IexecConfigurationExtra.sol @@ -2,8 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity >=0.8.0; -pragma experimental ABIEncoderV2; - interface IexecConfigurationExtra { function changeRegistries(address, address, address) external; } From 759c0ecffce2829edad0d2f73ef08b2e73c6b310 Mon Sep 17 00:00:00 2001 From: Robin Le Caignec <72495599+Le-Caignec@users.noreply.github.com> Date: Thu, 30 Oct 2025 10:30:17 +0100 Subject: [PATCH 58/77] Update contracts/interfaces/IexecConfiguration.sol Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- contracts/interfaces/IexecConfiguration.sol | 2 -- 1 file changed, 2 deletions(-) diff --git a/contracts/interfaces/IexecConfiguration.sol b/contracts/interfaces/IexecConfiguration.sol index cc1b0fe8f..888893e34 100644 --- a/contracts/interfaces/IexecConfiguration.sol +++ b/contracts/interfaces/IexecConfiguration.sol @@ -2,8 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity >=0.8.0; -pragma experimental ABIEncoderV2; - import "../libs/IexecLibOrders_v5.sol"; interface IexecConfiguration { From 14324460476bfc297cd1fab5bdb8ae363604a1b9 Mon Sep 17 00:00:00 2001 From: Robin Le Caignec <72495599+Le-Caignec@users.noreply.github.com> Date: Thu, 30 Oct 2025 10:30:34 +0100 Subject: [PATCH 59/77] Update contracts/interfaces/IexecEscrowNative.sol Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- contracts/interfaces/IexecEscrowNative.sol | 2 -- 1 file changed, 2 deletions(-) diff --git a/contracts/interfaces/IexecEscrowNative.sol b/contracts/interfaces/IexecEscrowNative.sol index eec34c99f..c3ecd04d1 100644 --- a/contracts/interfaces/IexecEscrowNative.sol +++ b/contracts/interfaces/IexecEscrowNative.sol @@ -2,8 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity >=0.8.0; -pragma experimental ABIEncoderV2; - interface IexecEscrowNative { receive() external payable; fallback() external payable; From ea871eaff26f55daff8c3e15a955afdcadaf6d54 Mon Sep 17 00:00:00 2001 From: Robin Le Caignec <72495599+Le-Caignec@users.noreply.github.com> Date: Thu, 30 Oct 2025 10:30:48 +0100 Subject: [PATCH 60/77] Update contracts/interfaces/IexecERC20Common.sol Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- contracts/interfaces/IexecERC20Common.sol | 2 -- 1 file changed, 2 deletions(-) diff --git a/contracts/interfaces/IexecERC20Common.sol b/contracts/interfaces/IexecERC20Common.sol index 8100418d3..7e8ac0572 100644 --- a/contracts/interfaces/IexecERC20Common.sol +++ b/contracts/interfaces/IexecERC20Common.sol @@ -2,8 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity >=0.8.0; -pragma experimental ABIEncoderV2; - // TODO merge with IexecERC20 interface. interface IexecERC20Common { event Transfer(address indexed from, address indexed to, uint256 value); From c5a145ff71e0524f9dd35fa6835254536a91d68f Mon Sep 17 00:00:00 2001 From: Robin Le Caignec <72495599+Le-Caignec@users.noreply.github.com> Date: Thu, 30 Oct 2025 10:31:02 +0100 Subject: [PATCH 61/77] Update contracts/interfaces/IexecERC20.sol Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- contracts/interfaces/IexecERC20.sol | 1 - 1 file changed, 1 deletion(-) diff --git a/contracts/interfaces/IexecERC20.sol b/contracts/interfaces/IexecERC20.sol index bda831234..684a6b500 100644 --- a/contracts/interfaces/IexecERC20.sol +++ b/contracts/interfaces/IexecERC20.sol @@ -2,7 +2,6 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity >=0.8.0; -pragma experimental ABIEncoderV2; import {IexecERC20Common} from "./IexecERC20Common.sol"; From 94328c6cee0f7d38fe5ee0e7e4a939f31cfc8a8d Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Thu, 30 Oct 2025 14:22:49 +0100 Subject: [PATCH 62/77] Update Solidity pragma version to ^0.8.0 across multiple interface and library files --- contracts/interfaces/IOwnable.sol | 2 +- contracts/interfaces/IexecAccessorsABILegacy.sol | 2 +- contracts/interfaces/IexecCategoryManager.sol | 2 +- contracts/interfaces/IexecConfiguration.sol | 2 +- contracts/interfaces/IexecConfigurationExtra.sol | 2 +- contracts/interfaces/IexecERC20.sol | 3 +-- contracts/interfaces/IexecERC20Common.sol | 2 +- contracts/interfaces/IexecEscrowNative.sol | 2 +- contracts/interfaces/IexecEscrowToken.sol | 2 +- contracts/interfaces/IexecPoco1.sol | 2 +- contracts/interfaces/IexecRelay.sol | 2 +- contracts/interfaces/IexecTokenSpender.sol | 2 +- contracts/libs/IexecLibCore_v5.sol | 2 +- contracts/libs/IexecLibOrders_v5.sol | 2 +- 14 files changed, 14 insertions(+), 15 deletions(-) diff --git a/contracts/interfaces/IOwnable.sol b/contracts/interfaces/IOwnable.sol index f2584e4a7..f992d2813 100644 --- a/contracts/interfaces/IOwnable.sol +++ b/contracts/interfaces/IOwnable.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.8.0; +pragma solidity ^0.8.0; interface IOwnable { event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); diff --git a/contracts/interfaces/IexecAccessorsABILegacy.sol b/contracts/interfaces/IexecAccessorsABILegacy.sol index 5877b950c..cfda88d9c 100644 --- a/contracts/interfaces/IexecAccessorsABILegacy.sol +++ b/contracts/interfaces/IexecAccessorsABILegacy.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.8.0; +pragma solidity ^0.8.0; import "../libs/IexecLibCore_v5.sol"; diff --git a/contracts/interfaces/IexecCategoryManager.sol b/contracts/interfaces/IexecCategoryManager.sol index cad229b89..87eba8d8b 100644 --- a/contracts/interfaces/IexecCategoryManager.sol +++ b/contracts/interfaces/IexecCategoryManager.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.8.0; +pragma solidity ^0.8.0; interface IexecCategoryManager { event CreateCategory(uint256 catid, string name, string description, uint256 workClockTimeRef); diff --git a/contracts/interfaces/IexecConfiguration.sol b/contracts/interfaces/IexecConfiguration.sol index 888893e34..3d3513495 100644 --- a/contracts/interfaces/IexecConfiguration.sol +++ b/contracts/interfaces/IexecConfiguration.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.8.0; +pragma solidity ^0.8.0; import "../libs/IexecLibOrders_v5.sol"; interface IexecConfiguration { diff --git a/contracts/interfaces/IexecConfigurationExtra.sol b/contracts/interfaces/IexecConfigurationExtra.sol index fdfa35a43..7510ff7a6 100644 --- a/contracts/interfaces/IexecConfigurationExtra.sol +++ b/contracts/interfaces/IexecConfigurationExtra.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.8.0; +pragma solidity ^0.8.0; interface IexecConfigurationExtra { function changeRegistries(address, address, address) external; } diff --git a/contracts/interfaces/IexecERC20.sol b/contracts/interfaces/IexecERC20.sol index 684a6b500..aebff2cec 100644 --- a/contracts/interfaces/IexecERC20.sol +++ b/contracts/interfaces/IexecERC20.sol @@ -1,12 +1,11 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.8.0; +pragma solidity ^0.8.0; import {IexecERC20Common} from "./IexecERC20Common.sol"; interface IexecERC20 is IexecERC20Common { - function transfer(address, uint256) external returns (bool); function approve(address, uint256) external returns (bool); function transferFrom(address, address, uint256) external returns (bool); diff --git a/contracts/interfaces/IexecERC20Common.sol b/contracts/interfaces/IexecERC20Common.sol index 7e8ac0572..b17c75581 100644 --- a/contracts/interfaces/IexecERC20Common.sol +++ b/contracts/interfaces/IexecERC20Common.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.8.0; +pragma solidity ^0.8.0; // TODO merge with IexecERC20 interface. interface IexecERC20Common { event Transfer(address indexed from, address indexed to, uint256 value); diff --git a/contracts/interfaces/IexecEscrowNative.sol b/contracts/interfaces/IexecEscrowNative.sol index c3ecd04d1..06184c8fb 100644 --- a/contracts/interfaces/IexecEscrowNative.sol +++ b/contracts/interfaces/IexecEscrowNative.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.8.0; +pragma solidity ^0.8.0; interface IexecEscrowNative { receive() external payable; fallback() external payable; diff --git a/contracts/interfaces/IexecEscrowToken.sol b/contracts/interfaces/IexecEscrowToken.sol index 3f67cccec..cf5994414 100644 --- a/contracts/interfaces/IexecEscrowToken.sol +++ b/contracts/interfaces/IexecEscrowToken.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.8.0; +pragma solidity ^0.8.0; interface IexecEscrowToken { receive() external payable; diff --git a/contracts/interfaces/IexecPoco1.sol b/contracts/interfaces/IexecPoco1.sol index e57572b4b..81e0289e0 100644 --- a/contracts/interfaces/IexecPoco1.sol +++ b/contracts/interfaces/IexecPoco1.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.8.0; +pragma solidity ^0.8.0; import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; interface IexecPoco1 { diff --git a/contracts/interfaces/IexecRelay.sol b/contracts/interfaces/IexecRelay.sol index fd5537da1..0bc2e2ccc 100644 --- a/contracts/interfaces/IexecRelay.sol +++ b/contracts/interfaces/IexecRelay.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.8.0; +pragma solidity ^0.8.0; import "../libs/IexecLibOrders_v5.sol"; diff --git a/contracts/interfaces/IexecTokenSpender.sol b/contracts/interfaces/IexecTokenSpender.sol index 3b494e325..601ead3f6 100644 --- a/contracts/interfaces/IexecTokenSpender.sol +++ b/contracts/interfaces/IexecTokenSpender.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.8.0; +pragma solidity ^0.8.0; interface IexecTokenSpender { function receiveApproval(address, uint256, address, bytes calldata) external returns (bool); diff --git a/contracts/libs/IexecLibCore_v5.sol b/contracts/libs/IexecLibCore_v5.sol index 14b947b7b..aca6f5f40 100644 --- a/contracts/libs/IexecLibCore_v5.sol +++ b/contracts/libs/IexecLibCore_v5.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2024 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.8.0; +pragma solidity ^0.8.0; library IexecLibCore_v5 { /** diff --git a/contracts/libs/IexecLibOrders_v5.sol b/contracts/libs/IexecLibOrders_v5.sol index 7e7b4b264..a5ba8b13f 100644 --- a/contracts/libs/IexecLibOrders_v5.sol +++ b/contracts/libs/IexecLibOrders_v5.sol @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020-2025 IEXEC BLOCKCHAIN TECH // SPDX-License-Identifier: Apache-2.0 -pragma solidity >=0.8.0; +pragma solidity ^0.8.0; library IexecLibOrders_v5 { // bytes32 public constant EIP712DOMAIN_TYPEHASH = keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'); // bytes32 public constant APPORDER_TYPEHASH = keccak256('AppOrder(address app,uint256 appprice,uint256 volume,bytes32 tag,address datasetrestrict,address workerpoolrestrict,address requesterrestrict,bytes32 salt)'); From 225232322715eccdac88137a5c4572dd11cd0b45 Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Thu, 30 Oct 2025 14:23:08 +0100 Subject: [PATCH 63/77] Implement feature X to enhance user experience and fix bug Y in module Z --- docs/solidity/index.md | 1444 ++++++++++++++++++++-------------------- 1 file changed, 722 insertions(+), 722 deletions(-) diff --git a/docs/solidity/index.md b/docs/solidity/index.md index 23ed44987..d5a8ba44e 100644 --- a/docs/solidity/index.md +++ b/docs/solidity/index.md @@ -16,62 +16,6 @@ the PoCo contracts in token mode. _Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. Changing the name or the path would cause a breaking change in the SDK._ -## IexecCategoryManagerFacet - -### createCategory - -```solidity -function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) -``` - -Methods - -## IexecConfigurationExtraFacet - -### changeRegistries - -```solidity -function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external -``` - -## IexecConfigurationFacet - -### configure - -```solidity -function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external -``` - -### domain - -```solidity -function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) -``` - -### updateDomainSeparator - -```solidity -function updateDomainSeparator() external -``` - -### importScore - -```solidity -function importScore(address _worker) external -``` - -### setTeeBroker - -```solidity -function setTeeBroker(address _teebroker) external -``` - -### setCallbackGas - -```solidity -function setCallbackGas(uint256 _callbackgas) external -``` - ## IexecERC20Core ## IexecERC20Facet @@ -112,650 +56,790 @@ function increaseAllowance(address spender, uint256 addedValue) external returns function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) ``` -## IexecEscrow +## IexecLibCore_v5 -### Transfer +### Account + +Tools ```solidity -event Transfer(address from, address to, uint256 value) +struct Account { + uint256 stake; + uint256 locked; +} ``` -### Lock +### Category ```solidity -event Lock(address owner, uint256 amount) +struct Category { + string name; + string description; + uint256 workClockTimeRef; +} ``` -### Unlock +### DatasetInfo ```solidity -event Unlock(address owner, uint256 amount) +struct DatasetInfo { + address owner; + string m_datasetName; + bytes m_datasetMultiaddr; + bytes32 m_datasetChecksum; +} ``` -### Reward +### AppInfo ```solidity -event Reward(address owner, uint256 amount, bytes32 ref) +struct AppInfo { + address owner; + string m_appName; + string m_appType; + bytes m_appMultiaddr; + bytes32 m_appChecksum; + bytes m_appMREnclave; +} ``` -### Seize +### WorkerpoolInfo ```solidity -event Seize(address owner, uint256 amount, bytes32 ref) +struct WorkerpoolInfo { + address owner; + string m_workerpoolDescription; + uint256 m_workerStakeRatioPolicy; + uint256 m_schedulerRewardRatioPolicy; +} ``` -## IexecEscrowNativeFacet +### Resource -### receive +Clerk - Deals ```solidity -receive() external payable +struct Resource { + address pointer; + address owner; + uint256 price; +} ``` -### fallback +### Deal ```solidity -fallback() external payable +struct Deal { + struct IexecLibCore_v5.Resource app; + struct IexecLibCore_v5.Resource dataset; + struct IexecLibCore_v5.Resource workerpool; + uint256 trust; + uint256 category; + bytes32 tag; + address requester; + address beneficiary; + address callback; + string params; + uint256 startTime; + uint256 botFirst; + uint256 botSize; + uint256 workerStake; + uint256 schedulerRewardRatio; + address sponsor; +} ``` -### deposit +### DealBoost + +Simplified deals for PoCo Boost module. ```solidity -function deposit() external payable returns (bool) +struct DealBoost { + address appOwner; + uint96 appPrice; + address datasetOwner; + uint96 datasetPrice; + address workerpoolOwner; + uint96 workerpoolPrice; + address requester; + uint96 workerReward; + address callback; + uint40 deadline; + uint16 botFirst; + uint16 botSize; + bytes3 shortTag; + address sponsor; +} ``` -### depositFor +### TaskStatusEnum + +Tasks ```solidity -function depositFor(address target) external payable returns (bool) +enum TaskStatusEnum { + UNSET, + ACTIVE, + REVEALING, + COMPLETED, + FAILED +} ``` -### depositForArray +### Task ```solidity -function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) +struct Task { + enum IexecLibCore_v5.TaskStatusEnum status; + bytes32 dealid; + uint256 idx; + uint256 timeref; + uint256 contributionDeadline; + uint256 revealDeadline; + uint256 finalDeadline; + bytes32 consensusValue; + uint256 revealCounter; + uint256 winnerCounter; + address[] contributors; + bytes32 resultDigest; + bytes results; + uint256 resultsTimestamp; + bytes resultsCallback; +} ``` -### withdraw +### Consensus + +Consensus ```solidity -function withdraw(uint256 amount) external returns (bool) +struct Consensus { + mapping(bytes32 => uint256) group; + uint256 total; +} ``` -### withdrawTo +### ContributionStatusEnum + +Consensus ```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) +enum ContributionStatusEnum { + UNSET, + CONTRIBUTED, + PROVED, + REJECTED +} ``` -### recover +### Contribution ```solidity -function recover() external returns (uint256) +struct Contribution { + enum IexecLibCore_v5.ContributionStatusEnum status; + bytes32 resultHash; + bytes32 resultSeal; + address enclaveChallenge; + uint256 weight; +} ``` -## IexecEscrowTokenFacet +## IexecLibOrders_v5 -### receive +### EIP712DOMAIN_TYPEHASH ```solidity -receive() external payable +bytes32 EIP712DOMAIN_TYPEHASH ``` -### fallback +### APPORDER_TYPEHASH ```solidity -fallback() external payable +bytes32 APPORDER_TYPEHASH ``` -### deposit +### DATASETORDER_TYPEHASH ```solidity -function deposit(uint256 amount) external returns (bool) +bytes32 DATASETORDER_TYPEHASH ``` -### depositFor +### WORKERPOOLORDER_TYPEHASH ```solidity -function depositFor(uint256 amount, address target) external returns (bool) +bytes32 WORKERPOOLORDER_TYPEHASH ``` -### depositForArray +### REQUESTORDER_TYPEHASH ```solidity -function depositForArray(uint256[] amounts, address[] targets) external returns (bool) +bytes32 REQUESTORDER_TYPEHASH ``` -### withdraw +### APPORDEROPERATION_TYPEHASH ```solidity -function withdraw(uint256 amount) external returns (bool) +bytes32 APPORDEROPERATION_TYPEHASH ``` -### withdrawTo +### DATASETORDEROPERATION_TYPEHASH ```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) +bytes32 DATASETORDEROPERATION_TYPEHASH ``` -### recover +### WORKERPOOLORDEROPERATION_TYPEHASH ```solidity -function recover() external returns (uint256) +bytes32 WORKERPOOLORDEROPERATION_TYPEHASH ``` -### receiveApproval +### REQUESTORDEROPERATION_TYPEHASH ```solidity -function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) +bytes32 REQUESTORDEROPERATION_TYPEHASH ``` -## IexecOrderManagementFacet - -### manageAppOrder +### OrderOperationEnum ```solidity -function manageAppOrder(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) external +enum OrderOperationEnum { + SIGN, + CLOSE +} ``` -### manageDatasetOrder +### EIP712Domain ```solidity -function manageDatasetOrder(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) external +struct EIP712Domain { + string name; + string version; + uint256 chainId; + address verifyingContract; +} ``` -### manageWorkerpoolOrder +### AppOrder ```solidity -function manageWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) external +struct AppOrder { + address app; + uint256 appprice; + uint256 volume; + bytes32 tag; + address datasetrestrict; + address workerpoolrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -### manageRequestOrder +### DatasetOrder ```solidity -function manageRequestOrder(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) external +struct DatasetOrder { + address dataset; + uint256 datasetprice; + uint256 volume; + bytes32 tag; + address apprestrict; + address workerpoolrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -## Matching +### WorkerpoolOrder ```solidity -struct Matching { - bytes32 apporderHash; - address appOwner; - bytes32 datasetorderHash; - address datasetOwner; - bytes32 workerpoolorderHash; - address workerpoolOwner; - bytes32 requestorderHash; - bool hasDataset; +struct WorkerpoolOrder { + address workerpool; + uint256 workerpoolprice; + uint256 volume; + bytes32 tag; + uint256 category; + uint256 trust; + address apprestrict; + address datasetrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; } ``` -## IexecPoco1Facet - -### verifySignature +### RequestOrder ```solidity -function verifySignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) +struct RequestOrder { + address app; + uint256 appmaxprice; + address dataset; + uint256 datasetmaxprice; + address workerpool; + uint256 workerpoolmaxprice; + address requester; + uint256 volume; + bytes32 tag; + uint256 category; + uint256 trust; + address beneficiary; + address callback; + string params; + bytes32 salt; + bytes sign; +} ``` -### verifyPresignature +### AppOrderOperation ```solidity -function verifyPresignature(address _identity, bytes32 _hash) external view returns (bool) +struct AppOrderOperation { + struct IexecLibOrders_v5.AppOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -### verifyPresignatureOrSignature +### DatasetOrderOperation ```solidity -function verifyPresignatureOrSignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) +struct DatasetOrderOperation { + struct IexecLibOrders_v5.DatasetOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -### assertDatasetDealCompatibility +### WorkerpoolOrderOperation ```solidity -function assertDatasetDealCompatibility(struct IexecLibOrders_v5.DatasetOrder datasetOrder, bytes32 dealId) external view +struct WorkerpoolOrderOperation { + struct IexecLibOrders_v5.WorkerpoolOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -Public view function to check if a dataset order is compatible with a deal. -This function performs all the necessary checks to verify dataset order compatibility with a deal. -Reverts with `IncompatibleDatasetOrder(reason)` if the dataset order is not compatible with the deal, does -nothing otherwise. - -_This function is mainly consumed by offchain clients. It should be carefully inspected if -used in on-chain code. -This function should not be used in `matchOrders` since it does not check the same requirements. -The choice of reverting instead of returning true/false is motivated by the Java middleware -requirements._ - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order to verify | -| dealId | bytes32 | The deal ID to check against | - -### matchOrders +### RequestOrderOperation ```solidity -function matchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) +struct RequestOrderOperation { + struct IexecLibOrders_v5.RequestOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -Match orders. The requester gets debited. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | -| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | - -### sponsorMatchOrders +### hash ```solidity -function sponsorMatchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) +function hash(struct IexecLibOrders_v5.EIP712Domain _domain) public pure returns (bytes32 domainhash) ``` -Sponsor match orders for a requester. -Unlike the standard `matchOrders(..)` hook where the requester pays for -the deal, this current hook makes it possible for any `msg.sender` to pay for -a third party requester. - -Be aware that anyone seeing a valid request order on the network -(via an off-chain public marketplace, via a `sponsorMatchOrders(..)` -pending transaction in the mempool or by any other means) might decide -to call the standard `matchOrders(..)` hook which will result in the -requester being debited instead. Therefore, such a front run would result -in a loss of some of the requester funds deposited in the iExec account -(a loss value equivalent to the price of the deal). - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | -| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | - -## IexecPoco2Facet - -### initialize +### hash ```solidity -function initialize(bytes32 _dealid, uint256 idx) public returns (bytes32) +function hash(struct IexecLibOrders_v5.AppOrder _apporder) public pure returns (bytes32 apphash) ``` -### contribute +### hash ```solidity -function contribute(bytes32 _taskid, bytes32 _resultHash, bytes32 _resultSeal, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external +function hash(struct IexecLibOrders_v5.DatasetOrder _datasetorder) public pure returns (bytes32 datasethash) ``` -### contributeAndFinalize +### hash ```solidity -function contributeAndFinalize(bytes32 _taskid, bytes32 _resultDigest, bytes _results, bytes _resultsCallback, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external +function hash(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) public pure returns (bytes32 workerpoolhash) ``` -### reveal +### hash ```solidity -function reveal(bytes32 _taskid, bytes32 _resultDigest) external +function hash(struct IexecLibOrders_v5.RequestOrder _requestorder) public pure returns (bytes32 requesthash) ``` -### reopen +### hash ```solidity -function reopen(bytes32 _taskid) external +function hash(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) public pure returns (bytes32) ``` -### finalize +### hash ```solidity -function finalize(bytes32 _taskid, bytes _results, bytes _resultsCallback) external +function hash(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) public pure returns (bytes32) ``` -### claim +### hash ```solidity -function claim(bytes32 _taskid) public +function hash(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) public pure returns (bytes32) ``` -### initializeArray +### hash ```solidity -function initializeArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) +function hash(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) public pure returns (bytes32) ``` -### claimArray - -```solidity -function claimArray(bytes32[] _taskid) external returns (bool) -``` +## PocoStorageLib -### initializeAndClaimArray +### PocoStorage ```solidity -function initializeAndClaimArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) +struct PocoStorage { + contract IRegistry m_appregistry; + contract IRegistry m_datasetregistry; + contract IRegistry m_workerpoolregistry; + contract IERC20 m_baseToken; + string m_name; + string m_symbol; + uint8 m_decimals; + uint256 m_totalSupply; + mapping(address => uint256) m_balances; + mapping(address => uint256) m_frozens; + mapping(address => mapping(address => uint256)) m_allowances; + bytes32 m_eip712DomainSeparator; + mapping(bytes32 => address) m_presigned; + mapping(bytes32 => uint256) m_consumed; + mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; + mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; + mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; + mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; + mapping(address => uint256) m_workerScores; + address m_teebroker; + uint256 m_callbackgas; + struct IexecLibCore_v5.Category[] m_categories; + contract IexecHubV3Interface m_v3_iexecHub; + mapping(address => bool) m_v3_scoreImported; + mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; +} ``` -## IexecPocoAccessorsFacet +## IRegistry -### viewDeal +### isRegistered ```solidity -function viewDeal(bytes32 id) external view returns (struct IexecLibCore_v5.Deal deal) +function isRegistered(address _entry) external view returns (bool) ``` -Get a deal created by PoCo classic facet. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | The ID of the deal. | +## IexecCategoryManagerFacet -### viewTask +### createCategory ```solidity -function viewTask(bytes32 id) external view returns (struct IexecLibCore_v5.Task) +function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) ``` -Get task created in Classic mode. - -#### Parameters +Methods -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | id of the task | +## IexecConfigurationExtraFacet -### computeDealVolume +### changeRegistries ```solidity -function computeDealVolume(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external view returns (uint256) +function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external ``` -Computes the volume of the "not yet created" deal based on the provided orders. -This function should only be used if the deal is not yet created. -For existing deals, use the deal accessors instead. +## IexecConfigurationFacet -#### Parameters +### configure -| Name | Type | Description | -| ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The application order. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The request order. | +```solidity +function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external +``` -#### Return Values +### domain -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | uint256 | The computed deal volume. | +```solidity +function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) +``` -### viewConsumed +### updateDomainSeparator ```solidity -function viewConsumed(bytes32 _id) external view returns (uint256 consumed) +function updateDomainSeparator() external ``` -### viewPresigned +### importScore ```solidity -function viewPresigned(bytes32 _id) external view returns (address signer) +function importScore(address _worker) external ``` -### viewContribution +### setTeeBroker ```solidity -function viewContribution(bytes32 _taskid, address _worker) external view returns (struct IexecLibCore_v5.Contribution) +function setTeeBroker(address _teebroker) external ``` -### viewScore +### setCallbackGas ```solidity -function viewScore(address _worker) external view returns (uint256) +function setCallbackGas(uint256 _callbackgas) external ``` -### resultFor +## IexecEscrow + +### Transfer ```solidity -function resultFor(bytes32 id) external view returns (bytes) +event Transfer(address from, address to, uint256 value) ``` -### name +### Lock ```solidity -function name() external view returns (string) +event Lock(address owner, uint256 amount) ``` -### symbol +### Unlock ```solidity -function symbol() external view returns (string) +event Unlock(address owner, uint256 amount) ``` -### decimals +### Reward ```solidity -function decimals() external view returns (uint8) +event Reward(address owner, uint256 amount, bytes32 ref) ``` -### totalSupply +### Seize ```solidity -function totalSupply() external view returns (uint256) +event Seize(address owner, uint256 amount, bytes32 ref) ``` -### balanceOf +## IexecEscrowNativeFacet + +### receive ```solidity -function balanceOf(address account) external view returns (uint256) +receive() external payable ``` -### frozenOf +### fallback ```solidity -function frozenOf(address account) external view returns (uint256) +fallback() external payable ``` -### allowance +### deposit ```solidity -function allowance(address account, address spender) external view returns (uint256) +function deposit() external payable returns (bool) ``` -### viewAccount +### depositFor ```solidity -function viewAccount(address account) external view returns (struct IexecLibCore_v5.Account) +function depositFor(address target) external payable returns (bool) ``` -### token +### depositForArray ```solidity -function token() external view returns (address) +function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) ``` -### viewCategory +### withdraw ```solidity -function viewCategory(uint256 _catid) external view returns (struct IexecLibCore_v5.Category category) +function withdraw(uint256 amount) external returns (bool) ``` -### countCategory +### withdrawTo ```solidity -function countCategory() external view returns (uint256 count) +function withdrawTo(uint256 amount, address target) external returns (bool) ``` -### appregistry +### recover ```solidity -function appregistry() external view returns (contract IRegistry) +function recover() external returns (uint256) ``` -### datasetregistry +## IexecEscrowTokenFacet + +### receive ```solidity -function datasetregistry() external view returns (contract IRegistry) +receive() external payable ``` -### workerpoolregistry +### fallback ```solidity -function workerpoolregistry() external view returns (contract IRegistry) +fallback() external payable ``` -### teebroker +### deposit ```solidity -function teebroker() external view returns (address) +function deposit(uint256 amount) external returns (bool) ``` -### callbackgas +### depositFor ```solidity -function callbackgas() external view returns (uint256) +function depositFor(uint256 amount, address target) external returns (bool) ``` -### viewDataset +### depositForArray ```solidity -function viewDataset(address dataset) external view returns (struct IexecLibCore_v5.DatasetInfo) +function depositForArray(uint256[] amounts, address[] targets) external returns (bool) ``` -### viewApp +### withdraw ```solidity -function viewApp(address app) external view returns (struct IexecLibCore_v5.AppInfo) +function withdraw(uint256 amount) external returns (bool) ``` -### viewWorkerpool +### withdrawTo ```solidity -function viewWorkerpool(address workerpool) external view returns (struct IexecLibCore_v5.WorkerpoolInfo) +function withdrawTo(uint256 amount, address target) external returns (bool) ``` -### contribution_deadline_ratio +### recover ```solidity -function contribution_deadline_ratio() external pure returns (uint256) +function recover() external returns (uint256) ``` -### reveal_deadline_ratio +### receiveApproval ```solidity -function reveal_deadline_ratio() external pure returns (uint256) +function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) ``` -### final_deadline_ratio +## IexecOrderManagementFacet + +### manageAppOrder ```solidity -function final_deadline_ratio() external pure returns (uint256) +function manageAppOrder(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) external ``` -### workerpool_stake_ratio +### manageDatasetOrder ```solidity -function workerpool_stake_ratio() external pure returns (uint256) +function manageDatasetOrder(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) external ``` -### kitty_ratio +### manageWorkerpoolOrder ```solidity -function kitty_ratio() external pure returns (uint256) +function manageWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) external ``` -### kitty_min +### manageRequestOrder ```solidity -function kitty_min() external pure returns (uint256) +function manageRequestOrder(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) external ``` -### kitty_address +## Matching ```solidity -function kitty_address() external pure returns (address) +struct Matching { + bytes32 apporderHash; + address appOwner; + bytes32 datasetorderHash; + address datasetOwner; + bytes32 workerpoolorderHash; + address workerpoolOwner; + bytes32 requestorderHash; + bool hasDataset; +} ``` -### groupmember_purpose +## IexecPoco1Facet + +### verifySignature ```solidity -function groupmember_purpose() external pure returns (uint256) +function verifySignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) ``` -### eip712domain_separator +### verifyPresignature ```solidity -function eip712domain_separator() external view returns (bytes32) +function verifyPresignature(address _identity, bytes32 _hash) external view returns (bool) ``` -## IexecPocoBoostAccessorsFacet +### verifyPresignatureOrSignature -Access to PoCo Boost tasks must be done with PoCo Classic `IexecPocoAccessors`. +```solidity +function verifyPresignatureOrSignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) +``` -### viewDealBoost +### assertDatasetDealCompatibility ```solidity -function viewDealBoost(bytes32 id) external view returns (struct IexecLibCore_v5.DealBoost deal) +function assertDatasetDealCompatibility(struct IexecLibOrders_v5.DatasetOrder datasetOrder, bytes32 dealId) external view ``` -Get a deal created by PoCo Boost facet. +Public view function to check if a dataset order is compatible with a deal. +This function performs all the necessary checks to verify dataset order compatibility with a deal. +Reverts with `IncompatibleDatasetOrder(reason)` if the dataset order is not compatible with the deal, does +nothing otherwise. + +_This function is mainly consumed by offchain clients. It should be carefully inspected if +used in on-chain code. +This function should not be used in `matchOrders` since it does not check the same requirements. +The choice of reverting instead of returning true/false is motivated by the Java middleware +requirements._ #### Parameters | Name | Type | Description | | ---- | ---- | ----------- | -| id | bytes32 | The ID of the deal. | - -## IexecPocoBoostFacet - -Works for deals with requested trust = 0. +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order to verify | +| dealId | bytes32 | The deal ID to check against | -### matchOrdersBoost +### matchOrders ```solidity -function matchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) +function matchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) ``` -This boost match orders is only compatible with trust <= 1. -The requester gets debited. +Match orders. The requester gets debited. #### Parameters | Name | Type | Description | | ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The order signed by the application developer. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The order signed by the dataset provider. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The order signed by the workerpool manager. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The order signed by the requester. | - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | bytes32 | The ID of the deal. | +| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | +| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | -### sponsorMatchOrdersBoost +### sponsorMatchOrders ```solidity -function sponsorMatchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) +function sponsorMatchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) ``` -Sponsor match orders boost for a requester. -Unlike the standard `matchOrdersBoost(..)` hook where the requester pays for +Sponsor match orders for a requester. +Unlike the standard `matchOrders(..)` hook where the requester pays for the deal, this current hook makes it possible for any `msg.sender` to pay for a third party requester. Be aware that anyone seeing a valid request order on the network -(via an off-chain public marketplace, via a `sponsorMatchOrdersBoost(..)` +(via an off-chain public marketplace, via a `sponsorMatchOrders(..)` pending transaction in the mempool or by any other means) might decide -to call the standard `matchOrdersBoost(..)` hook which will result in the +to call the standard `matchOrders(..)` hook which will result in the requester being debited instead. Therefore, such a front run would result in a loss of some of the requester funds deposited in the iExec account (a loss value equivalent to the price of the deal). @@ -764,543 +848,459 @@ in a loss of some of the requester funds deposited in the iExec account | Name | Type | Description | | ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The app order. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The requester order. | +| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | +| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | -### pushResultBoost +## IexecPoco2Facet + +### initialize ```solidity -function pushResultBoost(bytes32 dealId, uint256 index, bytes results, bytes resultsCallback, bytes authorizationSign, address enclaveChallenge, bytes enclaveSign) external +function initialize(bytes32 _dealid, uint256 idx) public returns (bytes32) ``` -Accept results of a task computed by a worker during Boost workflow. +### contribute -#### Parameters +```solidity +function contribute(bytes32 _taskid, bytes32 _resultHash, bytes32 _resultSeal, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external +``` -| Name | Type | Description | -| ---- | ---- | ----------- | -| dealId | bytes32 | The id of the target deal. | -| index | uint256 | The index of the target task of the deal. | -| results | bytes | The results of the task computed by the worker. | -| resultsCallback | bytes | The results of the task computed by the worker that will be forwarded as call data to the callback address set by the requester. | -| authorizationSign | bytes | The authorization signed by the scheduler. authorizing the worker to push a result. | -| enclaveChallenge | address | The enclave address which can produce enclave signature. | -| enclaveSign | bytes | The signature generated from the enclave. | +### contributeAndFinalize -### claimBoost +```solidity +function contributeAndFinalize(bytes32 _taskid, bytes32 _resultDigest, bytes _results, bytes _resultsCallback, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external +``` + +### reveal ```solidity -function claimBoost(bytes32 dealId, uint256 index) external +function reveal(bytes32 _taskid, bytes32 _resultDigest) external ``` -Claim task to get a refund if task is not completed after deadline. +### reopen -#### Parameters +```solidity +function reopen(bytes32 _taskid) external +``` -| Name | Type | Description | -| ---- | ---- | ----------- | -| dealId | bytes32 | The ID of the deal. | -| index | uint256 | The index of the task. | +### finalize -## IexecRelayFacet +```solidity +function finalize(bytes32 _taskid, bytes _results, bytes _resultsCallback) external +``` -### broadcastAppOrder +### claim ```solidity -function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external +function claim(bytes32 _taskid) public ``` -### broadcastDatasetOrder +### initializeArray ```solidity -function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external +function initializeArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) ``` -### broadcastWorkerpoolOrder +### claimArray ```solidity -function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external +function claimArray(bytes32[] _taskid) external returns (bool) ``` -### broadcastRequestOrder +### initializeAndClaimArray ```solidity -function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external +function initializeAndClaimArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) ``` -## IexecLibCore_v5 +## IexecPocoAccessorsFacet -### Account +### viewDeal -Tools +```solidity +function viewDeal(bytes32 id) external view returns (struct IexecLibCore_v5.Deal deal) +``` + +Get a deal created by PoCo classic facet. + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | The ID of the deal. | + +### viewTask ```solidity -struct Account { - uint256 stake; - uint256 locked; -} +function viewTask(bytes32 id) external view returns (struct IexecLibCore_v5.Task) ``` -### Category +Get task created in Classic mode. + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | id of the task | + +### computeDealVolume ```solidity -struct Category { - string name; - string description; - uint256 workClockTimeRef; -} +function computeDealVolume(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external view returns (uint256) ``` -### DatasetInfo +Computes the volume of the "not yet created" deal based on the provided orders. +This function should only be used if the deal is not yet created. +For existing deals, use the deal accessors instead. + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The application order. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The request order. | + +#### Return Values + +| Name | Type | Description | +| ---- | ---- | ----------- | +| [0] | uint256 | The computed deal volume. | + +### viewConsumed ```solidity -struct DatasetInfo { - address owner; - string m_datasetName; - bytes m_datasetMultiaddr; - bytes32 m_datasetChecksum; -} +function viewConsumed(bytes32 _id) external view returns (uint256 consumed) ``` -### AppInfo +### viewPresigned ```solidity -struct AppInfo { - address owner; - string m_appName; - string m_appType; - bytes m_appMultiaddr; - bytes32 m_appChecksum; - bytes m_appMREnclave; -} +function viewPresigned(bytes32 _id) external view returns (address signer) ``` -### WorkerpoolInfo +### viewContribution ```solidity -struct WorkerpoolInfo { - address owner; - string m_workerpoolDescription; - uint256 m_workerStakeRatioPolicy; - uint256 m_schedulerRewardRatioPolicy; -} +function viewContribution(bytes32 _taskid, address _worker) external view returns (struct IexecLibCore_v5.Contribution) +``` + +### viewScore + +```solidity +function viewScore(address _worker) external view returns (uint256) ``` -### Resource - -Clerk - Deals +### resultFor ```solidity -struct Resource { - address pointer; - address owner; - uint256 price; -} +function resultFor(bytes32 id) external view returns (bytes) ``` -### Deal +### name ```solidity -struct Deal { - struct IexecLibCore_v5.Resource app; - struct IexecLibCore_v5.Resource dataset; - struct IexecLibCore_v5.Resource workerpool; - uint256 trust; - uint256 category; - bytes32 tag; - address requester; - address beneficiary; - address callback; - string params; - uint256 startTime; - uint256 botFirst; - uint256 botSize; - uint256 workerStake; - uint256 schedulerRewardRatio; - address sponsor; -} +function name() external view returns (string) ``` -### DealBoost - -Simplified deals for PoCo Boost module. +### symbol ```solidity -struct DealBoost { - address appOwner; - uint96 appPrice; - address datasetOwner; - uint96 datasetPrice; - address workerpoolOwner; - uint96 workerpoolPrice; - address requester; - uint96 workerReward; - address callback; - uint40 deadline; - uint16 botFirst; - uint16 botSize; - bytes3 shortTag; - address sponsor; -} +function symbol() external view returns (string) ``` -### TaskStatusEnum - -Tasks +### decimals ```solidity -enum TaskStatusEnum { - UNSET, - ACTIVE, - REVEALING, - COMPLETED, - FAILED -} +function decimals() external view returns (uint8) ``` -### Task +### totalSupply ```solidity -struct Task { - enum IexecLibCore_v5.TaskStatusEnum status; - bytes32 dealid; - uint256 idx; - uint256 timeref; - uint256 contributionDeadline; - uint256 revealDeadline; - uint256 finalDeadline; - bytes32 consensusValue; - uint256 revealCounter; - uint256 winnerCounter; - address[] contributors; - bytes32 resultDigest; - bytes results; - uint256 resultsTimestamp; - bytes resultsCallback; -} +function totalSupply() external view returns (uint256) ``` -### Consensus - -Consensus +### balanceOf ```solidity -struct Consensus { - mapping(bytes32 => uint256) group; - uint256 total; -} +function balanceOf(address account) external view returns (uint256) ``` -### ContributionStatusEnum - -Consensus +### frozenOf ```solidity -enum ContributionStatusEnum { - UNSET, - CONTRIBUTED, - PROVED, - REJECTED -} +function frozenOf(address account) external view returns (uint256) ``` -### Contribution +### allowance ```solidity -struct Contribution { - enum IexecLibCore_v5.ContributionStatusEnum status; - bytes32 resultHash; - bytes32 resultSeal; - address enclaveChallenge; - uint256 weight; -} +function allowance(address account, address spender) external view returns (uint256) ``` -## IexecLibOrders_v5 - -### EIP712DOMAIN_TYPEHASH +### viewAccount ```solidity -bytes32 EIP712DOMAIN_TYPEHASH +function viewAccount(address account) external view returns (struct IexecLibCore_v5.Account) ``` -### APPORDER_TYPEHASH +### token ```solidity -bytes32 APPORDER_TYPEHASH +function token() external view returns (address) ``` -### DATASETORDER_TYPEHASH +### viewCategory ```solidity -bytes32 DATASETORDER_TYPEHASH +function viewCategory(uint256 _catid) external view returns (struct IexecLibCore_v5.Category category) ``` -### WORKERPOOLORDER_TYPEHASH +### countCategory ```solidity -bytes32 WORKERPOOLORDER_TYPEHASH +function countCategory() external view returns (uint256 count) ``` -### REQUESTORDER_TYPEHASH +### appregistry ```solidity -bytes32 REQUESTORDER_TYPEHASH +function appregistry() external view returns (contract IRegistry) ``` -### APPORDEROPERATION_TYPEHASH +### datasetregistry ```solidity -bytes32 APPORDEROPERATION_TYPEHASH +function datasetregistry() external view returns (contract IRegistry) ``` -### DATASETORDEROPERATION_TYPEHASH +### workerpoolregistry ```solidity -bytes32 DATASETORDEROPERATION_TYPEHASH +function workerpoolregistry() external view returns (contract IRegistry) ``` -### WORKERPOOLORDEROPERATION_TYPEHASH +### teebroker ```solidity -bytes32 WORKERPOOLORDEROPERATION_TYPEHASH +function teebroker() external view returns (address) ``` -### REQUESTORDEROPERATION_TYPEHASH +### callbackgas ```solidity -bytes32 REQUESTORDEROPERATION_TYPEHASH +function callbackgas() external view returns (uint256) ``` -### OrderOperationEnum +### viewDataset ```solidity -enum OrderOperationEnum { - SIGN, - CLOSE -} +function viewDataset(address dataset) external view returns (struct IexecLibCore_v5.DatasetInfo) ``` -### EIP712Domain +### viewApp ```solidity -struct EIP712Domain { - string name; - string version; - uint256 chainId; - address verifyingContract; -} +function viewApp(address app) external view returns (struct IexecLibCore_v5.AppInfo) ``` -### AppOrder +### viewWorkerpool ```solidity -struct AppOrder { - address app; - uint256 appprice; - uint256 volume; - bytes32 tag; - address datasetrestrict; - address workerpoolrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function viewWorkerpool(address workerpool) external view returns (struct IexecLibCore_v5.WorkerpoolInfo) ``` -### DatasetOrder +### contribution_deadline_ratio ```solidity -struct DatasetOrder { - address dataset; - uint256 datasetprice; - uint256 volume; - bytes32 tag; - address apprestrict; - address workerpoolrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function contribution_deadline_ratio() external pure returns (uint256) ``` -### WorkerpoolOrder +### reveal_deadline_ratio ```solidity -struct WorkerpoolOrder { - address workerpool; - uint256 workerpoolprice; - uint256 volume; - bytes32 tag; - uint256 category; - uint256 trust; - address apprestrict; - address datasetrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function reveal_deadline_ratio() external pure returns (uint256) ``` -### RequestOrder +### final_deadline_ratio ```solidity -struct RequestOrder { - address app; - uint256 appmaxprice; - address dataset; - uint256 datasetmaxprice; - address workerpool; - uint256 workerpoolmaxprice; - address requester; - uint256 volume; - bytes32 tag; - uint256 category; - uint256 trust; - address beneficiary; - address callback; - string params; - bytes32 salt; - bytes sign; -} +function final_deadline_ratio() external pure returns (uint256) ``` -### AppOrderOperation +### workerpool_stake_ratio ```solidity -struct AppOrderOperation { - struct IexecLibOrders_v5.AppOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function workerpool_stake_ratio() external pure returns (uint256) ``` -### DatasetOrderOperation +### kitty_ratio ```solidity -struct DatasetOrderOperation { - struct IexecLibOrders_v5.DatasetOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function kitty_ratio() external pure returns (uint256) ``` -### WorkerpoolOrderOperation +### kitty_min ```solidity -struct WorkerpoolOrderOperation { - struct IexecLibOrders_v5.WorkerpoolOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function kitty_min() external pure returns (uint256) ``` -### RequestOrderOperation +### kitty_address ```solidity -struct RequestOrderOperation { - struct IexecLibOrders_v5.RequestOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function kitty_address() external pure returns (address) ``` -### hash +### groupmember_purpose ```solidity -function hash(struct IexecLibOrders_v5.EIP712Domain _domain) public pure returns (bytes32 domainhash) +function groupmember_purpose() external pure returns (uint256) ``` -### hash +### eip712domain_separator ```solidity -function hash(struct IexecLibOrders_v5.AppOrder _apporder) public pure returns (bytes32 apphash) +function eip712domain_separator() external view returns (bytes32) ``` -### hash +## IexecPocoBoostAccessorsFacet + +Access to PoCo Boost tasks must be done with PoCo Classic `IexecPocoAccessors`. + +### viewDealBoost ```solidity -function hash(struct IexecLibOrders_v5.DatasetOrder _datasetorder) public pure returns (bytes32 datasethash) +function viewDealBoost(bytes32 id) external view returns (struct IexecLibCore_v5.DealBoost deal) ``` -### hash +Get a deal created by PoCo Boost facet. + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | The ID of the deal. | + +## IexecPocoBoostFacet + +Works for deals with requested trust = 0. + +### matchOrdersBoost ```solidity -function hash(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) public pure returns (bytes32 workerpoolhash) +function matchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) ``` -### hash +This boost match orders is only compatible with trust <= 1. +The requester gets debited. + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The order signed by the application developer. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The order signed by the dataset provider. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The order signed by the workerpool manager. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The order signed by the requester. | + +#### Return Values + +| Name | Type | Description | +| ---- | ---- | ----------- | +| [0] | bytes32 | The ID of the deal. | + +### sponsorMatchOrdersBoost ```solidity -function hash(struct IexecLibOrders_v5.RequestOrder _requestorder) public pure returns (bytes32 requesthash) +function sponsorMatchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) ``` -### hash +Sponsor match orders boost for a requester. +Unlike the standard `matchOrdersBoost(..)` hook where the requester pays for +the deal, this current hook makes it possible for any `msg.sender` to pay for +a third party requester. + +Be aware that anyone seeing a valid request order on the network +(via an off-chain public marketplace, via a `sponsorMatchOrdersBoost(..)` +pending transaction in the mempool or by any other means) might decide +to call the standard `matchOrdersBoost(..)` hook which will result in the +requester being debited instead. Therefore, such a front run would result +in a loss of some of the requester funds deposited in the iExec account +(a loss value equivalent to the price of the deal). + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The app order. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The requester order. | + +### pushResultBoost ```solidity -function hash(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) public pure returns (bytes32) +function pushResultBoost(bytes32 dealId, uint256 index, bytes results, bytes resultsCallback, bytes authorizationSign, address enclaveChallenge, bytes enclaveSign) external ``` -### hash +Accept results of a task computed by a worker during Boost workflow. + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| dealId | bytes32 | The id of the target deal. | +| index | uint256 | The index of the target task of the deal. | +| results | bytes | The results of the task computed by the worker. | +| resultsCallback | bytes | The results of the task computed by the worker that will be forwarded as call data to the callback address set by the requester. | +| authorizationSign | bytes | The authorization signed by the scheduler. authorizing the worker to push a result. | +| enclaveChallenge | address | The enclave address which can produce enclave signature. | +| enclaveSign | bytes | The signature generated from the enclave. | + +### claimBoost ```solidity -function hash(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) public pure returns (bytes32) +function claimBoost(bytes32 dealId, uint256 index) external ``` -### hash +Claim task to get a refund if task is not completed after deadline. + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| dealId | bytes32 | The ID of the deal. | +| index | uint256 | The index of the task. | + +## IexecRelayFacet + +### broadcastAppOrder ```solidity -function hash(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) public pure returns (bytes32) +function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external ``` -### hash +### broadcastDatasetOrder ```solidity -function hash(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) public pure returns (bytes32) +function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external ``` -## PocoStorageLib - -### PocoStorage +### broadcastWorkerpoolOrder ```solidity -struct PocoStorage { - contract IRegistry m_appregistry; - contract IRegistry m_datasetregistry; - contract IRegistry m_workerpoolregistry; - contract IERC20 m_baseToken; - string m_name; - string m_symbol; - uint8 m_decimals; - uint256 m_totalSupply; - mapping(address => uint256) m_balances; - mapping(address => uint256) m_frozens; - mapping(address => mapping(address => uint256)) m_allowances; - bytes32 m_eip712DomainSeparator; - mapping(bytes32 => address) m_presigned; - mapping(bytes32 => uint256) m_consumed; - mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; - mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; - mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; - mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; - mapping(address => uint256) m_workerScores; - address m_teebroker; - uint256 m_callbackgas; - struct IexecLibCore_v5.Category[] m_categories; - contract IexecHubV3Interface m_v3_iexecHub; - mapping(address => bool) m_v3_scoreImported; - mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; -} +function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external ``` -## IRegistry - -### isRegistered +### broadcastRequestOrder ```solidity -function isRegistered(address _entry) external view returns (bool) +function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external ``` ## Registry @@ -1762,52 +1762,6 @@ function createWorkerpool(address _workerpoolOwner, string _workerpoolDescriptio function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) ``` -## FacetBase - -_Every facet must inherit from this contract._ - -## PocoStorageLib - -### PocoStorage - -```solidity -struct PocoStorage { - contract IRegistry m_appregistry; - contract IRegistry m_datasetregistry; - contract IRegistry m_workerpoolregistry; - contract IERC20 m_baseToken; - string m_name; - string m_symbol; - uint8 m_decimals; - uint256 m_totalSupply; - mapping(address => uint256) m_balances; - mapping(address => uint256) m_frozens; - mapping(address => mapping(address => uint256)) m_allowances; - bytes32 m_eip712DomainSeparator; - mapping(bytes32 => address) m_presigned; - mapping(bytes32 => uint256) m_consumed; - mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; - mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; - mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; - mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; - mapping(address => uint256) m_workerScores; - address m_teebroker; - uint256 m_callbackgas; - struct IexecLibCore_v5.Category[] m_categories; - address m_v3_iexecHub; - mapping(address => bool) m_v3_scoreImported; - mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; -} -``` - -## IRegistry - -### isRegistered - -```solidity -function isRegistered(address _entry) external view returns (bool) -``` - ## IexecEscrowTokenSwapFacet ### UniswapV2Router @@ -1918,3 +1872,49 @@ function safeWithdrawEthTo(uint256 amount, uint256 minimum, address target) exte function matchOrdersWithEth(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) public payable returns (bytes32) ``` +## FacetBase + +_Every facet must inherit from this contract._ + +## PocoStorageLib + +### PocoStorage + +```solidity +struct PocoStorage { + contract IRegistry m_appregistry; + contract IRegistry m_datasetregistry; + contract IRegistry m_workerpoolregistry; + contract IERC20 m_baseToken; + string m_name; + string m_symbol; + uint8 m_decimals; + uint256 m_totalSupply; + mapping(address => uint256) m_balances; + mapping(address => uint256) m_frozens; + mapping(address => mapping(address => uint256)) m_allowances; + bytes32 m_eip712DomainSeparator; + mapping(bytes32 => address) m_presigned; + mapping(bytes32 => uint256) m_consumed; + mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; + mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; + mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; + mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; + mapping(address => uint256) m_workerScores; + address m_teebroker; + uint256 m_callbackgas; + struct IexecLibCore_v5.Category[] m_categories; + address m_v3_iexecHub; + mapping(address => bool) m_v3_scoreImported; + mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; +} +``` + +## IRegistry + +### isRegistered + +```solidity +function isRegistered(address _entry) external view returns (bool) +``` + From abfa39ef13006f877b6c145de6acbb27c7262f42 Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Thu, 30 Oct 2025 15:47:51 +0100 Subject: [PATCH 64/77] Refactor _burn function to improve readability and maintainability by storing account balance in a variable --- contracts/facets/IexecERC20Core.sol | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/contracts/facets/IexecERC20Core.sol b/contracts/facets/IexecERC20Core.sol index f44769704..5776389a7 100644 --- a/contracts/facets/IexecERC20Core.sol +++ b/contracts/facets/IexecERC20Core.sol @@ -38,13 +38,14 @@ contract IexecERC20Core is IexecERC20Common, FacetBase { function _burn(address account, uint256 amount) internal { require(account != address(0), "ERC20: burn from the zero address"); PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); + uint256 accountBalance = $.m_balances[account]; // TEMPORARY MIGRATION FIX: Check balance to prevent underflow and revert without reason for backward compatibility // TODO: Remove this in the next major version - if ($.m_balances[account] < amount) { + if (accountBalance < amount) { revert(); } $.m_totalSupply = $.m_totalSupply - amount; - $.m_balances[account] = $.m_balances[account] - amount; + $.m_balances[account] = accountBalance - amount; emit Transfer(account, address(0), amount); } From c63bdb95a37c72243ca98248818f9cf3588231fb Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Thu, 30 Oct 2025 15:48:02 +0100 Subject: [PATCH 65/77] Update Solidity API documentation by removing outdated interfaces and adding new escrow facets --- docs/solidity/index.md | 328 ++++++++++++++++++++--------------------- 1 file changed, 164 insertions(+), 164 deletions(-) diff --git a/docs/solidity/index.md b/docs/solidity/index.md index d5a8ba44e..e4c58ad62 100644 --- a/docs/solidity/index.md +++ b/docs/solidity/index.md @@ -1,21 +1,5 @@ # Solidity API -## IexecInterfaceNative - -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in native mode. - -_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -## IexecInterfaceToken - -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in token mode. - -_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - ## IexecERC20Core ## IexecERC20Facet @@ -56,6 +40,112 @@ function increaseAllowance(address spender, uint256 addedValue) external returns function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) ``` +## IexecEscrowNativeFacet + +### receive + +```solidity +receive() external payable +``` + +### fallback + +```solidity +fallback() external payable +``` + +### deposit + +```solidity +function deposit() external payable returns (bool) +``` + +### depositFor + +```solidity +function depositFor(address target) external payable returns (bool) +``` + +### depositForArray + +```solidity +function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) +``` + +### withdraw + +```solidity +function withdraw(uint256 amount) external returns (bool) +``` + +### withdrawTo + +```solidity +function withdrawTo(uint256 amount, address target) external returns (bool) +``` + +### recover + +```solidity +function recover() external returns (uint256) +``` + +## IexecEscrowTokenFacet + +### receive + +```solidity +receive() external payable +``` + +### fallback + +```solidity +fallback() external payable +``` + +### deposit + +```solidity +function deposit(uint256 amount) external returns (bool) +``` + +### depositFor + +```solidity +function depositFor(uint256 amount, address target) external returns (bool) +``` + +### depositForArray + +```solidity +function depositForArray(uint256[] amounts, address[] targets) external returns (bool) +``` + +### withdraw + +```solidity +function withdraw(uint256 amount) external returns (bool) +``` + +### withdrawTo + +```solidity +function withdrawTo(uint256 amount, address target) external returns (bool) +``` + +### recover + +```solidity +function recover() external returns (uint256) +``` + +### receiveApproval + +```solidity +function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) +``` + ## IexecLibCore_v5 ### Account @@ -244,6 +334,64 @@ struct Contribution { } ``` +## PocoStorageLib + +### PocoStorage + +```solidity +struct PocoStorage { + contract IRegistry m_appregistry; + contract IRegistry m_datasetregistry; + contract IRegistry m_workerpoolregistry; + contract IERC20 m_baseToken; + string m_name; + string m_symbol; + uint8 m_decimals; + uint256 m_totalSupply; + mapping(address => uint256) m_balances; + mapping(address => uint256) m_frozens; + mapping(address => mapping(address => uint256)) m_allowances; + bytes32 m_eip712DomainSeparator; + mapping(bytes32 => address) m_presigned; + mapping(bytes32 => uint256) m_consumed; + mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; + mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; + mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; + mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; + mapping(address => uint256) m_workerScores; + address m_teebroker; + uint256 m_callbackgas; + struct IexecLibCore_v5.Category[] m_categories; + contract IexecHubV3Interface m_v3_iexecHub; + mapping(address => bool) m_v3_scoreImported; + mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; +} +``` + +## IRegistry + +### isRegistered + +```solidity +function isRegistered(address _entry) external view returns (bool) +``` + +## IexecInterfaceNative + +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in native mode. + +_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +## IexecInterfaceToken + +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in token mode. + +_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + ## IexecLibOrders_v5 ### EIP712DOMAIN_TYPEHASH @@ -487,48 +635,6 @@ function hash(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorder function hash(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) public pure returns (bytes32) ``` -## PocoStorageLib - -### PocoStorage - -```solidity -struct PocoStorage { - contract IRegistry m_appregistry; - contract IRegistry m_datasetregistry; - contract IRegistry m_workerpoolregistry; - contract IERC20 m_baseToken; - string m_name; - string m_symbol; - uint8 m_decimals; - uint256 m_totalSupply; - mapping(address => uint256) m_balances; - mapping(address => uint256) m_frozens; - mapping(address => mapping(address => uint256)) m_allowances; - bytes32 m_eip712DomainSeparator; - mapping(bytes32 => address) m_presigned; - mapping(bytes32 => uint256) m_consumed; - mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; - mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; - mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; - mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; - mapping(address => uint256) m_workerScores; - address m_teebroker; - uint256 m_callbackgas; - struct IexecLibCore_v5.Category[] m_categories; - contract IexecHubV3Interface m_v3_iexecHub; - mapping(address => bool) m_v3_scoreImported; - mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; -} -``` - -## IRegistry - -### isRegistered - -```solidity -function isRegistered(address _entry) external view returns (bool) -``` - ## IexecCategoryManagerFacet ### createCategory @@ -617,112 +723,6 @@ event Reward(address owner, uint256 amount, bytes32 ref) event Seize(address owner, uint256 amount, bytes32 ref) ``` -## IexecEscrowNativeFacet - -### receive - -```solidity -receive() external payable -``` - -### fallback - -```solidity -fallback() external payable -``` - -### deposit - -```solidity -function deposit() external payable returns (bool) -``` - -### depositFor - -```solidity -function depositFor(address target) external payable returns (bool) -``` - -### depositForArray - -```solidity -function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) -``` - -### withdraw - -```solidity -function withdraw(uint256 amount) external returns (bool) -``` - -### withdrawTo - -```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) -``` - -### recover - -```solidity -function recover() external returns (uint256) -``` - -## IexecEscrowTokenFacet - -### receive - -```solidity -receive() external payable -``` - -### fallback - -```solidity -fallback() external payable -``` - -### deposit - -```solidity -function deposit(uint256 amount) external returns (bool) -``` - -### depositFor - -```solidity -function depositFor(uint256 amount, address target) external returns (bool) -``` - -### depositForArray - -```solidity -function depositForArray(uint256[] amounts, address[] targets) external returns (bool) -``` - -### withdraw - -```solidity -function withdraw(uint256 amount) external returns (bool) -``` - -### withdrawTo - -```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) -``` - -### recover - -```solidity -function recover() external returns (uint256) -``` - -### receiveApproval - -```solidity -function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) -``` - ## IexecOrderManagementFacet ### manageAppOrder From fcbeb750365162863611a531f5aed549a72f3e44 Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Thu, 30 Oct 2025 15:49:39 +0100 Subject: [PATCH 66/77] Refactor _transferUnchecked function to improve readability by clarifying balance retrieval --- contracts/facets/IexecERC20Core.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/facets/IexecERC20Core.sol b/contracts/facets/IexecERC20Core.sol index 5776389a7..6f44d11b3 100644 --- a/contracts/facets/IexecERC20Core.sol +++ b/contracts/facets/IexecERC20Core.sol @@ -12,7 +12,7 @@ contract IexecERC20Core is IexecERC20Common, FacetBase { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); PocoStorageLib.PocoStorage storage $ = PocoStorageLib.getPocoStorage(); - uint256 senderBalance = $.m_balances[sender]; // Read balance once + uint256 senderBalance = $.m_balances[sender]; // TEMPORARY MIGRATION FIX: Check balance to prevent underflow and revert without reason for backward compatibility // TODO: Remove this in the next major version if (senderBalance < amount) { From 6415a36dfd064ca033881d3b02da8438360e8c24 Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Fri, 31 Oct 2025 14:53:33 +0100 Subject: [PATCH 67/77] Refactor contract creation process in Registry and derived contracts to streamline deployment by consolidating migration checks into _mintCreate function. This change enhances backward compatibility and prepares for future updates. --- contracts/registries/Registry.sol | 8 +++++++- contracts/registries/apps/AppRegistry.sol | 8 +------- contracts/registries/datasets/DatasetRegistry.sol | 8 +------- contracts/registries/workerpools/WorkerpoolRegistry.sol | 8 +------- 4 files changed, 10 insertions(+), 22 deletions(-) diff --git a/contracts/registries/Registry.sol b/contracts/registries/Registry.sol index c614af9bc..6ca399128 100644 --- a/contracts/registries/Registry.sol +++ b/contracts/registries/Registry.sol @@ -77,8 +77,14 @@ abstract contract Registry is IRegistry, ERC721Enumerable, Ownable { /* Factory */ function _mintCreate(address _owner, bytes memory _args) internal returns (address) { + // TEMPORARY MIGRATION FIX: Check if contract already exists to revert without custom error for backward compatibility + // TODO: Remove this in the next major version + address entry = _mintPredict(_owner, _args); + if (entry.code.length > 0) { + revert("Create2: Failed on deploy"); + } // Create entry (proxy) - address entry = Create2.deploy(0, keccak256(abi.encodePacked(_args, _owner)), proxyCode); + entry = Create2.deploy(0, keccak256(abi.encodePacked(_args, _owner)), proxyCode); InitializableUpgradeabilityProxy(payable(entry)).initialize(master, _args); // Mint corresponding token _mint(_owner, uint256(uint160(entry))); diff --git a/contracts/registries/apps/AppRegistry.sol b/contracts/registries/apps/AppRegistry.sol index 8030eeaeb..c05a9b636 100644 --- a/contracts/registries/apps/AppRegistry.sol +++ b/contracts/registries/apps/AppRegistry.sol @@ -52,13 +52,7 @@ contract AppRegistry is Registry { _appChecksum, _appMREnclave ); - address entry = _mintPredict(_appOwner, initializer); - // TEMPORARY MIGRATION FIX: Check if contract already exists to revert without custom error for backward compatibility - // TODO: Remove this in the next major version - if (entry.code.length > 0) { - revert("Create2: Failed on deploy"); - } - _mintCreate(_appOwner, initializer); + address entry = _mintCreate(_appOwner, initializer); return App(entry); } diff --git a/contracts/registries/datasets/DatasetRegistry.sol b/contracts/registries/datasets/DatasetRegistry.sol index d4a31aac2..9dfc65d45 100644 --- a/contracts/registries/datasets/DatasetRegistry.sol +++ b/contracts/registries/datasets/DatasetRegistry.sol @@ -46,13 +46,7 @@ contract DatasetRegistry is Registry { _datasetMultiaddr, _datasetChecksum ); - address entry = _mintPredict(_datasetOwner, initializer); - // TEMPORARY MIGRATION FIX: Check if contract already exists to revert without custom error for backward compatibility - // TODO: Remove this in the next major version - if (entry.code.length > 0) { - revert("Create2: Failed on deploy"); - } - _mintCreate(_datasetOwner, initializer); + address entry = _mintCreate(_datasetOwner, initializer); return Dataset(entry); } diff --git a/contracts/registries/workerpools/WorkerpoolRegistry.sol b/contracts/registries/workerpools/WorkerpoolRegistry.sol index 575f1e60a..182c5a455 100644 --- a/contracts/registries/workerpools/WorkerpoolRegistry.sol +++ b/contracts/registries/workerpools/WorkerpoolRegistry.sol @@ -32,13 +32,7 @@ contract WorkerpoolRegistry is Registry { string calldata _workerpoolDescription ) external returns (Workerpool) { bytes memory initializer = encodeInitializer(_workerpoolDescription); - address entry = _mintPredict(_workerpoolOwner, initializer); - // TEMPORARY MIGRATION FIX: Check if contract already exists to revert without custom error for backward compatibility - // TODO: Remove this in the next major version - if (entry.code.length > 0) { - revert("Create2: Failed on deploy"); - } - _mintCreate(_workerpoolOwner, initializer); + address entry = _mintCreate(_workerpoolOwner, initializer); return Workerpool(entry); } From 8764fd75fa7bf04b08babdcff13ac5a12bb2c0af Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Fri, 31 Oct 2025 14:53:43 +0100 Subject: [PATCH 68/77] Refactor Solidity API documentation to introduce new registry and dataset structures, update function signatures, and enhance clarity by removing outdated interfaces. This update includes the addition of new methods for managing categories, datasets, and worker pools, ensuring better organization and maintainability. --- docs/solidity/index.md | 1454 ++++++++++++++++++---------------------- 1 file changed, 649 insertions(+), 805 deletions(-) diff --git a/docs/solidity/index.md b/docs/solidity/index.md index e4c58ad62..b5f389573 100644 --- a/docs/solidity/index.md +++ b/docs/solidity/index.md @@ -1,379 +1,380 @@ # Solidity API -## IexecERC20Core - -## IexecERC20Facet +## IRegistry -### transfer +### isRegistered ```solidity -function transfer(address recipient, uint256 amount) external returns (bool) +function isRegistered(address _entry) external view returns (bool) ``` -### approve +## Registry + +### master ```solidity -function approve(address spender, uint256 value) external returns (bool) +address master ``` -### approveAndCall +### proxyCode ```solidity -function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) +bytes proxyCode ``` -### transferFrom +### proxyCodeHash ```solidity -function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) +bytes32 proxyCodeHash ``` -### increaseAllowance +### previous ```solidity -function increaseAllowance(address spender, uint256 addedValue) external returns (bool) +contract IRegistry previous ``` -### decreaseAllowance +### initialized ```solidity -function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) +bool initialized ``` -## IexecEscrowNativeFacet - -### receive +### initialize ```solidity -receive() external payable +function initialize(address _previous) external ``` -### fallback +### setBaseURI ```solidity -fallback() external payable +function setBaseURI(string baseUri) external ``` -### deposit +### baseURI ```solidity -function deposit() external payable returns (bool) +function baseURI() public view returns (string) ``` -### depositFor +_Added for retrocompatibility! + +Returns the base URI set via {setBaseURI}. This will be +automatically added as a prefix in {tokenURI} to each token's ID._ + +### isRegistered ```solidity -function depositFor(address target) external payable returns (bool) +function isRegistered(address _entry) external view returns (bool) ``` -### depositForArray +### setName ```solidity -function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) +function setName(address, string) external ``` -### withdraw +Sets the reverse registration name for a registry contract. + +_This functionality is supported only on Bellecour Sidechain, calls on other chains +will revert. The function is kept as nonpayable to maintain retrocompatibility with the +iExec SDK._ + +## RegistryEntry + +_Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### registry ```solidity -function withdraw(uint256 amount) external returns (bool) +contract IRegistry registry ``` -### withdrawTo +### owner ```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) +function owner() public view returns (address) ``` -### recover +### setName ```solidity -function recover() external returns (uint256) +function setName(address, string) external ``` -## IexecEscrowTokenFacet +Sets the reverse registration name for a registry entry contract. -### receive +_This functionality is supported only on Bellecour Sidechain, calls on other chains +will revert. The function is kept as nonpayable to maintain retrocompatibility with the +iExec SDK._ + +## App + +_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### m_appName ```solidity -receive() external payable +string m_appName ``` -### fallback +Members + +### m_appType ```solidity -fallback() external payable +string m_appType ``` -### deposit +### m_appMultiaddr ```solidity -function deposit(uint256 amount) external returns (bool) +bytes m_appMultiaddr ``` -### depositFor +### m_appChecksum ```solidity -function depositFor(uint256 amount, address target) external returns (bool) +bytes32 m_appChecksum ``` -### depositForArray +### m_appMREnclave ```solidity -function depositForArray(uint256[] amounts, address[] targets) external returns (bool) +bytes m_appMREnclave ``` -### withdraw +### initialize ```solidity -function withdraw(uint256 amount) external returns (bool) +function initialize(string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) public ``` -### withdrawTo +Constructor + +## AppRegistry + +_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### constructor ```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) +constructor() public ``` -### recover +Constructor + +### createApp ```solidity -function recover() external returns (uint256) +function createApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external returns (contract App) ``` -### receiveApproval +### predictApp ```solidity -function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) +function predictApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external view returns (contract App) ``` -## IexecLibCore_v5 +## Dataset -### Account +_Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -Tools +### m_datasetName ```solidity -struct Account { - uint256 stake; - uint256 locked; -} +string m_datasetName ``` -### Category +Members + +### m_datasetMultiaddr ```solidity -struct Category { - string name; - string description; - uint256 workClockTimeRef; -} +bytes m_datasetMultiaddr ``` -### DatasetInfo +### m_datasetChecksum ```solidity -struct DatasetInfo { - address owner; - string m_datasetName; - bytes m_datasetMultiaddr; - bytes32 m_datasetChecksum; -} +bytes32 m_datasetChecksum ``` -### AppInfo +### initialize ```solidity -struct AppInfo { - address owner; - string m_appName; - string m_appType; - bytes m_appMultiaddr; - bytes32 m_appChecksum; - bytes m_appMREnclave; -} +function initialize(string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) public ``` -### WorkerpoolInfo +Constructor + +## DatasetRegistry + +_Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### constructor ```solidity -struct WorkerpoolInfo { - address owner; - string m_workerpoolDescription; - uint256 m_workerStakeRatioPolicy; - uint256 m_schedulerRewardRatioPolicy; -} +constructor() public ``` -### Resource +Constructor -Clerk - Deals +### createDataset ```solidity -struct Resource { - address pointer; - address owner; - uint256 price; -} +function createDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external returns (contract Dataset) ``` -### Deal +### predictDataset ```solidity -struct Deal { - struct IexecLibCore_v5.Resource app; - struct IexecLibCore_v5.Resource dataset; - struct IexecLibCore_v5.Resource workerpool; - uint256 trust; - uint256 category; - bytes32 tag; - address requester; - address beneficiary; - address callback; - string params; - uint256 startTime; - uint256 botFirst; - uint256 botSize; - uint256 workerStake; - uint256 schedulerRewardRatio; - address sponsor; -} +function predictDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external view returns (contract Dataset) ``` -### DealBoost +## Address -Simplified deals for PoCo Boost module. +## BaseUpgradeabilityProxy + +_This contract implements a proxy that allows to change the +implementation address to which it will delegate. +Such a change is called an implementation upgrade._ + +### Upgraded ```solidity -struct DealBoost { - address appOwner; - uint96 appPrice; - address datasetOwner; - uint96 datasetPrice; - address workerpoolOwner; - uint96 workerpoolPrice; - address requester; - uint96 workerReward; - address callback; - uint40 deadline; - uint16 botFirst; - uint16 botSize; - bytes3 shortTag; - address sponsor; -} +event Upgraded(address implementation) ``` -### TaskStatusEnum +_Emitted when the implementation is upgraded._ -Tasks +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| implementation | address | Address of the new implementation. | + +## InitializableUpgradeabilityProxy + +_Extends BaseUpgradeabilityProxy with an initializer for initializing +implementation and init data._ + +### initialize ```solidity -enum TaskStatusEnum { - UNSET, - ACTIVE, - REVEALING, - COMPLETED, - FAILED -} +function initialize(address _logic, bytes _data) public payable ``` -### Task +_Contract initializer._ + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| _logic | address | Address of the initial implementation. | +| _data | bytes | Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. | + +## Proxy + +_Implements delegation of calls to other contracts, with proper +forwarding of return values and bubbling of failures. +It defines a fallback function that delegates all calls to the address +returned by the abstract _implementation() internal function._ + +### receive ```solidity -struct Task { - enum IexecLibCore_v5.TaskStatusEnum status; - bytes32 dealid; - uint256 idx; - uint256 timeref; - uint256 contributionDeadline; - uint256 revealDeadline; - uint256 finalDeadline; - bytes32 consensusValue; - uint256 revealCounter; - uint256 winnerCounter; - address[] contributors; - bytes32 resultDigest; - bytes results; - uint256 resultsTimestamp; - bytes resultsCallback; -} +receive() external payable virtual ``` -### Consensus +_Receive function. +Implemented entirely in `_fallback`._ -Consensus +### fallback ```solidity -struct Consensus { - mapping(bytes32 => uint256) group; - uint256 total; -} +fallback() external payable ``` -### ContributionStatusEnum +_Fallback function. +Implemented entirely in `_fallback`._ -Consensus +## Workerpool + +_Referenced in the SDK with the current path `contracts/registries/workerpools/Workerpool.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### m_workerpoolDescription ```solidity -enum ContributionStatusEnum { - UNSET, - CONTRIBUTED, - PROVED, - REJECTED -} +string m_workerpoolDescription ``` -### Contribution +Parameters + +### m_workerStakeRatioPolicy ```solidity -struct Contribution { - enum IexecLibCore_v5.ContributionStatusEnum status; - bytes32 resultHash; - bytes32 resultSeal; - address enclaveChallenge; - uint256 weight; -} +uint256 m_workerStakeRatioPolicy ``` -## PocoStorageLib +### m_schedulerRewardRatioPolicy -### PocoStorage +```solidity +uint256 m_schedulerRewardRatioPolicy +``` + +### PolicyUpdate ```solidity -struct PocoStorage { - contract IRegistry m_appregistry; - contract IRegistry m_datasetregistry; - contract IRegistry m_workerpoolregistry; - contract IERC20 m_baseToken; - string m_name; - string m_symbol; - uint8 m_decimals; - uint256 m_totalSupply; - mapping(address => uint256) m_balances; - mapping(address => uint256) m_frozens; - mapping(address => mapping(address => uint256)) m_allowances; - bytes32 m_eip712DomainSeparator; - mapping(bytes32 => address) m_presigned; - mapping(bytes32 => uint256) m_consumed; - mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; - mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; - mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; - mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; - mapping(address => uint256) m_workerScores; - address m_teebroker; - uint256 m_callbackgas; - struct IexecLibCore_v5.Category[] m_categories; - contract IexecHubV3Interface m_v3_iexecHub; - mapping(address => bool) m_v3_scoreImported; - mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; -} +event PolicyUpdate(uint256 oldWorkerStakeRatioPolicy, uint256 newWorkerStakeRatioPolicy, uint256 oldSchedulerRewardRatioPolicy, uint256 newSchedulerRewardRatioPolicy) ``` -## IRegistry +Events -### isRegistered +### initialize ```solidity -function isRegistered(address _entry) external view returns (bool) +function initialize(string _workerpoolDescription) public +``` + +Constructor + +### changePolicy + +```solidity +function changePolicy(uint256 _newWorkerStakeRatioPolicy, uint256 _newSchedulerRewardRatioPolicy) external +``` + +## WorkerpoolRegistry + +_Referenced in the SDK with the current path `contracts/registries/workerpools/WorkerpoolRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### constructor + +```solidity +constructor() public +``` + +Constructor + +### createWorkerpool + +```solidity +function createWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external returns (contract Workerpool) +``` + +### predictWorkerpool + +```solidity +function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) ``` ## IexecInterfaceNative @@ -392,335 +393,238 @@ the PoCo contracts in token mode. _Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. Changing the name or the path would cause a breaking change in the SDK._ -## IexecLibOrders_v5 +## IexecCategoryManagerFacet -### EIP712DOMAIN_TYPEHASH +### createCategory ```solidity -bytes32 EIP712DOMAIN_TYPEHASH +function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) ``` -### APPORDER_TYPEHASH +Methods + +## IexecConfigurationExtraFacet + +### changeRegistries ```solidity -bytes32 APPORDER_TYPEHASH +function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external ``` -### DATASETORDER_TYPEHASH +## IexecConfigurationFacet + +### configure ```solidity -bytes32 DATASETORDER_TYPEHASH +function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external ``` -### WORKERPOOLORDER_TYPEHASH +### domain ```solidity -bytes32 WORKERPOOLORDER_TYPEHASH +function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) ``` -### REQUESTORDER_TYPEHASH +### updateDomainSeparator ```solidity -bytes32 REQUESTORDER_TYPEHASH +function updateDomainSeparator() external ``` -### APPORDEROPERATION_TYPEHASH +### importScore ```solidity -bytes32 APPORDEROPERATION_TYPEHASH +function importScore(address _worker) external ``` -### DATASETORDEROPERATION_TYPEHASH +### setTeeBroker ```solidity -bytes32 DATASETORDEROPERATION_TYPEHASH +function setTeeBroker(address _teebroker) external ``` -### WORKERPOOLORDEROPERATION_TYPEHASH +### setCallbackGas ```solidity -bytes32 WORKERPOOLORDEROPERATION_TYPEHASH +function setCallbackGas(uint256 _callbackgas) external ``` -### REQUESTORDEROPERATION_TYPEHASH +## IexecERC20Core + +## IexecERC20Facet + +### transfer ```solidity -bytes32 REQUESTORDEROPERATION_TYPEHASH +function transfer(address recipient, uint256 amount) external returns (bool) ``` -### OrderOperationEnum +### approve ```solidity -enum OrderOperationEnum { - SIGN, - CLOSE -} +function approve(address spender, uint256 value) external returns (bool) ``` -### EIP712Domain +### approveAndCall ```solidity -struct EIP712Domain { - string name; - string version; - uint256 chainId; - address verifyingContract; -} +function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) ``` -### AppOrder +### transferFrom ```solidity -struct AppOrder { - address app; - uint256 appprice; - uint256 volume; - bytes32 tag; - address datasetrestrict; - address workerpoolrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) ``` -### DatasetOrder +### increaseAllowance ```solidity -struct DatasetOrder { - address dataset; - uint256 datasetprice; - uint256 volume; - bytes32 tag; - address apprestrict; - address workerpoolrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} -``` - -### WorkerpoolOrder - -```solidity -struct WorkerpoolOrder { - address workerpool; - uint256 workerpoolprice; - uint256 volume; - bytes32 tag; - uint256 category; - uint256 trust; - address apprestrict; - address datasetrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} -``` - -### RequestOrder - -```solidity -struct RequestOrder { - address app; - uint256 appmaxprice; - address dataset; - uint256 datasetmaxprice; - address workerpool; - uint256 workerpoolmaxprice; - address requester; - uint256 volume; - bytes32 tag; - uint256 category; - uint256 trust; - address beneficiary; - address callback; - string params; - bytes32 salt; - bytes sign; -} +function increaseAllowance(address spender, uint256 addedValue) external returns (bool) ``` -### AppOrderOperation +### decreaseAllowance ```solidity -struct AppOrderOperation { - struct IexecLibOrders_v5.AppOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) ``` -### DatasetOrderOperation - -```solidity -struct DatasetOrderOperation { - struct IexecLibOrders_v5.DatasetOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} -``` +## IexecEscrow -### WorkerpoolOrderOperation +### Transfer ```solidity -struct WorkerpoolOrderOperation { - struct IexecLibOrders_v5.WorkerpoolOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +event Transfer(address from, address to, uint256 value) ``` -### RequestOrderOperation +### Lock ```solidity -struct RequestOrderOperation { - struct IexecLibOrders_v5.RequestOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +event Lock(address owner, uint256 amount) ``` -### hash +### Unlock ```solidity -function hash(struct IexecLibOrders_v5.EIP712Domain _domain) public pure returns (bytes32 domainhash) +event Unlock(address owner, uint256 amount) ``` -### hash +### Reward ```solidity -function hash(struct IexecLibOrders_v5.AppOrder _apporder) public pure returns (bytes32 apphash) +event Reward(address owner, uint256 amount, bytes32 ref) ``` -### hash +### Seize ```solidity -function hash(struct IexecLibOrders_v5.DatasetOrder _datasetorder) public pure returns (bytes32 datasethash) +event Seize(address owner, uint256 amount, bytes32 ref) ``` -### hash - -```solidity -function hash(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) public pure returns (bytes32 workerpoolhash) -``` +## IexecEscrowNativeFacet -### hash +### receive ```solidity -function hash(struct IexecLibOrders_v5.RequestOrder _requestorder) public pure returns (bytes32 requesthash) +receive() external payable ``` -### hash +### fallback ```solidity -function hash(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) public pure returns (bytes32) +fallback() external payable ``` -### hash +### deposit ```solidity -function hash(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) public pure returns (bytes32) +function deposit() external payable returns (bool) ``` -### hash +### depositFor ```solidity -function hash(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) public pure returns (bytes32) +function depositFor(address target) external payable returns (bool) ``` -### hash +### depositForArray ```solidity -function hash(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) public pure returns (bytes32) +function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) ``` -## IexecCategoryManagerFacet - -### createCategory +### withdraw ```solidity -function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) +function withdraw(uint256 amount) external returns (bool) ``` -Methods - -## IexecConfigurationExtraFacet - -### changeRegistries +### withdrawTo ```solidity -function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external +function withdrawTo(uint256 amount, address target) external returns (bool) ``` -## IexecConfigurationFacet - -### configure +### recover ```solidity -function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external +function recover() external returns (uint256) ``` -### domain - -```solidity -function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) -``` +## IexecEscrowTokenFacet -### updateDomainSeparator +### receive ```solidity -function updateDomainSeparator() external +receive() external payable ``` -### importScore +### fallback ```solidity -function importScore(address _worker) external +fallback() external payable ``` -### setTeeBroker +### deposit ```solidity -function setTeeBroker(address _teebroker) external +function deposit(uint256 amount) external returns (bool) ``` -### setCallbackGas +### depositFor ```solidity -function setCallbackGas(uint256 _callbackgas) external +function depositFor(uint256 amount, address target) external returns (bool) ``` -## IexecEscrow - -### Transfer +### depositForArray ```solidity -event Transfer(address from, address to, uint256 value) +function depositForArray(uint256[] amounts, address[] targets) external returns (bool) ``` -### Lock +### withdraw ```solidity -event Lock(address owner, uint256 amount) +function withdraw(uint256 amount) external returns (bool) ``` -### Unlock +### withdrawTo ```solidity -event Unlock(address owner, uint256 amount) +function withdrawTo(uint256 amount, address target) external returns (bool) ``` -### Reward +### recover ```solidity -event Reward(address owner, uint256 amount, bytes32 ref) +function recover() external returns (uint256) ``` -### Seize +### receiveApproval ```solidity -event Seize(address owner, uint256 amount, bytes32 ref) +function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) ``` ## IexecOrderManagementFacet @@ -1303,578 +1207,436 @@ function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _work function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external ``` -## Registry - -### master +## IexecLibCore_v5 -```solidity -address master -``` +### Account -### proxyCode +Tools ```solidity -bytes proxyCode +struct Account { + uint256 stake; + uint256 locked; +} ``` -### proxyCodeHash +### Category ```solidity -bytes32 proxyCodeHash +struct Category { + string name; + string description; + uint256 workClockTimeRef; +} ``` -### previous +### DatasetInfo ```solidity -contract IRegistry previous +struct DatasetInfo { + address owner; + string m_datasetName; + bytes m_datasetMultiaddr; + bytes32 m_datasetChecksum; +} ``` -### initialized +### AppInfo ```solidity -bool initialized +struct AppInfo { + address owner; + string m_appName; + string m_appType; + bytes m_appMultiaddr; + bytes32 m_appChecksum; + bytes m_appMREnclave; +} ``` -### initialize +### WorkerpoolInfo ```solidity -function initialize(address _previous) external +struct WorkerpoolInfo { + address owner; + string m_workerpoolDescription; + uint256 m_workerStakeRatioPolicy; + uint256 m_schedulerRewardRatioPolicy; +} ``` -### setBaseURI - -```solidity -function setBaseURI(string baseUri) external -``` +### Resource -### baseURI +Clerk - Deals ```solidity -function baseURI() public view returns (string) +struct Resource { + address pointer; + address owner; + uint256 price; +} ``` -_Added for retrocompatibility! - -Returns the base URI set via {setBaseURI}. This will be -automatically added as a prefix in {tokenURI} to each token's ID._ - -### isRegistered - -```solidity -function isRegistered(address _entry) external view returns (bool) -``` - -### setName - -```solidity -function setName(address, string) external -``` - -Sets the reverse registration name for a registry contract. - -_This functionality is supported only on Bellecour Sidechain, calls on other chains -will revert. The function is kept as nonpayable to maintain retrocompatibility with the -iExec SDK._ - -## RegistryEntry - -_Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### registry - -```solidity -contract IRegistry registry -``` - -### owner - -```solidity -function owner() public view returns (address) -``` - -### setName - -```solidity -function setName(address, string) external -``` - -Sets the reverse registration name for a registry entry contract. - -_This functionality is supported only on Bellecour Sidechain, calls on other chains -will revert. The function is kept as nonpayable to maintain retrocompatibility with the -iExec SDK._ - -## App - -_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### m_appName - -```solidity -string m_appName -``` - -Members - -### m_appType - -```solidity -string m_appType -``` - -### m_appMultiaddr - -```solidity -bytes m_appMultiaddr -``` - -### m_appChecksum - -```solidity -bytes32 m_appChecksum -``` - -### m_appMREnclave - -```solidity -bytes m_appMREnclave -``` - -### initialize - -```solidity -function initialize(string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) public -``` - -Constructor - -## AppRegistry - -_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### constructor - -```solidity -constructor() public -``` - -Constructor - -### createApp - -```solidity -function createApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external returns (contract App) -``` - -### predictApp - -```solidity -function predictApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external view returns (contract App) -``` - -## IApp - -### owner - -```solidity -function owner() external view returns (address) -``` - -### m_appName - -```solidity -function m_appName() external view returns (string) -``` - -### m_appType - -```solidity -function m_appType() external view returns (string) -``` - -### m_appMultiaddr - -```solidity -function m_appMultiaddr() external view returns (bytes) -``` - -### m_appChecksum - -```solidity -function m_appChecksum() external view returns (bytes32) -``` - -### m_appMREnclave - -```solidity -function m_appMREnclave() external view returns (bytes) -``` - -## Dataset - -_Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### m_datasetName - -```solidity -string m_datasetName -``` - -Members - -### m_datasetMultiaddr - -```solidity -bytes m_datasetMultiaddr -``` - -### m_datasetChecksum - -```solidity -bytes32 m_datasetChecksum -``` - -### initialize - -```solidity -function initialize(string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) public -``` - -Constructor - -## DatasetRegistry - -_Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### constructor - -```solidity -constructor() public -``` - -Constructor - -### createDataset - -```solidity -function createDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external returns (contract Dataset) -``` - -### predictDataset - -```solidity -function predictDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external view returns (contract Dataset) -``` - -## IDataset - -### owner - -```solidity -function owner() external view returns (address) -``` - -### m_datasetName +### Deal ```solidity -function m_datasetName() external view returns (string) -``` - -### m_datasetMultiaddr - -```solidity -function m_datasetMultiaddr() external view returns (bytes) -``` - -### m_datasetChecksum - -```solidity -function m_datasetChecksum() external view returns (bytes32) -``` - -## Address - -## BaseUpgradeabilityProxy - -_This contract implements a proxy that allows to change the -implementation address to which it will delegate. -Such a change is called an implementation upgrade._ - -### Upgraded - -```solidity -event Upgraded(address implementation) +struct Deal { + struct IexecLibCore_v5.Resource app; + struct IexecLibCore_v5.Resource dataset; + struct IexecLibCore_v5.Resource workerpool; + uint256 trust; + uint256 category; + bytes32 tag; + address requester; + address beneficiary; + address callback; + string params; + uint256 startTime; + uint256 botFirst; + uint256 botSize; + uint256 workerStake; + uint256 schedulerRewardRatio; + address sponsor; +} ``` -_Emitted when the implementation is upgraded._ - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| implementation | address | Address of the new implementation. | - -## InitializableUpgradeabilityProxy - -_Extends BaseUpgradeabilityProxy with an initializer for initializing -implementation and init data._ +### DealBoost -### initialize +Simplified deals for PoCo Boost module. ```solidity -function initialize(address _logic, bytes _data) public payable +struct DealBoost { + address appOwner; + uint96 appPrice; + address datasetOwner; + uint96 datasetPrice; + address workerpoolOwner; + uint96 workerpoolPrice; + address requester; + uint96 workerReward; + address callback; + uint40 deadline; + uint16 botFirst; + uint16 botSize; + bytes3 shortTag; + address sponsor; +} ``` -_Contract initializer._ - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| _logic | address | Address of the initial implementation. | -| _data | bytes | Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. | - -## Proxy - -_Implements delegation of calls to other contracts, with proper -forwarding of return values and bubbling of failures. -It defines a fallback function that delegates all calls to the address -returned by the abstract _implementation() internal function._ +### TaskStatusEnum -### receive +Tasks ```solidity -receive() external payable virtual +enum TaskStatusEnum { + UNSET, + ACTIVE, + REVEALING, + COMPLETED, + FAILED +} ``` -_Receive function. -Implemented entirely in `_fallback`._ - -### fallback +### Task ```solidity -fallback() external payable +struct Task { + enum IexecLibCore_v5.TaskStatusEnum status; + bytes32 dealid; + uint256 idx; + uint256 timeref; + uint256 contributionDeadline; + uint256 revealDeadline; + uint256 finalDeadline; + bytes32 consensusValue; + uint256 revealCounter; + uint256 winnerCounter; + address[] contributors; + bytes32 resultDigest; + bytes results; + uint256 resultsTimestamp; + bytes resultsCallback; +} ``` -_Fallback function. -Implemented entirely in `_fallback`._ - -## IWorkerpool - -### owner - -```solidity -function owner() external view returns (address) -``` +### Consensus -### m_workerpoolDescription +Consensus ```solidity -function m_workerpoolDescription() external view returns (string) +struct Consensus { + mapping(bytes32 => uint256) group; + uint256 total; +} ``` -### m_schedulerRewardRatioPolicy - -```solidity -function m_schedulerRewardRatioPolicy() external view returns (uint256) -``` +### ContributionStatusEnum -### m_workerStakeRatioPolicy +Consensus ```solidity -function m_workerStakeRatioPolicy() external view returns (uint256) +enum ContributionStatusEnum { + UNSET, + CONTRIBUTED, + PROVED, + REJECTED +} ``` -## Workerpool - -_Referenced in the SDK with the current path `contracts/registries/workerpools/Workerpool.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### m_workerpoolDescription +### Contribution ```solidity -string m_workerpoolDescription +struct Contribution { + enum IexecLibCore_v5.ContributionStatusEnum status; + bytes32 resultHash; + bytes32 resultSeal; + address enclaveChallenge; + uint256 weight; +} ``` -Parameters +## IexecLibOrders_v5 -### m_workerStakeRatioPolicy +### EIP712DOMAIN_TYPEHASH ```solidity -uint256 m_workerStakeRatioPolicy +bytes32 EIP712DOMAIN_TYPEHASH ``` -### m_schedulerRewardRatioPolicy +### APPORDER_TYPEHASH ```solidity -uint256 m_schedulerRewardRatioPolicy +bytes32 APPORDER_TYPEHASH ``` -### PolicyUpdate +### DATASETORDER_TYPEHASH ```solidity -event PolicyUpdate(uint256 oldWorkerStakeRatioPolicy, uint256 newWorkerStakeRatioPolicy, uint256 oldSchedulerRewardRatioPolicy, uint256 newSchedulerRewardRatioPolicy) +bytes32 DATASETORDER_TYPEHASH ``` -Events - -### initialize +### WORKERPOOLORDER_TYPEHASH ```solidity -function initialize(string _workerpoolDescription) public +bytes32 WORKERPOOLORDER_TYPEHASH ``` -Constructor - -### changePolicy +### REQUESTORDER_TYPEHASH ```solidity -function changePolicy(uint256 _newWorkerStakeRatioPolicy, uint256 _newSchedulerRewardRatioPolicy) external +bytes32 REQUESTORDER_TYPEHASH ``` -## WorkerpoolRegistry +### APPORDEROPERATION_TYPEHASH -_Referenced in the SDK with the current path `contracts/registries/workerpools/WorkerpoolRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +bytes32 APPORDEROPERATION_TYPEHASH +``` -### constructor +### DATASETORDEROPERATION_TYPEHASH ```solidity -constructor() public +bytes32 DATASETORDEROPERATION_TYPEHASH ``` -Constructor - -### createWorkerpool +### WORKERPOOLORDEROPERATION_TYPEHASH ```solidity -function createWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external returns (contract Workerpool) +bytes32 WORKERPOOLORDEROPERATION_TYPEHASH ``` -### predictWorkerpool +### REQUESTORDEROPERATION_TYPEHASH ```solidity -function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) +bytes32 REQUESTORDEROPERATION_TYPEHASH ``` -## IexecEscrowTokenSwapFacet - -### UniswapV2Router +### OrderOperationEnum ```solidity -function UniswapV2Router() external view returns (contract IUniswapV2Router02) +enum OrderOperationEnum { + SIGN, + CLOSE +} ``` -### estimateDepositEthSent +### EIP712Domain ```solidity -function estimateDepositEthSent(uint256 eth) external view returns (uint256 token) +struct EIP712Domain { + string name; + string version; + uint256 chainId; + address verifyingContract; +} ``` -### estimateDepositTokenWanted +### AppOrder ```solidity -function estimateDepositTokenWanted(uint256 token) external view returns (uint256 eth) +struct AppOrder { + address app; + uint256 appprice; + uint256 volume; + bytes32 tag; + address datasetrestrict; + address workerpoolrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -### estimateWithdrawTokenSent +### DatasetOrder ```solidity -function estimateWithdrawTokenSent(uint256 token) external view returns (uint256 eth) +struct DatasetOrder { + address dataset; + uint256 datasetprice; + uint256 volume; + bytes32 tag; + address apprestrict; + address workerpoolrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -### estimateWithdrawEthWanted +### WorkerpoolOrder ```solidity -function estimateWithdrawEthWanted(uint256 eth) external view returns (uint256 token) +struct WorkerpoolOrder { + address workerpool; + uint256 workerpoolprice; + uint256 volume; + bytes32 tag; + uint256 category; + uint256 trust; + address apprestrict; + address datasetrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -### receive +### RequestOrder ```solidity -receive() external payable +struct RequestOrder { + address app; + uint256 appmaxprice; + address dataset; + uint256 datasetmaxprice; + address workerpool; + uint256 workerpoolmaxprice; + address requester; + uint256 volume; + bytes32 tag; + uint256 category; + uint256 trust; + address beneficiary; + address callback; + string params; + bytes32 salt; + bytes sign; +} ``` -### fallback +### AppOrderOperation ```solidity -fallback() external payable +struct AppOrderOperation { + struct IexecLibOrders_v5.AppOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -### depositEth +### DatasetOrderOperation ```solidity -function depositEth() external payable +struct DatasetOrderOperation { + struct IexecLibOrders_v5.DatasetOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -### depositEthFor +### WorkerpoolOrderOperation ```solidity -function depositEthFor(address target) external payable +struct WorkerpoolOrderOperation { + struct IexecLibOrders_v5.WorkerpoolOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -### safeDepositEth +### RequestOrderOperation ```solidity -function safeDepositEth(uint256 minimum) external payable +struct RequestOrderOperation { + struct IexecLibOrders_v5.RequestOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -### safeDepositEthFor +### hash ```solidity -function safeDepositEthFor(uint256 minimum, address target) external payable +function hash(struct IexecLibOrders_v5.EIP712Domain _domain) public pure returns (bytes32 domainhash) ``` -### requestToken +### hash ```solidity -function requestToken(uint256 amount) external payable +function hash(struct IexecLibOrders_v5.AppOrder _apporder) public pure returns (bytes32 apphash) ``` -### requestTokenFor +### hash ```solidity -function requestTokenFor(uint256 amount, address target) external payable +function hash(struct IexecLibOrders_v5.DatasetOrder _datasetorder) public pure returns (bytes32 datasethash) ``` -### withdrawEth +### hash ```solidity -function withdrawEth(uint256 amount) external +function hash(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) public pure returns (bytes32 workerpoolhash) ``` -### withdrawEthTo +### hash ```solidity -function withdrawEthTo(uint256 amount, address target) external +function hash(struct IexecLibOrders_v5.RequestOrder _requestorder) public pure returns (bytes32 requesthash) ``` -### safeWithdrawEth +### hash ```solidity -function safeWithdrawEth(uint256 amount, uint256 minimum) external +function hash(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) public pure returns (bytes32) ``` -### safeWithdrawEthTo +### hash ```solidity -function safeWithdrawEthTo(uint256 amount, uint256 minimum, address target) external +function hash(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) public pure returns (bytes32) ``` -### matchOrdersWithEth +### hash ```solidity -function matchOrdersWithEth(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) public payable returns (bytes32) +function hash(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) public pure returns (bytes32) ``` -## FacetBase +### hash -_Every facet must inherit from this contract._ +```solidity +function hash(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) public pure returns (bytes32) +``` ## PocoStorageLib @@ -1904,17 +1666,99 @@ struct PocoStorage { address m_teebroker; uint256 m_callbackgas; struct IexecLibCore_v5.Category[] m_categories; - address m_v3_iexecHub; + contract IexecHubV3Interface m_v3_iexecHub; mapping(address => bool) m_v3_scoreImported; mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; } ``` -## IRegistry +## IApp -### isRegistered +### owner ```solidity -function isRegistered(address _entry) external view returns (bool) +function owner() external view returns (address) +``` + +### m_appName + +```solidity +function m_appName() external view returns (string) +``` + +### m_appType + +```solidity +function m_appType() external view returns (string) +``` + +### m_appMultiaddr + +```solidity +function m_appMultiaddr() external view returns (bytes) +``` + +### m_appChecksum + +```solidity +function m_appChecksum() external view returns (bytes32) +``` + +### m_appMREnclave + +```solidity +function m_appMREnclave() external view returns (bytes) +``` + +## IDataset + +### owner + +```solidity +function owner() external view returns (address) +``` + +### m_datasetName + +```solidity +function m_datasetName() external view returns (string) +``` + +### m_datasetMultiaddr + +```solidity +function m_datasetMultiaddr() external view returns (bytes) +``` + +### m_datasetChecksum + +```solidity +function m_datasetChecksum() external view returns (bytes32) +``` + +## IWorkerpool + +### owner + +```solidity +function owner() external view returns (address) +``` + +### m_workerpoolDescription + +```solidity +function m_workerpoolDescription() external view returns (string) +``` + +### m_schedulerRewardRatioPolicy + +```solidity +function m_schedulerRewardRatioPolicy() external view returns (uint256) +``` + +### m_workerStakeRatioPolicy + +```solidity +function m_workerStakeRatioPolicy() external view returns (uint256) ``` From 5313d115e006d5003b25b3011364b65b074016df Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Fri, 31 Oct 2025 16:16:03 +0100 Subject: [PATCH 69/77] refactor: remove TimelockController and update import statements for consistency across multiple contracts --- abis/contracts/tools/TimelockController.json | 749 ------------------ .../interfaces/IexecAccessorsABILegacy.sol | 2 +- contracts/interfaces/IexecConfiguration.sol | 2 +- contracts/interfaces/IexecRelay.sol | 2 +- contracts/registries/Registry.sol | 2 +- contracts/registries/RegistryEntry.sol | 2 +- contracts/registries/apps/App.sol | 2 +- contracts/registries/apps/AppRegistry.sol | 4 +- contracts/registries/datasets/Dataset.sol | 2 +- .../registries/datasets/DatasetRegistry.sol | 4 +- .../proxy/BaseUpgradeabilityProxy.sol | 84 +- .../InitializableUpgradeabilityProxy.sol | 34 +- .../registries/workerpools/Workerpool.sol | 2 +- .../workerpools/WorkerpoolRegistry.sol | 4 +- contracts/tools/TimelockController.sol | 2 +- contracts/tools/testing/ERC1271Mock.sol | 2 +- contracts/tools/testing/OwnableMock.sol | 2 +- contracts/tools/testing/TestReceiver.sol | 2 +- hardhat.config.ts | 4 +- 19 files changed, 81 insertions(+), 826 deletions(-) delete mode 100644 abis/contracts/tools/TimelockController.json diff --git a/abis/contracts/tools/TimelockController.json b/abis/contracts/tools/TimelockController.json deleted file mode 100644 index 5f73f7a05..000000000 --- a/abis/contracts/tools/TimelockController.json +++ /dev/null @@ -1,749 +0,0 @@ -[ - { - "inputs": [ - { - "internalType": "uint256", - "name": "minDelay", - "type": "uint256" - }, - { - "internalType": "address[]", - "name": "administrators", - "type": "address[]" - }, - { - "internalType": "address[]", - "name": "proposers", - "type": "address[]" - }, - { - "internalType": "address[]", - "name": "executors", - "type": "address[]" - } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "inputs": [], - "name": "AccessControlBadConfirmation", - "type": "error" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "internalType": "bytes32", - "name": "neededRole", - "type": "bytes32" - } - ], - "name": "AccessControlUnauthorizedAccount", - "type": "error" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "index", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "data", - "type": "bytes" - } - ], - "name": "CallExecuted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "uint256", - "name": "index", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "indexed": false, - "internalType": "bytes32", - "name": "predecessor", - "type": "bytes32" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "delay", - "type": "uint256" - } - ], - "name": "CallScheduled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "name": "Cancelled", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "internalType": "uint256", - "name": "oldDuration", - "type": "uint256" - }, - { - "indexed": false, - "internalType": "uint256", - "name": "newDuration", - "type": "uint256" - } - ], - "name": "MinDelayChange", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "previousAdminRole", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "bytes32", - "name": "newAdminRole", - "type": "bytes32" - } - ], - "name": "RoleAdminChanged", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleGranted", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": true, - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "indexed": true, - "internalType": "address", - "name": "account", - "type": "address" - }, - { - "indexed": true, - "internalType": "address", - "name": "sender", - "type": "address" - } - ], - "name": "RoleRevoked", - "type": "event" - }, - { - "inputs": [], - "name": "DEFAULT_ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "EXECUTOR_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "PROPOSER_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "TIMELOCK_ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "name": "cancel", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "bytes32", - "name": "predecessor", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - } - ], - "name": "execute", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "targets", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "values", - "type": "uint256[]" - }, - { - "internalType": "bytes[]", - "name": "datas", - "type": "bytes[]" - }, - { - "internalType": "bytes32", - "name": "predecessor", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - } - ], - "name": "executeBatch", - "outputs": [], - "stateMutability": "payable", - "type": "function" - }, - { - "inputs": [], - "name": "getMinDelay", - "outputs": [ - { - "internalType": "uint256", - "name": "duration", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - } - ], - "name": "getRoleAdmin", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "name": "getTimestamp", - "outputs": [ - { - "internalType": "uint256", - "name": "timestamp", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "grantRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "hasRole", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "bytes32", - "name": "predecessor", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - } - ], - "name": "hashOperation", - "outputs": [ - { - "internalType": "bytes32", - "name": "hash", - "type": "bytes32" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "targets", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "values", - "type": "uint256[]" - }, - { - "internalType": "bytes[]", - "name": "datas", - "type": "bytes[]" - }, - { - "internalType": "bytes32", - "name": "predecessor", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - } - ], - "name": "hashOperationBatch", - "outputs": [ - { - "internalType": "bytes32", - "name": "hash", - "type": "bytes32" - } - ], - "stateMutability": "pure", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "name": "isOperationDone", - "outputs": [ - { - "internalType": "bool", - "name": "done", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "name": "isOperationPending", - "outputs": [ - { - "internalType": "bool", - "name": "pending", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "id", - "type": "bytes32" - } - ], - "name": "isOperationReady", - "outputs": [ - { - "internalType": "bool", - "name": "ready", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "callerConfirmation", - "type": "address" - } - ], - "name": "renounceRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes32", - "name": "role", - "type": "bytes32" - }, - { - "internalType": "address", - "name": "account", - "type": "address" - } - ], - "name": "revokeRole", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address", - "name": "target", - "type": "address" - }, - { - "internalType": "uint256", - "name": "value", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" - }, - { - "internalType": "bytes32", - "name": "predecessor", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "delay", - "type": "uint256" - } - ], - "name": "schedule", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "address[]", - "name": "targets", - "type": "address[]" - }, - { - "internalType": "uint256[]", - "name": "values", - "type": "uint256[]" - }, - { - "internalType": "bytes[]", - "name": "datas", - "type": "bytes[]" - }, - { - "internalType": "bytes32", - "name": "predecessor", - "type": "bytes32" - }, - { - "internalType": "bytes32", - "name": "salt", - "type": "bytes32" - }, - { - "internalType": "uint256", - "name": "delay", - "type": "uint256" - } - ], - "name": "scheduleBatch", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "bytes4", - "name": "interfaceId", - "type": "bytes4" - } - ], - "name": "supportsInterface", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "internalType": "uint256", - "name": "newDelay", - "type": "uint256" - } - ], - "name": "updateDelay", - "outputs": [], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "stateMutability": "payable", - "type": "receive" - } -] \ No newline at end of file diff --git a/contracts/interfaces/IexecAccessorsABILegacy.sol b/contracts/interfaces/IexecAccessorsABILegacy.sol index b5a3bfe02..8e520fef7 100644 --- a/contracts/interfaces/IexecAccessorsABILegacy.sol +++ b/contracts/interfaces/IexecAccessorsABILegacy.sol @@ -4,7 +4,7 @@ pragma solidity >=0.8.0; pragma experimental ABIEncoderV2; -import "../libs/IexecLibCore_v5.sol"; +import {IexecLibCore_v5} from "../libs/IexecLibCore_v5.sol"; /** * TODO: Remove this interface in the future. diff --git a/contracts/interfaces/IexecConfiguration.sol b/contracts/interfaces/IexecConfiguration.sol index cc1b0fe8f..765c52b8d 100644 --- a/contracts/interfaces/IexecConfiguration.sol +++ b/contracts/interfaces/IexecConfiguration.sol @@ -4,7 +4,7 @@ pragma solidity >=0.8.0; pragma experimental ABIEncoderV2; -import "../libs/IexecLibOrders_v5.sol"; +import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; interface IexecConfiguration { function configure( diff --git a/contracts/interfaces/IexecRelay.sol b/contracts/interfaces/IexecRelay.sol index fc67c0ac9..f10ff67f7 100644 --- a/contracts/interfaces/IexecRelay.sol +++ b/contracts/interfaces/IexecRelay.sol @@ -4,7 +4,7 @@ pragma solidity >=0.8.0; pragma experimental ABIEncoderV2; -import "../libs/IexecLibOrders_v5.sol"; +import {IexecLibOrders_v5} from "../libs/IexecLibOrders_v5.sol"; interface IexecRelay { event BroadcastAppOrder(IexecLibOrders_v5.AppOrder apporder); diff --git a/contracts/registries/Registry.sol b/contracts/registries/Registry.sol index d198ce97a..3c1a07b6f 100644 --- a/contracts/registries/Registry.sol +++ b/contracts/registries/Registry.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; -import "./proxy/InitializableUpgradeabilityProxy.sol"; +import {InitializableUpgradeabilityProxy} from "./proxy/InitializableUpgradeabilityProxy.sol"; import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; import {ERC721} from "@openzeppelin/contracts/token/ERC721/ERC721.sol"; import {Create2} from "@openzeppelin/contracts/utils/Create2.sol"; diff --git a/contracts/registries/RegistryEntry.sol b/contracts/registries/RegistryEntry.sol index bcb5b308f..275fc90c3 100644 --- a/contracts/registries/RegistryEntry.sol +++ b/contracts/registries/RegistryEntry.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; -import "./Registry.sol"; +import {IRegistry} from "./IRegistry.sol"; /** * @dev Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. diff --git a/contracts/registries/apps/App.sol b/contracts/registries/apps/App.sol index d8884aedc..2d4d34949 100644 --- a/contracts/registries/apps/App.sol +++ b/contracts/registries/apps/App.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; -import "../RegistryEntry.sol"; +import {RegistryEntry} from "../RegistryEntry.sol"; /** * @dev Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. diff --git a/contracts/registries/apps/AppRegistry.sol b/contracts/registries/apps/AppRegistry.sol index 8030eeaeb..464f4d3f8 100644 --- a/contracts/registries/apps/AppRegistry.sol +++ b/contracts/registries/apps/AppRegistry.sol @@ -3,8 +3,8 @@ pragma solidity ^0.8.0; -import "../Registry.sol"; -import "./App.sol"; +import {Registry} from "../Registry.sol"; +import {App} from "./App.sol"; /** * @dev Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. diff --git a/contracts/registries/datasets/Dataset.sol b/contracts/registries/datasets/Dataset.sol index 2e6037cbc..f26863db0 100644 --- a/contracts/registries/datasets/Dataset.sol +++ b/contracts/registries/datasets/Dataset.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; -import "../RegistryEntry.sol"; +import {RegistryEntry} from "../RegistryEntry.sol"; /** * @dev Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. diff --git a/contracts/registries/datasets/DatasetRegistry.sol b/contracts/registries/datasets/DatasetRegistry.sol index d4a31aac2..b87f18817 100644 --- a/contracts/registries/datasets/DatasetRegistry.sol +++ b/contracts/registries/datasets/DatasetRegistry.sol @@ -3,8 +3,8 @@ pragma solidity ^0.8.0; -import "../Registry.sol"; -import "./Dataset.sol"; +import {Registry} from "../Registry.sol"; +import {Dataset} from "./Dataset.sol"; /** * @dev Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. diff --git a/contracts/registries/proxy/BaseUpgradeabilityProxy.sol b/contracts/registries/proxy/BaseUpgradeabilityProxy.sol index 43f4a8b34..185474785 100644 --- a/contracts/registries/proxy/BaseUpgradeabilityProxy.sol +++ b/contracts/registries/proxy/BaseUpgradeabilityProxy.sol @@ -12,8 +12,8 @@ pragma solidity ^0.8.0; -import './Address.sol'; -import './Proxy.sol'; +import {Address} from "./Address.sol"; +import {Proxy} from "./Proxy.sol"; /** * @title BaseUpgradeabilityProxy @@ -22,50 +22,54 @@ import './Proxy.sol'; * Such a change is called an implementation upgrade. */ contract BaseUpgradeabilityProxy is Proxy { - /** - * @dev Emitted when the implementation is upgraded. - * @param implementation Address of the new implementation. - */ - event Upgraded(address indexed implementation); + /** + * @dev Emitted when the implementation is upgraded. + * @param implementation Address of the new implementation. + */ + event Upgraded(address indexed implementation); - /** - * @dev Storage slot with the address of the current implementation. - * This is the keccak-256 hash of "org.zeppelinos.proxy.implementation", and is - * validated in the constructor. - */ - bytes32 internal constant IMPLEMENTATION_SLOT = 0x7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3; + /** + * @dev Storage slot with the address of the current implementation. + * This is the keccak-256 hash of "org.zeppelinos.proxy.implementation", and is + * validated in the constructor. + */ + bytes32 internal constant IMPLEMENTATION_SLOT = + 0x7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3; - /** - * @dev Returns the current implementation. - * @return impl Address of the current implementation - */ - function _implementation() internal override view returns (address impl) { - bytes32 slot = IMPLEMENTATION_SLOT; - assembly { - impl := sload(slot) + /** + * @dev Returns the current implementation. + * @return impl Address of the current implementation + */ + function _implementation() internal view override returns (address impl) { + bytes32 slot = IMPLEMENTATION_SLOT; + assembly { + impl := sload(slot) + } } - } - /** - * @dev Upgrades the proxy to a new implementation. - * @param newImplementation Address of the new implementation. - */ - function _upgradeTo(address newImplementation) internal { - _setImplementation(newImplementation); - emit Upgraded(newImplementation); - } + /** + * @dev Upgrades the proxy to a new implementation. + * @param newImplementation Address of the new implementation. + */ + function _upgradeTo(address newImplementation) internal { + _setImplementation(newImplementation); + emit Upgraded(newImplementation); + } - /** - * @dev Sets the implementation address of the proxy. - * @param newImplementation Address of the new implementation. - */ - function _setImplementation(address newImplementation) internal { - require(Address.isContract(newImplementation), "Cannot set a proxy implementation to a non-contract address"); + /** + * @dev Sets the implementation address of the proxy. + * @param newImplementation Address of the new implementation. + */ + function _setImplementation(address newImplementation) internal { + require( + Address.isContract(newImplementation), + "Cannot set a proxy implementation to a non-contract address" + ); - bytes32 slot = IMPLEMENTATION_SLOT; + bytes32 slot = IMPLEMENTATION_SLOT; - assembly { - sstore(slot, newImplementation) + assembly { + sstore(slot, newImplementation) + } } - } } diff --git a/contracts/registries/proxy/InitializableUpgradeabilityProxy.sol b/contracts/registries/proxy/InitializableUpgradeabilityProxy.sol index b621080d4..87e547bf5 100644 --- a/contracts/registries/proxy/InitializableUpgradeabilityProxy.sol +++ b/contracts/registries/proxy/InitializableUpgradeabilityProxy.sol @@ -11,7 +11,7 @@ pragma solidity ^0.8.0; -import './BaseUpgradeabilityProxy.sol'; +import {BaseUpgradeabilityProxy} from "./BaseUpgradeabilityProxy.sol"; /** * @title InitializableUpgradeabilityProxy @@ -19,21 +19,21 @@ import './BaseUpgradeabilityProxy.sol'; * implementation and init data. */ contract InitializableUpgradeabilityProxy is BaseUpgradeabilityProxy { - /** - * @dev Contract initializer. - * @param _logic Address of the initial implementation. - * @param _data Data to send as msg.data to the implementation to initialize the proxied contract. - * It should include the signature and the parameters of the function to be called, as described in - * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. - * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. - */ - function initialize(address _logic, bytes memory _data) public payable { - require(_implementation() == address(0)); - assert(IMPLEMENTATION_SLOT == keccak256("org.zeppelinos.proxy.implementation")); - _setImplementation(_logic); - if(_data.length > 0) { - (bool success,) = _logic.delegatecall(_data); - require(success); + /** + * @dev Contract initializer. + * @param _logic Address of the initial implementation. + * @param _data Data to send as msg.data to the implementation to initialize the proxied contract. + * It should include the signature and the parameters of the function to be called, as described in + * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. + * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. + */ + function initialize(address _logic, bytes memory _data) public payable { + require(_implementation() == address(0)); + assert(IMPLEMENTATION_SLOT == keccak256("org.zeppelinos.proxy.implementation")); + _setImplementation(_logic); + if (_data.length > 0) { + (bool success, ) = _logic.delegatecall(_data); + require(success); + } } - } } diff --git a/contracts/registries/workerpools/Workerpool.sol b/contracts/registries/workerpools/Workerpool.sol index 2c6f1e5eb..2489891db 100644 --- a/contracts/registries/workerpools/Workerpool.sol +++ b/contracts/registries/workerpools/Workerpool.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; -import "../RegistryEntry.sol"; +import {RegistryEntry} from "../RegistryEntry.sol"; /** * @dev Referenced in the SDK with the current path `contracts/registries/workerpools/Workerpool.sol`. diff --git a/contracts/registries/workerpools/WorkerpoolRegistry.sol b/contracts/registries/workerpools/WorkerpoolRegistry.sol index 575f1e60a..292b23b19 100644 --- a/contracts/registries/workerpools/WorkerpoolRegistry.sol +++ b/contracts/registries/workerpools/WorkerpoolRegistry.sol @@ -3,8 +3,8 @@ pragma solidity ^0.8.0; -import "../Registry.sol"; -import "./Workerpool.sol"; +import {Registry} from "../Registry.sol"; +import {Workerpool} from "./Workerpool.sol"; /** * @dev Referenced in the SDK with the current path `contracts/registries/workerpools/WorkerpoolRegistry.sol`. diff --git a/contracts/tools/TimelockController.sol b/contracts/tools/TimelockController.sol index 26d59e44b..3c0acc63b 100644 --- a/contracts/tools/TimelockController.sol +++ b/contracts/tools/TimelockController.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; -import "@openzeppelin/contracts/access/AccessControl.sol"; +import {AccessControl} from "@openzeppelin/contracts/access/AccessControl.sol"; /** * @dev Contract module which acts as a timelocked controller. When set as the diff --git a/contracts/tools/testing/ERC1271Mock.sol b/contracts/tools/testing/ERC1271Mock.sol index 2fb491f7c..2c5313bf6 100644 --- a/contracts/tools/testing/ERC1271Mock.sol +++ b/contracts/tools/testing/ERC1271Mock.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; -import "@openzeppelin/contracts/interfaces/IERC1271.sol"; +import {IERC1271} from "@openzeppelin/contracts/interfaces/IERC1271.sol"; contract ERC1271Mock is IERC1271 { function isValidSignature( diff --git a/contracts/tools/testing/OwnableMock.sol b/contracts/tools/testing/OwnableMock.sol index 27d77675a..591aa8fb8 100644 --- a/contracts/tools/testing/OwnableMock.sol +++ b/contracts/tools/testing/OwnableMock.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; -import "@openzeppelin/contracts/access/Ownable.sol"; +import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; contract OwnableMock is Ownable { constructor() Ownable(msg.sender) {} diff --git a/contracts/tools/testing/TestReceiver.sol b/contracts/tools/testing/TestReceiver.sol index 2d2821723..96307d4f1 100644 --- a/contracts/tools/testing/TestReceiver.sol +++ b/contracts/tools/testing/TestReceiver.sol @@ -3,7 +3,7 @@ pragma solidity ^0.8.0; -import "../../interfaces/IexecTokenSpender.sol"; +import {IexecTokenSpender} from "../../interfaces/IexecTokenSpender.sol"; contract TestReceiver is IexecTokenSpender { event GotApproval(address sender, uint256 value, address token, bytes extraData); diff --git a/hardhat.config.ts b/hardhat.config.ts index 7a25ccbe8..dea65345a 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -228,7 +228,6 @@ const config: HardhatUserConfig = { // Used as mock or fake in UTs '@openzeppelin/contracts/interfaces/IERC1271.sol', // Used in deployment - '@openzeppelin/contracts/governance/TimelockController.sol', '@amxx/factory/contracts/v6/GenericFactory.sol', 'createx/src/ICreateX.sol', ], @@ -309,7 +308,8 @@ task('abis', 'Generate contract ABIs').setAction(async (taskArgs, hre) => { // Remove non relevant contracts // !!! Update package.json#files if this is updated. .filter((name) => !name.startsWith('contracts/tools/testing')) - .filter((name) => !name.startsWith('contracts/tools/diagrams')); + .filter((name) => !name.startsWith('contracts/tools/diagrams')) + .filter((name) => !name.startsWith('contracts/tools/TimelockController')); for (const contractFile of contracts) { const artifact = await hre.artifacts.readArtifact(contractFile); const abiFileDir = `${abisDir}/${path.dirname(contractFile)}`; From cdcfef61396d70e3a2b32e360d14af5eff078df6 Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Fri, 31 Oct 2025 16:16:47 +0100 Subject: [PATCH 70/77] refactor: restructure Solidity API documentation to enhance clarity and organization, consolidating interfaces and updating function signatures for improved readability --- docs/solidity/index.md | 1934 ++++++++++++++++++---------------------- 1 file changed, 889 insertions(+), 1045 deletions(-) diff --git a/docs/solidity/index.md b/docs/solidity/index.md index 23ed44987..b87f6e4d3 100644 --- a/docs/solidity/index.md +++ b/docs/solidity/index.md @@ -1,1920 +1,1764 @@ # Solidity API -## IexecInterfaceNative - -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in native mode. - -_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -## IexecInterfaceToken +## IRegistry -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in token mode. +### isRegistered -_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +function isRegistered(address _entry) external view returns (bool) +``` -## IexecCategoryManagerFacet +## Registry -### createCategory +### master ```solidity -function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) +address master ``` -Methods - -## IexecConfigurationExtraFacet - -### changeRegistries +### proxyCode ```solidity -function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external +bytes proxyCode ``` -## IexecConfigurationFacet - -### configure +### proxyCodeHash ```solidity -function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external +bytes32 proxyCodeHash ``` -### domain +### previous ```solidity -function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) +contract IRegistry previous ``` -### updateDomainSeparator +### initialized ```solidity -function updateDomainSeparator() external +bool initialized ``` -### importScore +### initialize ```solidity -function importScore(address _worker) external +function initialize(address _previous) external ``` -### setTeeBroker +### setBaseURI ```solidity -function setTeeBroker(address _teebroker) external +function setBaseURI(string baseUri) external ``` -### setCallbackGas +### baseURI ```solidity -function setCallbackGas(uint256 _callbackgas) external +function baseURI() public view returns (string) ``` -## IexecERC20Core +_Added for retrocompatibility! -## IexecERC20Facet +Returns the base URI set via {setBaseURI}. This will be +automatically added as a prefix in {tokenURI} to each token's ID._ -### transfer +### isRegistered ```solidity -function transfer(address recipient, uint256 amount) external returns (bool) +function isRegistered(address _entry) external view returns (bool) ``` -### approve +### setName ```solidity -function approve(address spender, uint256 value) external returns (bool) +function setName(address, string) external ``` -### approveAndCall +Sets the reverse registration name for a registry contract. -```solidity -function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) -``` +_This functionality is supported only on Bellecour Sidechain, calls on other chains +will revert. The function is kept as nonpayable to maintain retrocompatibility with the +iExec SDK._ -### transferFrom +## RegistryEntry + +_Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### registry ```solidity -function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) +contract IRegistry registry ``` -### increaseAllowance +### owner ```solidity -function increaseAllowance(address spender, uint256 addedValue) external returns (bool) +function owner() public view returns (address) ``` -### decreaseAllowance +### setName ```solidity -function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) +function setName(address, string) external ``` -## IexecEscrow +Sets the reverse registration name for a registry entry contract. -### Transfer +_This functionality is supported only on Bellecour Sidechain, calls on other chains +will revert. The function is kept as nonpayable to maintain retrocompatibility with the +iExec SDK._ -```solidity -event Transfer(address from, address to, uint256 value) -``` +## App -### Lock +_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### m_appName ```solidity -event Lock(address owner, uint256 amount) +string m_appName ``` -### Unlock +Members + +### m_appType ```solidity -event Unlock(address owner, uint256 amount) +string m_appType ``` -### Reward +### m_appMultiaddr ```solidity -event Reward(address owner, uint256 amount, bytes32 ref) +bytes m_appMultiaddr ``` -### Seize +### m_appChecksum ```solidity -event Seize(address owner, uint256 amount, bytes32 ref) +bytes32 m_appChecksum ``` -## IexecEscrowNativeFacet - -### receive +### m_appMREnclave ```solidity -receive() external payable +bytes m_appMREnclave ``` -### fallback +### initialize ```solidity -fallback() external payable +function initialize(string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) public ``` -### deposit +Constructor -```solidity -function deposit() external payable returns (bool) -``` +## AppRegistry -### depositFor +_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### constructor ```solidity -function depositFor(address target) external payable returns (bool) +constructor() public ``` -### depositForArray +Constructor + +### createApp ```solidity -function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) +function createApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external returns (contract App) ``` -### withdraw +### predictApp ```solidity -function withdraw(uint256 amount) external returns (bool) +function predictApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external view returns (contract App) ``` -### withdrawTo +## Dataset -```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) -``` +_Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### recover +### m_datasetName ```solidity -function recover() external returns (uint256) +string m_datasetName ``` -## IexecEscrowTokenFacet +Members -### receive +### m_datasetMultiaddr ```solidity -receive() external payable +bytes m_datasetMultiaddr ``` -### fallback +### m_datasetChecksum ```solidity -fallback() external payable +bytes32 m_datasetChecksum ``` -### deposit +### initialize ```solidity -function deposit(uint256 amount) external returns (bool) +function initialize(string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) public ``` -### depositFor +Constructor -```solidity -function depositFor(uint256 amount, address target) external returns (bool) -``` +## DatasetRegistry -### depositForArray +_Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### constructor ```solidity -function depositForArray(uint256[] amounts, address[] targets) external returns (bool) +constructor() public ``` -### withdraw +Constructor + +### createDataset ```solidity -function withdraw(uint256 amount) external returns (bool) +function createDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external returns (contract Dataset) ``` -### withdrawTo +### predictDataset ```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) +function predictDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external view returns (contract Dataset) ``` -### recover +## Address -```solidity -function recover() external returns (uint256) -``` +## BaseUpgradeabilityProxy -### receiveApproval +_This contract implements a proxy that allows to change the +implementation address to which it will delegate. +Such a change is called an implementation upgrade._ + +### Upgraded ```solidity -function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) +event Upgraded(address implementation) ``` -## IexecOrderManagementFacet +_Emitted when the implementation is upgraded._ -### manageAppOrder +#### Parameters -```solidity -function manageAppOrder(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) external -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| implementation | address | Address of the new implementation. | -### manageDatasetOrder +## InitializableUpgradeabilityProxy -```solidity -function manageDatasetOrder(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) external -``` +_Extends BaseUpgradeabilityProxy with an initializer for initializing +implementation and init data._ -### manageWorkerpoolOrder +### initialize ```solidity -function manageWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) external +function initialize(address _logic, bytes _data) public payable ``` -### manageRequestOrder +_Contract initializer._ -```solidity -function manageRequestOrder(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) external -``` +#### Parameters -## Matching +| Name | Type | Description | +| ---- | ---- | ----------- | +| _logic | address | Address of the initial implementation. | +| _data | bytes | Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. | -```solidity -struct Matching { - bytes32 apporderHash; - address appOwner; - bytes32 datasetorderHash; - address datasetOwner; - bytes32 workerpoolorderHash; - address workerpoolOwner; - bytes32 requestorderHash; - bool hasDataset; -} -``` +## Proxy -## IexecPoco1Facet +_Implements delegation of calls to other contracts, with proper +forwarding of return values and bubbling of failures. +It defines a fallback function that delegates all calls to the address +returned by the abstract _implementation() internal function._ -### verifySignature +### receive ```solidity -function verifySignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) +receive() external payable virtual ``` -### verifyPresignature +_Receive function. +Implemented entirely in `_fallback`._ + +### fallback ```solidity -function verifyPresignature(address _identity, bytes32 _hash) external view returns (bool) +fallback() external payable ``` -### verifyPresignatureOrSignature +_Fallback function. +Implemented entirely in `_fallback`._ -```solidity -function verifyPresignatureOrSignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) -``` +## Workerpool -### assertDatasetDealCompatibility +_Referenced in the SDK with the current path `contracts/registries/workerpools/Workerpool.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### m_workerpoolDescription ```solidity -function assertDatasetDealCompatibility(struct IexecLibOrders_v5.DatasetOrder datasetOrder, bytes32 dealId) external view +string m_workerpoolDescription ``` -Public view function to check if a dataset order is compatible with a deal. -This function performs all the necessary checks to verify dataset order compatibility with a deal. -Reverts with `IncompatibleDatasetOrder(reason)` if the dataset order is not compatible with the deal, does -nothing otherwise. - -_This function is mainly consumed by offchain clients. It should be carefully inspected if -used in on-chain code. -This function should not be used in `matchOrders` since it does not check the same requirements. -The choice of reverting instead of returning true/false is motivated by the Java middleware -requirements._ +Parameters -#### Parameters +### m_workerStakeRatioPolicy -| Name | Type | Description | -| ---- | ---- | ----------- | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order to verify | -| dealId | bytes32 | The deal ID to check against | +```solidity +uint256 m_workerStakeRatioPolicy +``` -### matchOrders +### m_schedulerRewardRatioPolicy ```solidity -function matchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) +uint256 m_schedulerRewardRatioPolicy ``` -Match orders. The requester gets debited. +### PolicyUpdate -#### Parameters +```solidity +event PolicyUpdate(uint256 oldWorkerStakeRatioPolicy, uint256 newWorkerStakeRatioPolicy, uint256 oldSchedulerRewardRatioPolicy, uint256 newSchedulerRewardRatioPolicy) +``` -| Name | Type | Description | -| ---- | ---- | ----------- | -| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | -| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | +Events -### sponsorMatchOrders +### initialize ```solidity -function sponsorMatchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) +function initialize(string _workerpoolDescription) public ``` -Sponsor match orders for a requester. -Unlike the standard `matchOrders(..)` hook where the requester pays for -the deal, this current hook makes it possible for any `msg.sender` to pay for -a third party requester. +Constructor -Be aware that anyone seeing a valid request order on the network -(via an off-chain public marketplace, via a `sponsorMatchOrders(..)` -pending transaction in the mempool or by any other means) might decide -to call the standard `matchOrders(..)` hook which will result in the -requester being debited instead. Therefore, such a front run would result -in a loss of some of the requester funds deposited in the iExec account -(a loss value equivalent to the price of the deal). +### changePolicy -#### Parameters +```solidity +function changePolicy(uint256 _newWorkerStakeRatioPolicy, uint256 _newSchedulerRewardRatioPolicy) external +``` -| Name | Type | Description | -| ---- | ---- | ----------- | -| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | -| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | +## WorkerpoolRegistry -## IexecPoco2Facet +_Referenced in the SDK with the current path `contracts/registries/workerpools/WorkerpoolRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### initialize +### constructor ```solidity -function initialize(bytes32 _dealid, uint256 idx) public returns (bytes32) +constructor() public ``` -### contribute +Constructor + +### createWorkerpool ```solidity -function contribute(bytes32 _taskid, bytes32 _resultHash, bytes32 _resultSeal, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external +function createWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external returns (contract Workerpool) ``` -### contributeAndFinalize +### predictWorkerpool ```solidity -function contributeAndFinalize(bytes32 _taskid, bytes32 _resultDigest, bytes _results, bytes _resultsCallback, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external +function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) ``` -### reveal +## IexecInterfaceNative -```solidity -function reveal(bytes32 _taskid, bytes32 _resultDigest) external -``` +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in native mode. -### reopen +_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -```solidity -function reopen(bytes32 _taskid) external -``` +## IexecInterfaceToken -### finalize +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in token mode. -```solidity -function finalize(bytes32 _taskid, bytes _results, bytes _resultsCallback) external -``` +_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### claim +## IexecConfigurationFacet + +### configure ```solidity -function claim(bytes32 _taskid) public +function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external ``` -### initializeArray +### domain ```solidity -function initializeArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) +function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) ``` -### claimArray +### updateDomainSeparator ```solidity -function claimArray(bytes32[] _taskid) external returns (bool) +function updateDomainSeparator() external ``` -### initializeAndClaimArray +### importScore ```solidity -function initializeAndClaimArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) +function importScore(address _worker) external ``` -## IexecPocoAccessorsFacet - -### viewDeal +### setTeeBroker ```solidity -function viewDeal(bytes32 id) external view returns (struct IexecLibCore_v5.Deal deal) +function setTeeBroker(address _teebroker) external ``` -Get a deal created by PoCo classic facet. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | The ID of the deal. | - -### viewTask +### setCallbackGas ```solidity -function viewTask(bytes32 id) external view returns (struct IexecLibCore_v5.Task) +function setCallbackGas(uint256 _callbackgas) external ``` -Get task created in Classic mode. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | id of the task | +## IexecRelayFacet -### computeDealVolume +### broadcastAppOrder ```solidity -function computeDealVolume(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external view returns (uint256) +function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external ``` -Computes the volume of the "not yet created" deal based on the provided orders. -This function should only be used if the deal is not yet created. -For existing deals, use the deal accessors instead. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The application order. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The request order. | - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | uint256 | The computed deal volume. | - -### viewConsumed +### broadcastDatasetOrder ```solidity -function viewConsumed(bytes32 _id) external view returns (uint256 consumed) +function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external ``` -### viewPresigned +### broadcastWorkerpoolOrder ```solidity -function viewPresigned(bytes32 _id) external view returns (address signer) +function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external ``` -### viewContribution +### broadcastRequestOrder ```solidity -function viewContribution(bytes32 _taskid, address _worker) external view returns (struct IexecLibCore_v5.Contribution) +function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external ``` -### viewScore +## IexecLibCore_v5 -```solidity -function viewScore(address _worker) external view returns (uint256) -``` +### Account -### resultFor +Tools ```solidity -function resultFor(bytes32 id) external view returns (bytes) +struct Account { + uint256 stake; + uint256 locked; +} ``` -### name +### Category ```solidity -function name() external view returns (string) +struct Category { + string name; + string description; + uint256 workClockTimeRef; +} ``` -### symbol +### DatasetInfo ```solidity -function symbol() external view returns (string) +struct DatasetInfo { + address owner; + string m_datasetName; + bytes m_datasetMultiaddr; + bytes32 m_datasetChecksum; +} ``` -### decimals +### AppInfo ```solidity -function decimals() external view returns (uint8) -``` - -### totalSupply - -```solidity -function totalSupply() external view returns (uint256) +struct AppInfo { + address owner; + string m_appName; + string m_appType; + bytes m_appMultiaddr; + bytes32 m_appChecksum; + bytes m_appMREnclave; +} ``` -### balanceOf +### WorkerpoolInfo ```solidity -function balanceOf(address account) external view returns (uint256) +struct WorkerpoolInfo { + address owner; + string m_workerpoolDescription; + uint256 m_workerStakeRatioPolicy; + uint256 m_schedulerRewardRatioPolicy; +} ``` -### frozenOf - -```solidity -function frozenOf(address account) external view returns (uint256) -``` +### Resource -### allowance +Clerk - Deals ```solidity -function allowance(address account, address spender) external view returns (uint256) +struct Resource { + address pointer; + address owner; + uint256 price; +} ``` -### viewAccount +### Deal ```solidity -function viewAccount(address account) external view returns (struct IexecLibCore_v5.Account) +struct Deal { + struct IexecLibCore_v5.Resource app; + struct IexecLibCore_v5.Resource dataset; + struct IexecLibCore_v5.Resource workerpool; + uint256 trust; + uint256 category; + bytes32 tag; + address requester; + address beneficiary; + address callback; + string params; + uint256 startTime; + uint256 botFirst; + uint256 botSize; + uint256 workerStake; + uint256 schedulerRewardRatio; + address sponsor; +} ``` -### token - -```solidity -function token() external view returns (address) -``` +### DealBoost -### viewCategory +Simplified deals for PoCo Boost module. ```solidity -function viewCategory(uint256 _catid) external view returns (struct IexecLibCore_v5.Category category) +struct DealBoost { + address appOwner; + uint96 appPrice; + address datasetOwner; + uint96 datasetPrice; + address workerpoolOwner; + uint96 workerpoolPrice; + address requester; + uint96 workerReward; + address callback; + uint40 deadline; + uint16 botFirst; + uint16 botSize; + bytes3 shortTag; + address sponsor; +} ``` -### countCategory - -```solidity -function countCategory() external view returns (uint256 count) -``` +### TaskStatusEnum -### appregistry +Tasks ```solidity -function appregistry() external view returns (contract IRegistry) +enum TaskStatusEnum { + UNSET, + ACTIVE, + REVEALING, + COMPLETED, + FAILED +} ``` -### datasetregistry +### Task ```solidity -function datasetregistry() external view returns (contract IRegistry) +struct Task { + enum IexecLibCore_v5.TaskStatusEnum status; + bytes32 dealid; + uint256 idx; + uint256 timeref; + uint256 contributionDeadline; + uint256 revealDeadline; + uint256 finalDeadline; + bytes32 consensusValue; + uint256 revealCounter; + uint256 winnerCounter; + address[] contributors; + bytes32 resultDigest; + bytes results; + uint256 resultsTimestamp; + bytes resultsCallback; +} ``` -### workerpoolregistry - -```solidity -function workerpoolregistry() external view returns (contract IRegistry) -``` +### Consensus -### teebroker +Consensus ```solidity -function teebroker() external view returns (address) +struct Consensus { + mapping(bytes32 => uint256) group; + uint256 total; +} ``` -### callbackgas - -```solidity -function callbackgas() external view returns (uint256) -``` +### ContributionStatusEnum -### viewDataset +Consensus ```solidity -function viewDataset(address dataset) external view returns (struct IexecLibCore_v5.DatasetInfo) +enum ContributionStatusEnum { + UNSET, + CONTRIBUTED, + PROVED, + REJECTED +} ``` -### viewApp +### Contribution ```solidity -function viewApp(address app) external view returns (struct IexecLibCore_v5.AppInfo) +struct Contribution { + enum IexecLibCore_v5.ContributionStatusEnum status; + bytes32 resultHash; + bytes32 resultSeal; + address enclaveChallenge; + uint256 weight; +} ``` -### viewWorkerpool - -```solidity -function viewWorkerpool(address workerpool) external view returns (struct IexecLibCore_v5.WorkerpoolInfo) -``` +## IexecLibOrders_v5 -### contribution_deadline_ratio +### EIP712DOMAIN_TYPEHASH ```solidity -function contribution_deadline_ratio() external pure returns (uint256) +bytes32 EIP712DOMAIN_TYPEHASH ``` -### reveal_deadline_ratio +### APPORDER_TYPEHASH ```solidity -function reveal_deadline_ratio() external pure returns (uint256) +bytes32 APPORDER_TYPEHASH ``` -### final_deadline_ratio +### DATASETORDER_TYPEHASH ```solidity -function final_deadline_ratio() external pure returns (uint256) +bytes32 DATASETORDER_TYPEHASH ``` -### workerpool_stake_ratio +### WORKERPOOLORDER_TYPEHASH ```solidity -function workerpool_stake_ratio() external pure returns (uint256) +bytes32 WORKERPOOLORDER_TYPEHASH ``` -### kitty_ratio +### REQUESTORDER_TYPEHASH ```solidity -function kitty_ratio() external pure returns (uint256) +bytes32 REQUESTORDER_TYPEHASH ``` -### kitty_min +### APPORDEROPERATION_TYPEHASH ```solidity -function kitty_min() external pure returns (uint256) +bytes32 APPORDEROPERATION_TYPEHASH ``` -### kitty_address +### DATASETORDEROPERATION_TYPEHASH ```solidity -function kitty_address() external pure returns (address) +bytes32 DATASETORDEROPERATION_TYPEHASH ``` -### groupmember_purpose +### WORKERPOOLORDEROPERATION_TYPEHASH ```solidity -function groupmember_purpose() external pure returns (uint256) +bytes32 WORKERPOOLORDEROPERATION_TYPEHASH ``` -### eip712domain_separator +### REQUESTORDEROPERATION_TYPEHASH ```solidity -function eip712domain_separator() external view returns (bytes32) +bytes32 REQUESTORDEROPERATION_TYPEHASH ``` -## IexecPocoBoostAccessorsFacet - -Access to PoCo Boost tasks must be done with PoCo Classic `IexecPocoAccessors`. - -### viewDealBoost +### OrderOperationEnum ```solidity -function viewDealBoost(bytes32 id) external view returns (struct IexecLibCore_v5.DealBoost deal) +enum OrderOperationEnum { + SIGN, + CLOSE +} ``` -Get a deal created by PoCo Boost facet. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | The ID of the deal. | - -## IexecPocoBoostFacet - -Works for deals with requested trust = 0. - -### matchOrdersBoost +### EIP712Domain ```solidity -function matchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) +struct EIP712Domain { + string name; + string version; + uint256 chainId; + address verifyingContract; +} ``` -This boost match orders is only compatible with trust <= 1. -The requester gets debited. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The order signed by the application developer. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The order signed by the dataset provider. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The order signed by the workerpool manager. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The order signed by the requester. | - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | bytes32 | The ID of the deal. | - -### sponsorMatchOrdersBoost +### AppOrder ```solidity -function sponsorMatchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) +struct AppOrder { + address app; + uint256 appprice; + uint256 volume; + bytes32 tag; + address datasetrestrict; + address workerpoolrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -Sponsor match orders boost for a requester. -Unlike the standard `matchOrdersBoost(..)` hook where the requester pays for -the deal, this current hook makes it possible for any `msg.sender` to pay for -a third party requester. - -Be aware that anyone seeing a valid request order on the network -(via an off-chain public marketplace, via a `sponsorMatchOrdersBoost(..)` -pending transaction in the mempool or by any other means) might decide -to call the standard `matchOrdersBoost(..)` hook which will result in the -requester being debited instead. Therefore, such a front run would result -in a loss of some of the requester funds deposited in the iExec account -(a loss value equivalent to the price of the deal). - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The app order. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The requester order. | - -### pushResultBoost +### DatasetOrder ```solidity -function pushResultBoost(bytes32 dealId, uint256 index, bytes results, bytes resultsCallback, bytes authorizationSign, address enclaveChallenge, bytes enclaveSign) external +struct DatasetOrder { + address dataset; + uint256 datasetprice; + uint256 volume; + bytes32 tag; + address apprestrict; + address workerpoolrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -Accept results of a task computed by a worker during Boost workflow. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| dealId | bytes32 | The id of the target deal. | -| index | uint256 | The index of the target task of the deal. | -| results | bytes | The results of the task computed by the worker. | -| resultsCallback | bytes | The results of the task computed by the worker that will be forwarded as call data to the callback address set by the requester. | -| authorizationSign | bytes | The authorization signed by the scheduler. authorizing the worker to push a result. | -| enclaveChallenge | address | The enclave address which can produce enclave signature. | -| enclaveSign | bytes | The signature generated from the enclave. | - -### claimBoost +### WorkerpoolOrder ```solidity -function claimBoost(bytes32 dealId, uint256 index) external +struct WorkerpoolOrder { + address workerpool; + uint256 workerpoolprice; + uint256 volume; + bytes32 tag; + uint256 category; + uint256 trust; + address apprestrict; + address datasetrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -Claim task to get a refund if task is not completed after deadline. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| dealId | bytes32 | The ID of the deal. | -| index | uint256 | The index of the task. | - -## IexecRelayFacet - -### broadcastAppOrder +### RequestOrder ```solidity -function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external +struct RequestOrder { + address app; + uint256 appmaxprice; + address dataset; + uint256 datasetmaxprice; + address workerpool; + uint256 workerpoolmaxprice; + address requester; + uint256 volume; + bytes32 tag; + uint256 category; + uint256 trust; + address beneficiary; + address callback; + string params; + bytes32 salt; + bytes sign; +} ``` -### broadcastDatasetOrder +### AppOrderOperation ```solidity -function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external +struct AppOrderOperation { + struct IexecLibOrders_v5.AppOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -### broadcastWorkerpoolOrder +### DatasetOrderOperation ```solidity -function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external +struct DatasetOrderOperation { + struct IexecLibOrders_v5.DatasetOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -### broadcastRequestOrder +### WorkerpoolOrderOperation ```solidity -function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external +struct WorkerpoolOrderOperation { + struct IexecLibOrders_v5.WorkerpoolOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -## IexecLibCore_v5 - -### Account - -Tools +### RequestOrderOperation ```solidity -struct Account { - uint256 stake; - uint256 locked; +struct RequestOrderOperation { + struct IexecLibOrders_v5.RequestOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; } ``` -### Category +### hash ```solidity -struct Category { - string name; - string description; - uint256 workClockTimeRef; -} +function hash(struct IexecLibOrders_v5.EIP712Domain _domain) public pure returns (bytes32 domainhash) ``` -### DatasetInfo +### hash ```solidity -struct DatasetInfo { - address owner; - string m_datasetName; - bytes m_datasetMultiaddr; - bytes32 m_datasetChecksum; -} +function hash(struct IexecLibOrders_v5.AppOrder _apporder) public pure returns (bytes32 apphash) ``` -### AppInfo +### hash ```solidity -struct AppInfo { - address owner; - string m_appName; - string m_appType; - bytes m_appMultiaddr; - bytes32 m_appChecksum; - bytes m_appMREnclave; -} +function hash(struct IexecLibOrders_v5.DatasetOrder _datasetorder) public pure returns (bytes32 datasethash) ``` -### WorkerpoolInfo +### hash ```solidity -struct WorkerpoolInfo { - address owner; - string m_workerpoolDescription; - uint256 m_workerStakeRatioPolicy; - uint256 m_schedulerRewardRatioPolicy; -} +function hash(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) public pure returns (bytes32 workerpoolhash) ``` -### Resource - -Clerk - Deals +### hash ```solidity -struct Resource { - address pointer; - address owner; - uint256 price; -} +function hash(struct IexecLibOrders_v5.RequestOrder _requestorder) public pure returns (bytes32 requesthash) ``` -### Deal +### hash ```solidity -struct Deal { - struct IexecLibCore_v5.Resource app; - struct IexecLibCore_v5.Resource dataset; - struct IexecLibCore_v5.Resource workerpool; - uint256 trust; - uint256 category; - bytes32 tag; - address requester; - address beneficiary; - address callback; - string params; - uint256 startTime; - uint256 botFirst; - uint256 botSize; - uint256 workerStake; - uint256 schedulerRewardRatio; - address sponsor; -} +function hash(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) public pure returns (bytes32) ``` -### DealBoost - -Simplified deals for PoCo Boost module. +### hash ```solidity -struct DealBoost { - address appOwner; - uint96 appPrice; - address datasetOwner; - uint96 datasetPrice; - address workerpoolOwner; - uint96 workerpoolPrice; - address requester; - uint96 workerReward; - address callback; - uint40 deadline; - uint16 botFirst; - uint16 botSize; - bytes3 shortTag; - address sponsor; -} +function hash(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) public pure returns (bytes32) ``` -### TaskStatusEnum - -Tasks +### hash ```solidity -enum TaskStatusEnum { - UNSET, - ACTIVE, - REVEALING, - COMPLETED, - FAILED -} +function hash(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) public pure returns (bytes32) ``` -### Task +### hash ```solidity -struct Task { - enum IexecLibCore_v5.TaskStatusEnum status; - bytes32 dealid; - uint256 idx; - uint256 timeref; - uint256 contributionDeadline; - uint256 revealDeadline; - uint256 finalDeadline; - bytes32 consensusValue; - uint256 revealCounter; - uint256 winnerCounter; - address[] contributors; - bytes32 resultDigest; - bytes results; - uint256 resultsTimestamp; - bytes resultsCallback; -} +function hash(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) public pure returns (bytes32) ``` -### Consensus +## PocoStorageLib -Consensus +### PocoStorage ```solidity -struct Consensus { - mapping(bytes32 => uint256) group; - uint256 total; +struct PocoStorage { + contract IRegistry m_appregistry; + contract IRegistry m_datasetregistry; + contract IRegistry m_workerpoolregistry; + contract IERC20 m_baseToken; + string m_name; + string m_symbol; + uint8 m_decimals; + uint256 m_totalSupply; + mapping(address => uint256) m_balances; + mapping(address => uint256) m_frozens; + mapping(address => mapping(address => uint256)) m_allowances; + bytes32 m_eip712DomainSeparator; + mapping(bytes32 => address) m_presigned; + mapping(bytes32 => uint256) m_consumed; + mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; + mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; + mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; + mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; + mapping(address => uint256) m_workerScores; + address m_teebroker; + uint256 m_callbackgas; + struct IexecLibCore_v5.Category[] m_categories; + contract IexecHubV3Interface m_v3_iexecHub; + mapping(address => bool) m_v3_scoreImported; + mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; } ``` -### ContributionStatusEnum +## IexecCategoryManagerFacet -Consensus +### createCategory ```solidity -enum ContributionStatusEnum { - UNSET, - CONTRIBUTED, - PROVED, - REJECTED -} +function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) ``` -### Contribution - -```solidity -struct Contribution { - enum IexecLibCore_v5.ContributionStatusEnum status; - bytes32 resultHash; - bytes32 resultSeal; - address enclaveChallenge; - uint256 weight; -} -``` +Methods -## IexecLibOrders_v5 +## IexecConfigurationExtraFacet -### EIP712DOMAIN_TYPEHASH +### changeRegistries ```solidity -bytes32 EIP712DOMAIN_TYPEHASH +function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external ``` -### APPORDER_TYPEHASH +## IexecERC20Core + +## IexecERC20Facet + +### transfer ```solidity -bytes32 APPORDER_TYPEHASH +function transfer(address recipient, uint256 amount) external returns (bool) ``` -### DATASETORDER_TYPEHASH +### approve ```solidity -bytes32 DATASETORDER_TYPEHASH +function approve(address spender, uint256 value) external returns (bool) ``` -### WORKERPOOLORDER_TYPEHASH +### approveAndCall ```solidity -bytes32 WORKERPOOLORDER_TYPEHASH +function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) ``` -### REQUESTORDER_TYPEHASH +### transferFrom ```solidity -bytes32 REQUESTORDER_TYPEHASH +function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) ``` -### APPORDEROPERATION_TYPEHASH +### increaseAllowance ```solidity -bytes32 APPORDEROPERATION_TYPEHASH +function increaseAllowance(address spender, uint256 addedValue) external returns (bool) ``` -### DATASETORDEROPERATION_TYPEHASH +### decreaseAllowance ```solidity -bytes32 DATASETORDEROPERATION_TYPEHASH +function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) ``` -### WORKERPOOLORDEROPERATION_TYPEHASH +## IexecEscrow + +### Transfer ```solidity -bytes32 WORKERPOOLORDEROPERATION_TYPEHASH +event Transfer(address from, address to, uint256 value) ``` -### REQUESTORDEROPERATION_TYPEHASH +### Lock ```solidity -bytes32 REQUESTORDEROPERATION_TYPEHASH +event Lock(address owner, uint256 amount) ``` -### OrderOperationEnum +### Unlock ```solidity -enum OrderOperationEnum { - SIGN, - CLOSE -} +event Unlock(address owner, uint256 amount) ``` -### EIP712Domain +### Reward ```solidity -struct EIP712Domain { - string name; - string version; - uint256 chainId; - address verifyingContract; -} +event Reward(address owner, uint256 amount, bytes32 ref) ``` -### AppOrder +### Seize ```solidity -struct AppOrder { - address app; - uint256 appprice; - uint256 volume; - bytes32 tag; - address datasetrestrict; - address workerpoolrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +event Seize(address owner, uint256 amount, bytes32 ref) ``` -### DatasetOrder +## IexecEscrowNativeFacet + +### receive ```solidity -struct DatasetOrder { - address dataset; - uint256 datasetprice; - uint256 volume; - bytes32 tag; - address apprestrict; - address workerpoolrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +receive() external payable ``` -### WorkerpoolOrder +### fallback ```solidity -struct WorkerpoolOrder { - address workerpool; - uint256 workerpoolprice; - uint256 volume; - bytes32 tag; - uint256 category; - uint256 trust; - address apprestrict; - address datasetrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +fallback() external payable ``` -### RequestOrder +### deposit ```solidity -struct RequestOrder { - address app; - uint256 appmaxprice; - address dataset; - uint256 datasetmaxprice; - address workerpool; - uint256 workerpoolmaxprice; - address requester; - uint256 volume; - bytes32 tag; - uint256 category; - uint256 trust; - address beneficiary; - address callback; - string params; - bytes32 salt; - bytes sign; -} +function deposit() external payable returns (bool) ``` -### AppOrderOperation +### depositFor ```solidity -struct AppOrderOperation { - struct IexecLibOrders_v5.AppOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function depositFor(address target) external payable returns (bool) ``` -### DatasetOrderOperation +### depositForArray ```solidity -struct DatasetOrderOperation { - struct IexecLibOrders_v5.DatasetOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) ``` -### WorkerpoolOrderOperation +### withdraw ```solidity -struct WorkerpoolOrderOperation { - struct IexecLibOrders_v5.WorkerpoolOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function withdraw(uint256 amount) external returns (bool) ``` -### RequestOrderOperation +### withdrawTo ```solidity -struct RequestOrderOperation { - struct IexecLibOrders_v5.RequestOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function withdrawTo(uint256 amount, address target) external returns (bool) ``` -### hash +### recover ```solidity -function hash(struct IexecLibOrders_v5.EIP712Domain _domain) public pure returns (bytes32 domainhash) +function recover() external returns (uint256) ``` -### hash +## IexecEscrowTokenFacet + +### receive ```solidity -function hash(struct IexecLibOrders_v5.AppOrder _apporder) public pure returns (bytes32 apphash) +receive() external payable ``` -### hash +### fallback ```solidity -function hash(struct IexecLibOrders_v5.DatasetOrder _datasetorder) public pure returns (bytes32 datasethash) +fallback() external payable ``` -### hash +### deposit ```solidity -function hash(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) public pure returns (bytes32 workerpoolhash) +function deposit(uint256 amount) external returns (bool) ``` -### hash +### depositFor ```solidity -function hash(struct IexecLibOrders_v5.RequestOrder _requestorder) public pure returns (bytes32 requesthash) +function depositFor(uint256 amount, address target) external returns (bool) ``` -### hash +### depositForArray ```solidity -function hash(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) public pure returns (bytes32) +function depositForArray(uint256[] amounts, address[] targets) external returns (bool) ``` -### hash +### withdraw ```solidity -function hash(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) public pure returns (bytes32) +function withdraw(uint256 amount) external returns (bool) ``` -### hash +### withdrawTo ```solidity -function hash(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) public pure returns (bytes32) +function withdrawTo(uint256 amount, address target) external returns (bool) ``` -### hash +### recover ```solidity -function hash(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) public pure returns (bytes32) +function recover() external returns (uint256) ``` -## PocoStorageLib - -### PocoStorage +### receiveApproval ```solidity -struct PocoStorage { - contract IRegistry m_appregistry; - contract IRegistry m_datasetregistry; - contract IRegistry m_workerpoolregistry; - contract IERC20 m_baseToken; - string m_name; - string m_symbol; - uint8 m_decimals; - uint256 m_totalSupply; - mapping(address => uint256) m_balances; - mapping(address => uint256) m_frozens; - mapping(address => mapping(address => uint256)) m_allowances; - bytes32 m_eip712DomainSeparator; - mapping(bytes32 => address) m_presigned; - mapping(bytes32 => uint256) m_consumed; - mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; - mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; - mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; - mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; - mapping(address => uint256) m_workerScores; - address m_teebroker; - uint256 m_callbackgas; - struct IexecLibCore_v5.Category[] m_categories; - contract IexecHubV3Interface m_v3_iexecHub; - mapping(address => bool) m_v3_scoreImported; - mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; -} +function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) ``` -## IRegistry +## IexecOrderManagementFacet -### isRegistered +### manageAppOrder ```solidity -function isRegistered(address _entry) external view returns (bool) +function manageAppOrder(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) external ``` -## Registry - -### master +### manageDatasetOrder ```solidity -address master +function manageDatasetOrder(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) external ``` -### proxyCode +### manageWorkerpoolOrder ```solidity -bytes proxyCode +function manageWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) external ``` -### proxyCodeHash +### manageRequestOrder ```solidity -bytes32 proxyCodeHash +function manageRequestOrder(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) external ``` -### previous +## Matching ```solidity -contract IRegistry previous +struct Matching { + bytes32 apporderHash; + address appOwner; + bytes32 datasetorderHash; + address datasetOwner; + bytes32 workerpoolorderHash; + address workerpoolOwner; + bytes32 requestorderHash; + bool hasDataset; +} ``` -### initialized +## IexecPoco1Facet + +### verifySignature ```solidity -bool initialized +function verifySignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) ``` -### initialize +### verifyPresignature ```solidity -function initialize(address _previous) external +function verifyPresignature(address _identity, bytes32 _hash) external view returns (bool) ``` -### setBaseURI +### verifyPresignatureOrSignature ```solidity -function setBaseURI(string baseUri) external +function verifyPresignatureOrSignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) ``` -### baseURI +### assertDatasetDealCompatibility ```solidity -function baseURI() public view returns (string) +function assertDatasetDealCompatibility(struct IexecLibOrders_v5.DatasetOrder datasetOrder, bytes32 dealId) external view ``` -_Added for retrocompatibility! +Public view function to check if a dataset order is compatible with a deal. +This function performs all the necessary checks to verify dataset order compatibility with a deal. +Reverts with `IncompatibleDatasetOrder(reason)` if the dataset order is not compatible with the deal, does +nothing otherwise. -Returns the base URI set via {setBaseURI}. This will be -automatically added as a prefix in {tokenURI} to each token's ID._ +_This function is mainly consumed by offchain clients. It should be carefully inspected if +used in on-chain code. +This function should not be used in `matchOrders` since it does not check the same requirements. +The choice of reverting instead of returning true/false is motivated by the Java middleware +requirements._ + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order to verify | +| dealId | bytes32 | The deal ID to check against | -### isRegistered +### matchOrders ```solidity -function isRegistered(address _entry) external view returns (bool) +function matchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) ``` -### setName +Match orders. The requester gets debited. + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | +| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | + +### sponsorMatchOrders ```solidity -function setName(address, string) external +function sponsorMatchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) ``` -Sets the reverse registration name for a registry contract. +Sponsor match orders for a requester. +Unlike the standard `matchOrders(..)` hook where the requester pays for +the deal, this current hook makes it possible for any `msg.sender` to pay for +a third party requester. -_This functionality is supported only on Bellecour Sidechain, calls on other chains -will revert. The function is kept as nonpayable to maintain retrocompatibility with the -iExec SDK._ +Be aware that anyone seeing a valid request order on the network +(via an off-chain public marketplace, via a `sponsorMatchOrders(..)` +pending transaction in the mempool or by any other means) might decide +to call the standard `matchOrders(..)` hook which will result in the +requester being debited instead. Therefore, such a front run would result +in a loss of some of the requester funds deposited in the iExec account +(a loss value equivalent to the price of the deal). -## RegistryEntry +#### Parameters -_Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +| Name | Type | Description | +| ---- | ---- | ----------- | +| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | +| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | -### registry +## IexecPoco2Facet + +### initialize ```solidity -contract IRegistry registry +function initialize(bytes32 _dealid, uint256 idx) public returns (bytes32) ``` -### owner +### contribute ```solidity -function owner() public view returns (address) +function contribute(bytes32 _taskid, bytes32 _resultHash, bytes32 _resultSeal, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external ``` -### setName +### contributeAndFinalize ```solidity -function setName(address, string) external +function contributeAndFinalize(bytes32 _taskid, bytes32 _resultDigest, bytes _results, bytes _resultsCallback, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external ``` -Sets the reverse registration name for a registry entry contract. +### reveal -_This functionality is supported only on Bellecour Sidechain, calls on other chains -will revert. The function is kept as nonpayable to maintain retrocompatibility with the -iExec SDK._ +```solidity +function reveal(bytes32 _taskid, bytes32 _resultDigest) external +``` -## App +### reopen -_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +function reopen(bytes32 _taskid) external +``` -### m_appName +### finalize ```solidity -string m_appName +function finalize(bytes32 _taskid, bytes _results, bytes _resultsCallback) external ``` -Members - -### m_appType +### claim ```solidity -string m_appType +function claim(bytes32 _taskid) public ``` -### m_appMultiaddr +### initializeArray ```solidity -bytes m_appMultiaddr +function initializeArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) ``` -### m_appChecksum +### claimArray ```solidity -bytes32 m_appChecksum +function claimArray(bytes32[] _taskid) external returns (bool) ``` -### m_appMREnclave +### initializeAndClaimArray ```solidity -bytes m_appMREnclave +function initializeAndClaimArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) ``` -### initialize +## IexecPocoAccessorsFacet + +### viewDeal ```solidity -function initialize(string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) public +function viewDeal(bytes32 id) external view returns (struct IexecLibCore_v5.Deal deal) ``` -Constructor +Get a deal created by PoCo classic facet. -## AppRegistry +#### Parameters -_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | The ID of the deal. | -### constructor +### viewTask ```solidity -constructor() public +function viewTask(bytes32 id) external view returns (struct IexecLibCore_v5.Task) ``` -Constructor +Get task created in Classic mode. -### createApp +#### Parameters -```solidity -function createApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external returns (contract App) -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | id of the task | -### predictApp +### computeDealVolume ```solidity -function predictApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external view returns (contract App) +function computeDealVolume(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external view returns (uint256) ``` -## IApp +Computes the volume of the "not yet created" deal based on the provided orders. +This function should only be used if the deal is not yet created. +For existing deals, use the deal accessors instead. -### owner +#### Parameters -```solidity -function owner() external view returns (address) -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The application order. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The request order. | -### m_appName +#### Return Values -```solidity -function m_appName() external view returns (string) -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| [0] | uint256 | The computed deal volume. | -### m_appType +### viewConsumed ```solidity -function m_appType() external view returns (string) +function viewConsumed(bytes32 _id) external view returns (uint256 consumed) ``` -### m_appMultiaddr +### viewPresigned ```solidity -function m_appMultiaddr() external view returns (bytes) +function viewPresigned(bytes32 _id) external view returns (address signer) ``` -### m_appChecksum +### viewContribution ```solidity -function m_appChecksum() external view returns (bytes32) +function viewContribution(bytes32 _taskid, address _worker) external view returns (struct IexecLibCore_v5.Contribution) ``` -### m_appMREnclave +### viewScore ```solidity -function m_appMREnclave() external view returns (bytes) +function viewScore(address _worker) external view returns (uint256) ``` -## Dataset - -_Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### m_datasetName +### resultFor ```solidity -string m_datasetName +function resultFor(bytes32 id) external view returns (bytes) ``` -Members - -### m_datasetMultiaddr +### name ```solidity -bytes m_datasetMultiaddr +function name() external view returns (string) ``` -### m_datasetChecksum +### symbol ```solidity -bytes32 m_datasetChecksum +function symbol() external view returns (string) ``` -### initialize +### decimals ```solidity -function initialize(string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) public +function decimals() external view returns (uint8) ``` -Constructor - -## DatasetRegistry - -_Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### constructor +### totalSupply ```solidity -constructor() public +function totalSupply() external view returns (uint256) ``` -Constructor - -### createDataset +### balanceOf ```solidity -function createDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external returns (contract Dataset) +function balanceOf(address account) external view returns (uint256) ``` -### predictDataset +### frozenOf ```solidity -function predictDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external view returns (contract Dataset) +function frozenOf(address account) external view returns (uint256) ``` -## IDataset - -### owner +### allowance ```solidity -function owner() external view returns (address) +function allowance(address account, address spender) external view returns (uint256) ``` -### m_datasetName +### viewAccount ```solidity -function m_datasetName() external view returns (string) +function viewAccount(address account) external view returns (struct IexecLibCore_v5.Account) ``` -### m_datasetMultiaddr +### token ```solidity -function m_datasetMultiaddr() external view returns (bytes) +function token() external view returns (address) ``` -### m_datasetChecksum +### viewCategory ```solidity -function m_datasetChecksum() external view returns (bytes32) +function viewCategory(uint256 _catid) external view returns (struct IexecLibCore_v5.Category category) ``` -## Address - -## BaseUpgradeabilityProxy - -_This contract implements a proxy that allows to change the -implementation address to which it will delegate. -Such a change is called an implementation upgrade._ - -### Upgraded +### countCategory ```solidity -event Upgraded(address implementation) -``` - -_Emitted when the implementation is upgraded._ - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| implementation | address | Address of the new implementation. | - -## InitializableUpgradeabilityProxy - -_Extends BaseUpgradeabilityProxy with an initializer for initializing -implementation and init data._ +function countCategory() external view returns (uint256 count) +``` -### initialize +### appregistry ```solidity -function initialize(address _logic, bytes _data) public payable +function appregistry() external view returns (contract IRegistry) ``` -_Contract initializer._ - -#### Parameters +### datasetregistry -| Name | Type | Description | -| ---- | ---- | ----------- | -| _logic | address | Address of the initial implementation. | -| _data | bytes | Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. | +```solidity +function datasetregistry() external view returns (contract IRegistry) +``` -## Proxy +### workerpoolregistry -_Implements delegation of calls to other contracts, with proper -forwarding of return values and bubbling of failures. -It defines a fallback function that delegates all calls to the address -returned by the abstract _implementation() internal function._ +```solidity +function workerpoolregistry() external view returns (contract IRegistry) +``` -### receive +### teebroker ```solidity -receive() external payable virtual +function teebroker() external view returns (address) ``` -_Receive function. -Implemented entirely in `_fallback`._ - -### fallback +### callbackgas ```solidity -fallback() external payable +function callbackgas() external view returns (uint256) ``` -_Fallback function. -Implemented entirely in `_fallback`._ +### viewDataset -## IWorkerpool +```solidity +function viewDataset(address dataset) external view returns (struct IexecLibCore_v5.DatasetInfo) +``` -### owner +### viewApp ```solidity -function owner() external view returns (address) +function viewApp(address app) external view returns (struct IexecLibCore_v5.AppInfo) ``` -### m_workerpoolDescription +### viewWorkerpool ```solidity -function m_workerpoolDescription() external view returns (string) +function viewWorkerpool(address workerpool) external view returns (struct IexecLibCore_v5.WorkerpoolInfo) ``` -### m_schedulerRewardRatioPolicy +### contribution_deadline_ratio ```solidity -function m_schedulerRewardRatioPolicy() external view returns (uint256) +function contribution_deadline_ratio() external pure returns (uint256) ``` -### m_workerStakeRatioPolicy +### reveal_deadline_ratio ```solidity -function m_workerStakeRatioPolicy() external view returns (uint256) +function reveal_deadline_ratio() external pure returns (uint256) ``` -## Workerpool +### final_deadline_ratio -_Referenced in the SDK with the current path `contracts/registries/workerpools/Workerpool.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +function final_deadline_ratio() external pure returns (uint256) +``` -### m_workerpoolDescription +### workerpool_stake_ratio ```solidity -string m_workerpoolDescription +function workerpool_stake_ratio() external pure returns (uint256) ``` -Parameters - -### m_workerStakeRatioPolicy +### kitty_ratio ```solidity -uint256 m_workerStakeRatioPolicy +function kitty_ratio() external pure returns (uint256) ``` -### m_schedulerRewardRatioPolicy +### kitty_min ```solidity -uint256 m_schedulerRewardRatioPolicy +function kitty_min() external pure returns (uint256) ``` -### PolicyUpdate +### kitty_address ```solidity -event PolicyUpdate(uint256 oldWorkerStakeRatioPolicy, uint256 newWorkerStakeRatioPolicy, uint256 oldSchedulerRewardRatioPolicy, uint256 newSchedulerRewardRatioPolicy) +function kitty_address() external pure returns (address) ``` -Events - -### initialize +### groupmember_purpose ```solidity -function initialize(string _workerpoolDescription) public +function groupmember_purpose() external pure returns (uint256) ``` -Constructor - -### changePolicy +### eip712domain_separator ```solidity -function changePolicy(uint256 _newWorkerStakeRatioPolicy, uint256 _newSchedulerRewardRatioPolicy) external +function eip712domain_separator() external view returns (bytes32) ``` -## WorkerpoolRegistry +## IexecPocoBoostAccessorsFacet -_Referenced in the SDK with the current path `contracts/registries/workerpools/WorkerpoolRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +Access to PoCo Boost tasks must be done with PoCo Classic `IexecPocoAccessors`. -### constructor +### viewDealBoost ```solidity -constructor() public +function viewDealBoost(bytes32 id) external view returns (struct IexecLibCore_v5.DealBoost deal) ``` -Constructor +Get a deal created by PoCo Boost facet. -### createWorkerpool +#### Parameters -```solidity -function createWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external returns (contract Workerpool) -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | The ID of the deal. | -### predictWorkerpool +## IexecPocoBoostFacet + +Works for deals with requested trust = 0. + +### matchOrdersBoost ```solidity -function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) +function matchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) ``` -## FacetBase +This boost match orders is only compatible with trust <= 1. +The requester gets debited. -_Every facet must inherit from this contract._ +#### Parameters -## PocoStorageLib +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The order signed by the application developer. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The order signed by the dataset provider. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The order signed by the workerpool manager. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The order signed by the requester. | -### PocoStorage +#### Return Values + +| Name | Type | Description | +| ---- | ---- | ----------- | +| [0] | bytes32 | The ID of the deal. | + +### sponsorMatchOrdersBoost ```solidity -struct PocoStorage { - contract IRegistry m_appregistry; - contract IRegistry m_datasetregistry; - contract IRegistry m_workerpoolregistry; - contract IERC20 m_baseToken; - string m_name; - string m_symbol; - uint8 m_decimals; - uint256 m_totalSupply; - mapping(address => uint256) m_balances; - mapping(address => uint256) m_frozens; - mapping(address => mapping(address => uint256)) m_allowances; - bytes32 m_eip712DomainSeparator; - mapping(bytes32 => address) m_presigned; - mapping(bytes32 => uint256) m_consumed; - mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; - mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; - mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; - mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; - mapping(address => uint256) m_workerScores; - address m_teebroker; - uint256 m_callbackgas; - struct IexecLibCore_v5.Category[] m_categories; - address m_v3_iexecHub; - mapping(address => bool) m_v3_scoreImported; - mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; -} +function sponsorMatchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) ``` -## IRegistry +Sponsor match orders boost for a requester. +Unlike the standard `matchOrdersBoost(..)` hook where the requester pays for +the deal, this current hook makes it possible for any `msg.sender` to pay for +a third party requester. -### isRegistered +Be aware that anyone seeing a valid request order on the network +(via an off-chain public marketplace, via a `sponsorMatchOrdersBoost(..)` +pending transaction in the mempool or by any other means) might decide +to call the standard `matchOrdersBoost(..)` hook which will result in the +requester being debited instead. Therefore, such a front run would result +in a loss of some of the requester funds deposited in the iExec account +(a loss value equivalent to the price of the deal). -```solidity -function isRegistered(address _entry) external view returns (bool) -``` +#### Parameters -## IexecEscrowTokenSwapFacet +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The app order. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The requester order. | -### UniswapV2Router +### pushResultBoost ```solidity -function UniswapV2Router() external view returns (contract IUniswapV2Router02) +function pushResultBoost(bytes32 dealId, uint256 index, bytes results, bytes resultsCallback, bytes authorizationSign, address enclaveChallenge, bytes enclaveSign) external ``` -### estimateDepositEthSent +Accept results of a task computed by a worker during Boost workflow. -```solidity -function estimateDepositEthSent(uint256 eth) external view returns (uint256 token) -``` +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| dealId | bytes32 | The id of the target deal. | +| index | uint256 | The index of the target task of the deal. | +| results | bytes | The results of the task computed by the worker. | +| resultsCallback | bytes | The results of the task computed by the worker that will be forwarded as call data to the callback address set by the requester. | +| authorizationSign | bytes | The authorization signed by the scheduler. authorizing the worker to push a result. | +| enclaveChallenge | address | The enclave address which can produce enclave signature. | +| enclaveSign | bytes | The signature generated from the enclave. | -### estimateDepositTokenWanted +### claimBoost ```solidity -function estimateDepositTokenWanted(uint256 token) external view returns (uint256 eth) +function claimBoost(bytes32 dealId, uint256 index) external ``` -### estimateWithdrawTokenSent +Claim task to get a refund if task is not completed after deadline. -```solidity -function estimateWithdrawTokenSent(uint256 token) external view returns (uint256 eth) -``` +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| dealId | bytes32 | The ID of the deal. | +| index | uint256 | The index of the task. | + +## IApp -### estimateWithdrawEthWanted +### owner ```solidity -function estimateWithdrawEthWanted(uint256 eth) external view returns (uint256 token) +function owner() external view returns (address) ``` -### receive +### m_appName ```solidity -receive() external payable +function m_appName() external view returns (string) ``` -### fallback +### m_appType ```solidity -fallback() external payable +function m_appType() external view returns (string) ``` -### depositEth +### m_appMultiaddr ```solidity -function depositEth() external payable +function m_appMultiaddr() external view returns (bytes) ``` -### depositEthFor +### m_appChecksum ```solidity -function depositEthFor(address target) external payable +function m_appChecksum() external view returns (bytes32) ``` -### safeDepositEth +### m_appMREnclave ```solidity -function safeDepositEth(uint256 minimum) external payable +function m_appMREnclave() external view returns (bytes) ``` -### safeDepositEthFor +## IDataset + +### owner ```solidity -function safeDepositEthFor(uint256 minimum, address target) external payable +function owner() external view returns (address) ``` -### requestToken +### m_datasetName ```solidity -function requestToken(uint256 amount) external payable +function m_datasetName() external view returns (string) ``` -### requestTokenFor +### m_datasetMultiaddr ```solidity -function requestTokenFor(uint256 amount, address target) external payable +function m_datasetMultiaddr() external view returns (bytes) ``` -### withdrawEth +### m_datasetChecksum ```solidity -function withdrawEth(uint256 amount) external +function m_datasetChecksum() external view returns (bytes32) ``` -### withdrawEthTo +## IWorkerpool + +### owner ```solidity -function withdrawEthTo(uint256 amount, address target) external +function owner() external view returns (address) ``` -### safeWithdrawEth +### m_workerpoolDescription ```solidity -function safeWithdrawEth(uint256 amount, uint256 minimum) external +function m_workerpoolDescription() external view returns (string) ``` -### safeWithdrawEthTo +### m_schedulerRewardRatioPolicy ```solidity -function safeWithdrawEthTo(uint256 amount, uint256 minimum, address target) external +function m_schedulerRewardRatioPolicy() external view returns (uint256) ``` -### matchOrdersWithEth +### m_workerStakeRatioPolicy ```solidity -function matchOrdersWithEth(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) public payable returns (bytes32) +function m_workerStakeRatioPolicy() external view returns (uint256) ``` From fc04737bfba386a0fa3d29c39ff8e6bc50855c46 Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Fri, 31 Oct 2025 16:33:07 +0100 Subject: [PATCH 71/77] refactor: update Solidity API documentation to rename interfaces, consolidate function signatures, and enhance clarity by introducing new methods for managing categories, datasets, and worker pools. This update also includes breaking changes to improve organization and maintainability. --- docs/solidity/index.md | 2338 ++++++++++++++++------------------------ 1 file changed, 922 insertions(+), 1416 deletions(-) diff --git a/docs/solidity/index.md b/docs/solidity/index.md index 28bf8c424..fa5ddcf95 100644 --- a/docs/solidity/index.md +++ b/docs/solidity/index.md @@ -1,2258 +1,1764 @@ # Solidity API -## IRegistry +## IexecInterfaceNative -### isRegistered +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in native mode. -```solidity -function isRegistered(address _entry) external view returns (bool) -``` +_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -## Registry +## IexecInterfaceToken -### master +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in token mode. + +_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +## IexecCategoryManagerFacet + +### createCategory ```solidity -address master +function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) ``` -### proxyCode +Methods + +## IexecConfigurationExtraFacet + +### changeRegistries ```solidity -bytes proxyCode +function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external ``` -### proxyCodeHash +## IexecConfigurationFacet + +### configure ```solidity -bytes32 proxyCodeHash +function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external ``` -### previous +### domain ```solidity -contract IRegistry previous +function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) ``` -### initialized +### updateDomainSeparator ```solidity -bool initialized +function updateDomainSeparator() external ``` -### initialize +### importScore ```solidity -function initialize(address _previous) external +function importScore(address _worker) external ``` -### setBaseURI +### setTeeBroker ```solidity -function setBaseURI(string baseUri) external +function setTeeBroker(address _teebroker) external ``` -### baseURI +### setCallbackGas ```solidity -function baseURI() public view returns (string) +function setCallbackGas(uint256 _callbackgas) external ``` -_Added for retrocompatibility! +## IexecERC20Core -Returns the base URI set via {setBaseURI}. This will be -automatically added as a prefix in {tokenURI} to each token's ID._ +## IexecERC20Facet -### isRegistered +### transfer ```solidity -function isRegistered(address _entry) external view returns (bool) +function transfer(address recipient, uint256 amount) external returns (bool) ``` -### setName +### approve ```solidity -function setName(address, string) external +function approve(address spender, uint256 value) external returns (bool) ``` -Sets the reverse registration name for a registry contract. - -_This functionality is supported only on Bellecour Sidechain, calls on other chains -will revert. The function is kept as nonpayable to maintain retrocompatibility with the -iExec SDK._ - -## RegistryEntry +### approveAndCall -_Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) +``` -### registry +### transferFrom ```solidity -contract IRegistry registry +function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) ``` -### owner +### increaseAllowance ```solidity -function owner() public view returns (address) +function increaseAllowance(address spender, uint256 addedValue) external returns (bool) ``` -### setName +### decreaseAllowance ```solidity -function setName(address, string) external +function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) ``` -Sets the reverse registration name for a registry entry contract. - -_This functionality is supported only on Bellecour Sidechain, calls on other chains -will revert. The function is kept as nonpayable to maintain retrocompatibility with the -iExec SDK._ +## IexecEscrow -## App +### Transfer -_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +event Transfer(address from, address to, uint256 value) +``` -### m_appName +### Lock ```solidity -string m_appName +event Lock(address owner, uint256 amount) ``` -Members - -### m_appType +### Unlock ```solidity -string m_appType +event Unlock(address owner, uint256 amount) ``` -### m_appMultiaddr +### Reward ```solidity -bytes m_appMultiaddr +event Reward(address owner, uint256 amount, bytes32 ref) ``` -### m_appChecksum +### Seize ```solidity -bytes32 m_appChecksum +event Seize(address owner, uint256 amount, bytes32 ref) ``` -### m_appMREnclave +## IexecEscrowNativeFacet + +### receive ```solidity -bytes m_appMREnclave +receive() external payable ``` -### initialize +### fallback ```solidity -function initialize(string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) public +fallback() external payable ``` -Constructor - -## AppRegistry +### deposit -_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +function deposit() external payable returns (bool) +``` -### constructor +### depositFor ```solidity -constructor() public +function depositFor(address target) external payable returns (bool) ``` -Constructor - -### createApp +### depositForArray ```solidity -function createApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external returns (contract App) +function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) ``` -### predictApp +### withdraw ```solidity -function predictApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external view returns (contract App) +function withdraw(uint256 amount) external returns (bool) ``` -## Dataset +### withdrawTo -_Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +function withdrawTo(uint256 amount, address target) external returns (bool) +``` -### m_datasetName +### recover ```solidity -string m_datasetName +function recover() external returns (uint256) ``` -Members +## IexecEscrowTokenFacet -### m_datasetMultiaddr +### receive ```solidity -bytes m_datasetMultiaddr +receive() external payable ``` -### m_datasetChecksum +### fallback ```solidity -bytes32 m_datasetChecksum +fallback() external payable ``` -### initialize +### deposit ```solidity -function initialize(string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) public +function deposit(uint256 amount) external returns (bool) ``` -Constructor - -## DatasetRegistry +### depositFor -_Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +function depositFor(uint256 amount, address target) external returns (bool) +``` -### constructor +### depositForArray ```solidity -constructor() public +function depositForArray(uint256[] amounts, address[] targets) external returns (bool) ``` -Constructor - -### createDataset +### withdraw ```solidity -function createDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external returns (contract Dataset) +function withdraw(uint256 amount) external returns (bool) ``` -### predictDataset +### withdrawTo ```solidity -function predictDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external view returns (contract Dataset) +function withdrawTo(uint256 amount, address target) external returns (bool) ``` -## Address - -## BaseUpgradeabilityProxy +### recover -_This contract implements a proxy that allows to change the -implementation address to which it will delegate. -Such a change is called an implementation upgrade._ +```solidity +function recover() external returns (uint256) +``` -### Upgraded +### receiveApproval ```solidity -event Upgraded(address implementation) +function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) ``` -_Emitted when the implementation is upgraded._ +## IexecOrderManagementFacet -#### Parameters +### manageAppOrder -| Name | Type | Description | -| ---- | ---- | ----------- | -| implementation | address | Address of the new implementation. | +```solidity +function manageAppOrder(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) external +``` -## InitializableUpgradeabilityProxy +### manageDatasetOrder -_Extends BaseUpgradeabilityProxy with an initializer for initializing -implementation and init data._ +```solidity +function manageDatasetOrder(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) external +``` -### initialize +### manageWorkerpoolOrder ```solidity -function initialize(address _logic, bytes _data) public payable +function manageWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) external ``` -_Contract initializer._ - -#### Parameters +### manageRequestOrder -| Name | Type | Description | -| ---- | ---- | ----------- | -| _logic | address | Address of the initial implementation. | -| _data | bytes | Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. | +```solidity +function manageRequestOrder(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) external +``` -## Proxy - -_Implements delegation of calls to other contracts, with proper -forwarding of return values and bubbling of failures. -It defines a fallback function that delegates all calls to the address -returned by the abstract _implementation() internal function._ - -### receive +## Matching ```solidity -receive() external payable virtual +struct Matching { + bytes32 apporderHash; + address appOwner; + bytes32 datasetorderHash; + address datasetOwner; + bytes32 workerpoolorderHash; + address workerpoolOwner; + bytes32 requestorderHash; + bool hasDataset; +} ``` -_Receive function. -Implemented entirely in `_fallback`._ +## IexecPoco1Facet -### fallback +### verifySignature ```solidity -fallback() external payable +function verifySignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) ``` -_Fallback function. -Implemented entirely in `_fallback`._ - -## Workerpool - -_Referenced in the SDK with the current path `contracts/registries/workerpools/Workerpool.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### m_workerpoolDescription +### verifyPresignature ```solidity -string m_workerpoolDescription +function verifyPresignature(address _identity, bytes32 _hash) external view returns (bool) ``` -Parameters - -### m_workerStakeRatioPolicy +### verifyPresignatureOrSignature ```solidity -uint256 m_workerStakeRatioPolicy +function verifyPresignatureOrSignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) ``` -### m_schedulerRewardRatioPolicy +### assertDatasetDealCompatibility ```solidity -uint256 m_schedulerRewardRatioPolicy +function assertDatasetDealCompatibility(struct IexecLibOrders_v5.DatasetOrder datasetOrder, bytes32 dealId) external view ``` -### PolicyUpdate +Public view function to check if a dataset order is compatible with a deal. +This function performs all the necessary checks to verify dataset order compatibility with a deal. +Reverts with `IncompatibleDatasetOrder(reason)` if the dataset order is not compatible with the deal, does +nothing otherwise. -```solidity -event PolicyUpdate(uint256 oldWorkerStakeRatioPolicy, uint256 newWorkerStakeRatioPolicy, uint256 oldSchedulerRewardRatioPolicy, uint256 newSchedulerRewardRatioPolicy) -``` +_This function is mainly consumed by offchain clients. It should be carefully inspected if +used in on-chain code. +This function should not be used in `matchOrders` since it does not check the same requirements. +The choice of reverting instead of returning true/false is motivated by the Java middleware +requirements._ -Events +#### Parameters -### initialize +| Name | Type | Description | +| ---- | ---- | ----------- | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order to verify | +| dealId | bytes32 | The deal ID to check against | + +### matchOrders ```solidity -function initialize(string _workerpoolDescription) public +function matchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) ``` -Constructor +Match orders. The requester gets debited. -### changePolicy +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | +| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | + +### sponsorMatchOrders ```solidity -function changePolicy(uint256 _newWorkerStakeRatioPolicy, uint256 _newSchedulerRewardRatioPolicy) external +function sponsorMatchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) ``` -## WorkerpoolRegistry +Sponsor match orders for a requester. +Unlike the standard `matchOrders(..)` hook where the requester pays for +the deal, this current hook makes it possible for any `msg.sender` to pay for +a third party requester. -_Referenced in the SDK with the current path `contracts/registries/workerpools/WorkerpoolRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +Be aware that anyone seeing a valid request order on the network +(via an off-chain public marketplace, via a `sponsorMatchOrders(..)` +pending transaction in the mempool or by any other means) might decide +to call the standard `matchOrders(..)` hook which will result in the +requester being debited instead. Therefore, such a front run would result +in a loss of some of the requester funds deposited in the iExec account +(a loss value equivalent to the price of the deal). -### constructor +#### Parameters -```solidity -constructor() public -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | +| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | -Constructor +## IexecPoco2Facet -### createWorkerpool +### initialize ```solidity -function createWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external returns (contract Workerpool) +function initialize(bytes32 _dealid, uint256 idx) public returns (bytes32) ``` -### predictWorkerpool +### contribute ```solidity -function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) +function contribute(bytes32 _taskid, bytes32 _resultHash, bytes32 _resultSeal, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external ``` -## IexecInterfaceNative - -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in native mode. - -_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -## IexecInterfaceToken +### contributeAndFinalize -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in token mode. +```solidity +function contributeAndFinalize(bytes32 _taskid, bytes32 _resultDigest, bytes _results, bytes _resultsCallback, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external +``` -_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +### reveal -## IexecConfigurationFacet +```solidity +function reveal(bytes32 _taskid, bytes32 _resultDigest) external +``` -### configure +### reopen ```solidity -function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external +function reopen(bytes32 _taskid) external ``` -### domain +### finalize ```solidity -function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) +function finalize(bytes32 _taskid, bytes _results, bytes _resultsCallback) external ``` -### updateDomainSeparator +### claim ```solidity -function updateDomainSeparator() external +function claim(bytes32 _taskid) public ``` -### importScore +### initializeArray ```solidity -function importScore(address _worker) external +function initializeArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) ``` -### setTeeBroker +### claimArray ```solidity -function setTeeBroker(address _teebroker) external +function claimArray(bytes32[] _taskid) external returns (bool) ``` -### setCallbackGas +### initializeAndClaimArray ```solidity -function setCallbackGas(uint256 _callbackgas) external +function initializeAndClaimArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) ``` -## IexecRelayFacet +## IexecPocoAccessorsFacet -### broadcastAppOrder +### viewDeal ```solidity -function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external +function viewDeal(bytes32 id) external view returns (struct IexecLibCore_v5.Deal deal) ``` -### broadcastDatasetOrder +Get a deal created by PoCo classic facet. -```solidity -function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external -``` +#### Parameters -### broadcastWorkerpoolOrder +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | The ID of the deal. | + +### viewTask ```solidity -function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external +function viewTask(bytes32 id) external view returns (struct IexecLibCore_v5.Task) ``` -### broadcastRequestOrder +Get task created in Classic mode. + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | id of the task | + +### computeDealVolume ```solidity -function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external +function computeDealVolume(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external view returns (uint256) ``` -## IexecLibCore_v5 +Computes the volume of the "not yet created" deal based on the provided orders. +This function should only be used if the deal is not yet created. +For existing deals, use the deal accessors instead. -### Account +#### Parameters -Tools +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The application order. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The request order. | + +#### Return Values + +| Name | Type | Description | +| ---- | ---- | ----------- | +| [0] | uint256 | The computed deal volume. | + +### viewConsumed ```solidity -struct Account { - uint256 stake; - uint256 locked; -} +function viewConsumed(bytes32 _id) external view returns (uint256 consumed) ``` -### Category +### viewPresigned ```solidity -struct Category { - string name; - string description; - uint256 workClockTimeRef; -} +function viewPresigned(bytes32 _id) external view returns (address signer) ``` -### DatasetInfo +### viewContribution ```solidity -struct DatasetInfo { - address owner; - string m_datasetName; - bytes m_datasetMultiaddr; - bytes32 m_datasetChecksum; -} +function viewContribution(bytes32 _taskid, address _worker) external view returns (struct IexecLibCore_v5.Contribution) ``` -### AppInfo +### viewScore ```solidity -struct AppInfo { - address owner; - string m_appName; - string m_appType; - bytes m_appMultiaddr; - bytes32 m_appChecksum; - bytes m_appMREnclave; -} +function viewScore(address _worker) external view returns (uint256) ``` -### WorkerpoolInfo +### resultFor ```solidity -struct WorkerpoolInfo { - address owner; - string m_workerpoolDescription; - uint256 m_workerStakeRatioPolicy; - uint256 m_schedulerRewardRatioPolicy; -} +function resultFor(bytes32 id) external view returns (bytes) ``` -### Resource - -Clerk - Deals +### name ```solidity -struct Resource { - address pointer; - address owner; - uint256 price; -} +function name() external view returns (string) ``` -### Deal +### symbol ```solidity -struct Deal { - struct IexecLibCore_v5.Resource app; - struct IexecLibCore_v5.Resource dataset; - struct IexecLibCore_v5.Resource workerpool; - uint256 trust; - uint256 category; - bytes32 tag; - address requester; - address beneficiary; - address callback; - string params; - uint256 startTime; - uint256 botFirst; - uint256 botSize; - uint256 workerStake; - uint256 schedulerRewardRatio; - address sponsor; -} +function symbol() external view returns (string) ``` -### DealBoost - -Simplified deals for PoCo Boost module. +### decimals ```solidity -struct DealBoost { - address appOwner; - uint96 appPrice; - address datasetOwner; - uint96 datasetPrice; - address workerpoolOwner; - uint96 workerpoolPrice; - address requester; - uint96 workerReward; - address callback; - uint40 deadline; - uint16 botFirst; - uint16 botSize; - bytes3 shortTag; - address sponsor; -} +function decimals() external view returns (uint8) ``` -### TaskStatusEnum - -Tasks +### totalSupply ```solidity -enum TaskStatusEnum { - UNSET, - ACTIVE, - REVEALING, - COMPLETED, - FAILED -} +function totalSupply() external view returns (uint256) ``` -### Task +### balanceOf ```solidity -struct Task { - enum IexecLibCore_v5.TaskStatusEnum status; - bytes32 dealid; - uint256 idx; - uint256 timeref; - uint256 contributionDeadline; - uint256 revealDeadline; - uint256 finalDeadline; - bytes32 consensusValue; - uint256 revealCounter; - uint256 winnerCounter; - address[] contributors; - bytes32 resultDigest; - bytes results; - uint256 resultsTimestamp; - bytes resultsCallback; -} +function balanceOf(address account) external view returns (uint256) ``` -### Consensus - -Consensus +### frozenOf ```solidity -struct Consensus { - mapping(bytes32 => uint256) group; - uint256 total; -} +function frozenOf(address account) external view returns (uint256) ``` -### ContributionStatusEnum - -Consensus +### allowance ```solidity -enum ContributionStatusEnum { - UNSET, - CONTRIBUTED, - PROVED, - REJECTED -} +function allowance(address account, address spender) external view returns (uint256) ``` -### Contribution +### viewAccount ```solidity -struct Contribution { - enum IexecLibCore_v5.ContributionStatusEnum status; - bytes32 resultHash; - bytes32 resultSeal; - address enclaveChallenge; - uint256 weight; -} +function viewAccount(address account) external view returns (struct IexecLibCore_v5.Account) ``` -## IexecLibOrders_v5 - -### EIP712DOMAIN_TYPEHASH +### token ```solidity -bytes32 EIP712DOMAIN_TYPEHASH +function token() external view returns (address) ``` -### APPORDER_TYPEHASH +### viewCategory ```solidity -bytes32 APPORDER_TYPEHASH +function viewCategory(uint256 _catid) external view returns (struct IexecLibCore_v5.Category category) ``` -### DATASETORDER_TYPEHASH +### countCategory ```solidity -bytes32 DATASETORDER_TYPEHASH +function countCategory() external view returns (uint256 count) ``` -### WORKERPOOLORDER_TYPEHASH +### appregistry ```solidity -bytes32 WORKERPOOLORDER_TYPEHASH +function appregistry() external view returns (contract IRegistry) ``` -### REQUESTORDER_TYPEHASH +### datasetregistry ```solidity -bytes32 REQUESTORDER_TYPEHASH +function datasetregistry() external view returns (contract IRegistry) ``` -### APPORDEROPERATION_TYPEHASH +### workerpoolregistry ```solidity -bytes32 APPORDEROPERATION_TYPEHASH +function workerpoolregistry() external view returns (contract IRegistry) ``` -### DATASETORDEROPERATION_TYPEHASH +### teebroker ```solidity -bytes32 DATASETORDEROPERATION_TYPEHASH +function teebroker() external view returns (address) ``` -### WORKERPOOLORDEROPERATION_TYPEHASH +### callbackgas ```solidity -bytes32 WORKERPOOLORDEROPERATION_TYPEHASH +function callbackgas() external view returns (uint256) ``` -### REQUESTORDEROPERATION_TYPEHASH +### viewDataset ```solidity -bytes32 REQUESTORDEROPERATION_TYPEHASH +function viewDataset(address dataset) external view returns (struct IexecLibCore_v5.DatasetInfo) ``` -### OrderOperationEnum +### viewApp ```solidity -enum OrderOperationEnum { - SIGN, - CLOSE -} +function viewApp(address app) external view returns (struct IexecLibCore_v5.AppInfo) ``` -### EIP712Domain +### viewWorkerpool ```solidity -struct EIP712Domain { - string name; - string version; - uint256 chainId; - address verifyingContract; -} +function viewWorkerpool(address workerpool) external view returns (struct IexecLibCore_v5.WorkerpoolInfo) ``` -### AppOrder +### contribution_deadline_ratio ```solidity -struct AppOrder { - address app; - uint256 appprice; - uint256 volume; - bytes32 tag; - address datasetrestrict; - address workerpoolrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function contribution_deadline_ratio() external pure returns (uint256) ``` -### DatasetOrder +### reveal_deadline_ratio ```solidity -struct DatasetOrder { - address dataset; - uint256 datasetprice; - uint256 volume; - bytes32 tag; - address apprestrict; - address workerpoolrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function reveal_deadline_ratio() external pure returns (uint256) ``` -### WorkerpoolOrder +### final_deadline_ratio ```solidity -struct WorkerpoolOrder { - address workerpool; - uint256 workerpoolprice; - uint256 volume; - bytes32 tag; - uint256 category; - uint256 trust; - address apprestrict; - address datasetrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function final_deadline_ratio() external pure returns (uint256) ``` -### RequestOrder +### workerpool_stake_ratio ```solidity -struct RequestOrder { - address app; - uint256 appmaxprice; - address dataset; - uint256 datasetmaxprice; - address workerpool; - uint256 workerpoolmaxprice; - address requester; - uint256 volume; - bytes32 tag; - uint256 category; - uint256 trust; - address beneficiary; - address callback; - string params; - bytes32 salt; - bytes sign; -} +function workerpool_stake_ratio() external pure returns (uint256) ``` -### AppOrderOperation +### kitty_ratio ```solidity -struct AppOrderOperation { - struct IexecLibOrders_v5.AppOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function kitty_ratio() external pure returns (uint256) ``` -### DatasetOrderOperation +### kitty_min ```solidity -struct DatasetOrderOperation { - struct IexecLibOrders_v5.DatasetOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function kitty_min() external pure returns (uint256) ``` -### WorkerpoolOrderOperation +### kitty_address ```solidity -struct WorkerpoolOrderOperation { - struct IexecLibOrders_v5.WorkerpoolOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function kitty_address() external pure returns (address) ``` -### RequestOrderOperation +### groupmember_purpose ```solidity -struct RequestOrderOperation { - struct IexecLibOrders_v5.RequestOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function groupmember_purpose() external pure returns (uint256) ``` -### hash +### eip712domain_separator ```solidity -function hash(struct IexecLibOrders_v5.EIP712Domain _domain) public pure returns (bytes32 domainhash) +function eip712domain_separator() external view returns (bytes32) ``` -### hash +## IexecPocoBoostAccessorsFacet -```solidity -function hash(struct IexecLibOrders_v5.AppOrder _apporder) public pure returns (bytes32 apphash) -``` +Access to PoCo Boost tasks must be done with PoCo Classic `IexecPocoAccessors`. -### hash +### viewDealBoost ```solidity -function hash(struct IexecLibOrders_v5.DatasetOrder _datasetorder) public pure returns (bytes32 datasethash) +function viewDealBoost(bytes32 id) external view returns (struct IexecLibCore_v5.DealBoost deal) ``` -### hash - -```solidity -function hash(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) public pure returns (bytes32 workerpoolhash) -``` +Get a deal created by PoCo Boost facet. -### hash +#### Parameters -```solidity -function hash(struct IexecLibOrders_v5.RequestOrder _requestorder) public pure returns (bytes32 requesthash) -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | The ID of the deal. | -### hash +## IexecPocoBoostFacet -```solidity -function hash(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) public pure returns (bytes32) -``` +Works for deals with requested trust = 0. -### hash +### matchOrdersBoost ```solidity -function hash(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) public pure returns (bytes32) +function matchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) ``` -### hash +This boost match orders is only compatible with trust <= 1. +The requester gets debited. -```solidity -function hash(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) public pure returns (bytes32) -``` +#### Parameters -### hash +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The order signed by the application developer. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The order signed by the dataset provider. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The order signed by the workerpool manager. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The order signed by the requester. | -```solidity -function hash(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) public pure returns (bytes32) -``` +#### Return Values -## PocoStorageLib +| Name | Type | Description | +| ---- | ---- | ----------- | +| [0] | bytes32 | The ID of the deal. | -### PocoStorage +### sponsorMatchOrdersBoost ```solidity -struct PocoStorage { - contract IRegistry m_appregistry; - contract IRegistry m_datasetregistry; - contract IRegistry m_workerpoolregistry; - contract IERC20 m_baseToken; - string m_name; - string m_symbol; - uint8 m_decimals; - uint256 m_totalSupply; - mapping(address => uint256) m_balances; - mapping(address => uint256) m_frozens; - mapping(address => mapping(address => uint256)) m_allowances; - bytes32 m_eip712DomainSeparator; - mapping(bytes32 => address) m_presigned; - mapping(bytes32 => uint256) m_consumed; - mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; - mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; - mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; - mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; - mapping(address => uint256) m_workerScores; - address m_teebroker; - uint256 m_callbackgas; - struct IexecLibCore_v5.Category[] m_categories; - contract IexecHubV3Interface m_v3_iexecHub; - mapping(address => bool) m_v3_scoreImported; - mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; -} +function sponsorMatchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) ``` -## IexecCategoryManagerFacet - -### createCategory +Sponsor match orders boost for a requester. +Unlike the standard `matchOrdersBoost(..)` hook where the requester pays for +the deal, this current hook makes it possible for any `msg.sender` to pay for +a third party requester. -```solidity -function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) -``` +Be aware that anyone seeing a valid request order on the network +(via an off-chain public marketplace, via a `sponsorMatchOrdersBoost(..)` +pending transaction in the mempool or by any other means) might decide +to call the standard `matchOrdersBoost(..)` hook which will result in the +requester being debited instead. Therefore, such a front run would result +in a loss of some of the requester funds deposited in the iExec account +(a loss value equivalent to the price of the deal). -Methods +#### Parameters -## IexecConfigurationExtraFacet +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The app order. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The requester order. | -### changeRegistries +### pushResultBoost ```solidity -function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external +function pushResultBoost(bytes32 dealId, uint256 index, bytes results, bytes resultsCallback, bytes authorizationSign, address enclaveChallenge, bytes enclaveSign) external ``` -## IexecERC20Core - -## IexecERC20Facet +Accept results of a task computed by a worker during Boost workflow. -### transfer +#### Parameters -```solidity -function transfer(address recipient, uint256 amount) external returns (bool) -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| dealId | bytes32 | The id of the target deal. | +| index | uint256 | The index of the target task of the deal. | +| results | bytes | The results of the task computed by the worker. | +| resultsCallback | bytes | The results of the task computed by the worker that will be forwarded as call data to the callback address set by the requester. | +| authorizationSign | bytes | The authorization signed by the scheduler. authorizing the worker to push a result. | +| enclaveChallenge | address | The enclave address which can produce enclave signature. | +| enclaveSign | bytes | The signature generated from the enclave. | -### approve +### claimBoost ```solidity -function approve(address spender, uint256 value) external returns (bool) +function claimBoost(bytes32 dealId, uint256 index) external ``` -### approveAndCall +Claim task to get a refund if task is not completed after deadline. -```solidity -function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) -``` +#### Parameters -### transferFrom +| Name | Type | Description | +| ---- | ---- | ----------- | +| dealId | bytes32 | The ID of the deal. | +| index | uint256 | The index of the task. | -```solidity -function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) -``` +## IexecRelayFacet -### increaseAllowance +### broadcastAppOrder ```solidity -function increaseAllowance(address spender, uint256 addedValue) external returns (bool) +function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external ``` -### decreaseAllowance +### broadcastDatasetOrder ```solidity -function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) +function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external ``` -## IexecEscrow - -### Transfer +### broadcastWorkerpoolOrder ```solidity -event Transfer(address from, address to, uint256 value) +function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external ``` -### Lock +### broadcastRequestOrder ```solidity -event Lock(address owner, uint256 amount) +function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external ``` -### Unlock +## IexecLibCore_v5 -```solidity -event Unlock(address owner, uint256 amount) -``` +### Account -### Reward +Tools ```solidity -event Reward(address owner, uint256 amount, bytes32 ref) +struct Account { + uint256 stake; + uint256 locked; +} ``` -### Seize +### Category ```solidity -event Seize(address owner, uint256 amount, bytes32 ref) +struct Category { + string name; + string description; + uint256 workClockTimeRef; +} ``` -## IexecEscrowNativeFacet - -### receive +### DatasetInfo ```solidity -receive() external payable +struct DatasetInfo { + address owner; + string m_datasetName; + bytes m_datasetMultiaddr; + bytes32 m_datasetChecksum; +} ``` -### fallback +### AppInfo ```solidity -fallback() external payable +struct AppInfo { + address owner; + string m_appName; + string m_appType; + bytes m_appMultiaddr; + bytes32 m_appChecksum; + bytes m_appMREnclave; +} ``` -### deposit +### WorkerpoolInfo ```solidity -function deposit() external payable returns (bool) +struct WorkerpoolInfo { + address owner; + string m_workerpoolDescription; + uint256 m_workerStakeRatioPolicy; + uint256 m_schedulerRewardRatioPolicy; +} ``` -### depositFor +### Resource + +Clerk - Deals ```solidity -function depositFor(address target) external payable returns (bool) +struct Resource { + address pointer; + address owner; + uint256 price; +} ``` -### depositForArray +### Deal ```solidity -function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) -``` +struct Deal { + struct IexecLibCore_v5.Resource app; + struct IexecLibCore_v5.Resource dataset; + struct IexecLibCore_v5.Resource workerpool; + uint256 trust; + uint256 category; + bytes32 tag; + address requester; + address beneficiary; + address callback; + string params; + uint256 startTime; + uint256 botFirst; + uint256 botSize; + uint256 workerStake; + uint256 schedulerRewardRatio; + address sponsor; +} +``` -### withdraw +### DealBoost + +Simplified deals for PoCo Boost module. ```solidity -function withdraw(uint256 amount) external returns (bool) +struct DealBoost { + address appOwner; + uint96 appPrice; + address datasetOwner; + uint96 datasetPrice; + address workerpoolOwner; + uint96 workerpoolPrice; + address requester; + uint96 workerReward; + address callback; + uint40 deadline; + uint16 botFirst; + uint16 botSize; + bytes3 shortTag; + address sponsor; +} ``` -### withdrawTo +### TaskStatusEnum + +Tasks ```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) +enum TaskStatusEnum { + UNSET, + ACTIVE, + REVEALING, + COMPLETED, + FAILED +} ``` -### recover +### Task ```solidity -function recover() external returns (uint256) +struct Task { + enum IexecLibCore_v5.TaskStatusEnum status; + bytes32 dealid; + uint256 idx; + uint256 timeref; + uint256 contributionDeadline; + uint256 revealDeadline; + uint256 finalDeadline; + bytes32 consensusValue; + uint256 revealCounter; + uint256 winnerCounter; + address[] contributors; + bytes32 resultDigest; + bytes results; + uint256 resultsTimestamp; + bytes resultsCallback; +} ``` -## IexecEscrowTokenFacet +### Consensus -### receive +Consensus ```solidity -receive() external payable +struct Consensus { + mapping(bytes32 => uint256) group; + uint256 total; +} ``` -### fallback +### ContributionStatusEnum + +Consensus ```solidity -fallback() external payable +enum ContributionStatusEnum { + UNSET, + CONTRIBUTED, + PROVED, + REJECTED +} ``` -### deposit +### Contribution ```solidity -function deposit(uint256 amount) external returns (bool) +struct Contribution { + enum IexecLibCore_v5.ContributionStatusEnum status; + bytes32 resultHash; + bytes32 resultSeal; + address enclaveChallenge; + uint256 weight; +} ``` -### depositFor +## IexecLibOrders_v5 + +### EIP712DOMAIN_TYPEHASH ```solidity -function depositFor(uint256 amount, address target) external returns (bool) +bytes32 EIP712DOMAIN_TYPEHASH ``` -### depositForArray +### APPORDER_TYPEHASH ```solidity -function depositForArray(uint256[] amounts, address[] targets) external returns (bool) +bytes32 APPORDER_TYPEHASH ``` -### withdraw +### DATASETORDER_TYPEHASH ```solidity -function withdraw(uint256 amount) external returns (bool) +bytes32 DATASETORDER_TYPEHASH ``` -### withdrawTo +### WORKERPOOLORDER_TYPEHASH ```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) +bytes32 WORKERPOOLORDER_TYPEHASH ``` -### recover +### REQUESTORDER_TYPEHASH ```solidity -function recover() external returns (uint256) +bytes32 REQUESTORDER_TYPEHASH ``` -### receiveApproval +### APPORDEROPERATION_TYPEHASH ```solidity -function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) +bytes32 APPORDEROPERATION_TYPEHASH ``` -## IexecOrderManagementFacet - -### manageAppOrder +### DATASETORDEROPERATION_TYPEHASH ```solidity -function manageAppOrder(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) external +bytes32 DATASETORDEROPERATION_TYPEHASH ``` -### manageDatasetOrder +### WORKERPOOLORDEROPERATION_TYPEHASH ```solidity -function manageDatasetOrder(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) external +bytes32 WORKERPOOLORDEROPERATION_TYPEHASH ``` -### manageWorkerpoolOrder +### REQUESTORDEROPERATION_TYPEHASH ```solidity -function manageWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) external +bytes32 REQUESTORDEROPERATION_TYPEHASH ``` -### manageRequestOrder +### OrderOperationEnum ```solidity -function manageRequestOrder(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) external +enum OrderOperationEnum { + SIGN, + CLOSE +} ``` -## Matching +### EIP712Domain ```solidity -struct Matching { - bytes32 apporderHash; - address appOwner; - bytes32 datasetorderHash; - address datasetOwner; - bytes32 workerpoolorderHash; - address workerpoolOwner; - bytes32 requestorderHash; - bool hasDataset; +struct EIP712Domain { + string name; + string version; + uint256 chainId; + address verifyingContract; } ``` -## IexecPoco1Facet - -### verifySignature +### AppOrder ```solidity -function verifySignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) +struct AppOrder { + address app; + uint256 appprice; + uint256 volume; + bytes32 tag; + address datasetrestrict; + address workerpoolrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -### verifyPresignature +### DatasetOrder ```solidity -function verifyPresignature(address _identity, bytes32 _hash) external view returns (bool) +struct DatasetOrder { + address dataset; + uint256 datasetprice; + uint256 volume; + bytes32 tag; + address apprestrict; + address workerpoolrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -### verifyPresignatureOrSignature +### WorkerpoolOrder ```solidity -function verifyPresignatureOrSignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) +struct WorkerpoolOrder { + address workerpool; + uint256 workerpoolprice; + uint256 volume; + bytes32 tag; + uint256 category; + uint256 trust; + address apprestrict; + address datasetrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -### assertDatasetDealCompatibility +### RequestOrder ```solidity -function assertDatasetDealCompatibility(struct IexecLibOrders_v5.DatasetOrder datasetOrder, bytes32 dealId) external view +struct RequestOrder { + address app; + uint256 appmaxprice; + address dataset; + uint256 datasetmaxprice; + address workerpool; + uint256 workerpoolmaxprice; + address requester; + uint256 volume; + bytes32 tag; + uint256 category; + uint256 trust; + address beneficiary; + address callback; + string params; + bytes32 salt; + bytes sign; +} ``` -Public view function to check if a dataset order is compatible with a deal. -This function performs all the necessary checks to verify dataset order compatibility with a deal. -Reverts with `IncompatibleDatasetOrder(reason)` if the dataset order is not compatible with the deal, does -nothing otherwise. - -_This function is mainly consumed by offchain clients. It should be carefully inspected if -used in on-chain code. -This function should not be used in `matchOrders` since it does not check the same requirements. -The choice of reverting instead of returning true/false is motivated by the Java middleware -requirements._ +### AppOrderOperation -#### Parameters +```solidity +struct AppOrderOperation { + struct IexecLibOrders_v5.AppOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} +``` -| Name | Type | Description | -| ---- | ---- | ----------- | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order to verify | -| dealId | bytes32 | The deal ID to check against | - -### matchOrders - -```solidity -function matchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) -``` - -Match orders. The requester gets debited. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | -| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | - -### sponsorMatchOrders - -```solidity -function sponsorMatchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) -``` - -Sponsor match orders for a requester. -Unlike the standard `matchOrders(..)` hook where the requester pays for -the deal, this current hook makes it possible for any `msg.sender` to pay for -a third party requester. - -Be aware that anyone seeing a valid request order on the network -(via an off-chain public marketplace, via a `sponsorMatchOrders(..)` -pending transaction in the mempool or by any other means) might decide -to call the standard `matchOrders(..)` hook which will result in the -requester being debited instead. Therefore, such a front run would result -in a loss of some of the requester funds deposited in the iExec account -(a loss value equivalent to the price of the deal). - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | -| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | - -## IexecPoco2Facet - -### initialize - -```solidity -function initialize(bytes32 _dealid, uint256 idx) public returns (bytes32) -``` - -### contribute - -```solidity -function contribute(bytes32 _taskid, bytes32 _resultHash, bytes32 _resultSeal, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external -``` - -### contributeAndFinalize - -```solidity -function contributeAndFinalize(bytes32 _taskid, bytes32 _resultDigest, bytes _results, bytes _resultsCallback, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external -``` - -### reveal - -```solidity -function reveal(bytes32 _taskid, bytes32 _resultDigest) external -``` - -### reopen - -```solidity -function reopen(bytes32 _taskid) external -``` - -### finalize - -```solidity -function finalize(bytes32 _taskid, bytes _results, bytes _resultsCallback) external -``` - -### claim - -```solidity -function claim(bytes32 _taskid) public -``` - -### initializeArray - -```solidity -function initializeArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) -``` - -### claimArray - -```solidity -function claimArray(bytes32[] _taskid) external returns (bool) -``` - -### initializeAndClaimArray - -```solidity -function initializeAndClaimArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) -``` - -## IexecPocoAccessorsFacet - -### viewDeal - -```solidity -function viewDeal(bytes32 id) external view returns (struct IexecLibCore_v5.Deal deal) -``` - -Get a deal created by PoCo classic facet. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | The ID of the deal. | - -### viewTask - -```solidity -function viewTask(bytes32 id) external view returns (struct IexecLibCore_v5.Task) -``` - -Get task created in Classic mode. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | id of the task | - -### computeDealVolume - -```solidity -function computeDealVolume(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external view returns (uint256) -``` - -Computes the volume of the "not yet created" deal based on the provided orders. -This function should only be used if the deal is not yet created. -For existing deals, use the deal accessors instead. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The application order. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The request order. | - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | uint256 | The computed deal volume. | - -### viewConsumed - -```solidity -function viewConsumed(bytes32 _id) external view returns (uint256 consumed) -``` - -### viewPresigned - -```solidity -function viewPresigned(bytes32 _id) external view returns (address signer) -``` - -### viewContribution - -```solidity -function viewContribution(bytes32 _taskid, address _worker) external view returns (struct IexecLibCore_v5.Contribution) -``` - -### viewScore - -```solidity -function viewScore(address _worker) external view returns (uint256) -``` - -### resultFor - -```solidity -function resultFor(bytes32 id) external view returns (bytes) -``` - -### name - -```solidity -function name() external view returns (string) -``` - -### symbol - -```solidity -function symbol() external view returns (string) -``` - -### decimals - -```solidity -function decimals() external view returns (uint8) -``` - -### totalSupply - -```solidity -function totalSupply() external view returns (uint256) -``` - -### balanceOf - -```solidity -function balanceOf(address account) external view returns (uint256) -``` - -### frozenOf - -```solidity -function frozenOf(address account) external view returns (uint256) -``` - -### allowance - -```solidity -function allowance(address account, address spender) external view returns (uint256) -``` - -### viewAccount - -```solidity -function viewAccount(address account) external view returns (struct IexecLibCore_v5.Account) -``` - -### token - -```solidity -function token() external view returns (address) -``` - -### viewCategory - -```solidity -function viewCategory(uint256 _catid) external view returns (struct IexecLibCore_v5.Category category) -``` - -### countCategory - -```solidity -function countCategory() external view returns (uint256 count) -``` - -### appregistry - -```solidity -function appregistry() external view returns (contract IRegistry) -``` - -### datasetregistry - -```solidity -function datasetregistry() external view returns (contract IRegistry) -``` - -### workerpoolregistry - -```solidity -function workerpoolregistry() external view returns (contract IRegistry) -``` - -### teebroker - -```solidity -function teebroker() external view returns (address) -``` - -### callbackgas - -```solidity -function callbackgas() external view returns (uint256) -``` - -### viewDataset - -```solidity -function viewDataset(address dataset) external view returns (struct IexecLibCore_v5.DatasetInfo) -``` - -### viewApp - -```solidity -function viewApp(address app) external view returns (struct IexecLibCore_v5.AppInfo) -``` - -### viewWorkerpool - -```solidity -function viewWorkerpool(address workerpool) external view returns (struct IexecLibCore_v5.WorkerpoolInfo) -``` - -### contribution_deadline_ratio - -```solidity -function contribution_deadline_ratio() external pure returns (uint256) -``` - -### reveal_deadline_ratio - -```solidity -function reveal_deadline_ratio() external pure returns (uint256) -``` - -### final_deadline_ratio +### DatasetOrderOperation ```solidity -function final_deadline_ratio() external pure returns (uint256) +struct DatasetOrderOperation { + struct IexecLibOrders_v5.DatasetOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -### workerpool_stake_ratio +### WorkerpoolOrderOperation ```solidity -function workerpool_stake_ratio() external pure returns (uint256) +struct WorkerpoolOrderOperation { + struct IexecLibOrders_v5.WorkerpoolOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -### kitty_ratio +### RequestOrderOperation ```solidity -function kitty_ratio() external pure returns (uint256) +struct RequestOrderOperation { + struct IexecLibOrders_v5.RequestOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -### kitty_min +### hash ```solidity -function kitty_min() external pure returns (uint256) +function hash(struct IexecLibOrders_v5.EIP712Domain _domain) public pure returns (bytes32 domainhash) ``` -### kitty_address +### hash ```solidity -function kitty_address() external pure returns (address) +function hash(struct IexecLibOrders_v5.AppOrder _apporder) public pure returns (bytes32 apphash) ``` -### groupmember_purpose +### hash ```solidity -function groupmember_purpose() external pure returns (uint256) +function hash(struct IexecLibOrders_v5.DatasetOrder _datasetorder) public pure returns (bytes32 datasethash) ``` -### eip712domain_separator +### hash ```solidity -function eip712domain_separator() external view returns (bytes32) +function hash(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) public pure returns (bytes32 workerpoolhash) ``` -## IexecPocoBoostAccessorsFacet - -Access to PoCo Boost tasks must be done with PoCo Classic `IexecPocoAccessors`. - -### viewDealBoost +### hash ```solidity -function viewDealBoost(bytes32 id) external view returns (struct IexecLibCore_v5.DealBoost deal) +function hash(struct IexecLibOrders_v5.RequestOrder _requestorder) public pure returns (bytes32 requesthash) ``` -Get a deal created by PoCo Boost facet. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | The ID of the deal. | - -## IexecPocoBoostFacet - -Works for deals with requested trust = 0. - -### matchOrdersBoost +### hash ```solidity -function matchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) +function hash(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) public pure returns (bytes32) ``` -This boost match orders is only compatible with trust <= 1. -The requester gets debited. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The order signed by the application developer. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The order signed by the dataset provider. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The order signed by the workerpool manager. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The order signed by the requester. | - -#### Return Values - -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | bytes32 | The ID of the deal. | - -### sponsorMatchOrdersBoost +### hash ```solidity -function sponsorMatchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) +function hash(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) public pure returns (bytes32) ``` -Sponsor match orders boost for a requester. -Unlike the standard `matchOrdersBoost(..)` hook where the requester pays for -the deal, this current hook makes it possible for any `msg.sender` to pay for -a third party requester. - -Be aware that anyone seeing a valid request order on the network -(via an off-chain public marketplace, via a `sponsorMatchOrdersBoost(..)` -pending transaction in the mempool or by any other means) might decide -to call the standard `matchOrdersBoost(..)` hook which will result in the -requester being debited instead. Therefore, such a front run would result -in a loss of some of the requester funds deposited in the iExec account -(a loss value equivalent to the price of the deal). - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The app order. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The requester order. | - -### pushResultBoost +### hash ```solidity -function pushResultBoost(bytes32 dealId, uint256 index, bytes results, bytes resultsCallback, bytes authorizationSign, address enclaveChallenge, bytes enclaveSign) external +function hash(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) public pure returns (bytes32) ``` -Accept results of a task computed by a worker during Boost workflow. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| dealId | bytes32 | The id of the target deal. | -| index | uint256 | The index of the target task of the deal. | -| results | bytes | The results of the task computed by the worker. | -| resultsCallback | bytes | The results of the task computed by the worker that will be forwarded as call data to the callback address set by the requester. | -| authorizationSign | bytes | The authorization signed by the scheduler. authorizing the worker to push a result. | -| enclaveChallenge | address | The enclave address which can produce enclave signature. | -| enclaveSign | bytes | The signature generated from the enclave. | - -### claimBoost +### hash ```solidity -function claimBoost(bytes32 dealId, uint256 index) external +function hash(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) public pure returns (bytes32) ``` -Claim task to get a refund if task is not completed after deadline. - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| dealId | bytes32 | The ID of the deal. | -| index | uint256 | The index of the task. | - -<<<<<<< HEAD -======= -## IexecRelayFacet - -### broadcastAppOrder - -```solidity -function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external -``` +## PocoStorageLib -### broadcastDatasetOrder +### PocoStorage ```solidity -function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external +struct PocoStorage { + contract IRegistry m_appregistry; + contract IRegistry m_datasetregistry; + contract IRegistry m_workerpoolregistry; + contract IERC20 m_baseToken; + string m_name; + string m_symbol; + uint8 m_decimals; + uint256 m_totalSupply; + mapping(address => uint256) m_balances; + mapping(address => uint256) m_frozens; + mapping(address => mapping(address => uint256)) m_allowances; + bytes32 m_eip712DomainSeparator; + mapping(bytes32 => address) m_presigned; + mapping(bytes32 => uint256) m_consumed; + mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; + mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; + mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; + mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; + mapping(address => uint256) m_workerScores; + address m_teebroker; + uint256 m_callbackgas; + struct IexecLibCore_v5.Category[] m_categories; + contract IexecHubV3Interface m_v3_iexecHub; + mapping(address => bool) m_v3_scoreImported; + mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; +} ``` -### broadcastWorkerpoolOrder - -```solidity -function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external -``` +## IRegistry -### broadcastRequestOrder +### isRegistered ```solidity -function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external +function isRegistered(address _entry) external view returns (bool) ``` -## IexecLibCore_v5 - -### Account +## Registry -Tools +### master ```solidity -struct Account { - uint256 stake; - uint256 locked; -} +address master ``` -### Category +### proxyCode ```solidity -struct Category { - string name; - string description; - uint256 workClockTimeRef; -} +bytes proxyCode ``` -### DatasetInfo +### proxyCodeHash ```solidity -struct DatasetInfo { - address owner; - string m_datasetName; - bytes m_datasetMultiaddr; - bytes32 m_datasetChecksum; -} +bytes32 proxyCodeHash ``` -### AppInfo +### previous ```solidity -struct AppInfo { - address owner; - string m_appName; - string m_appType; - bytes m_appMultiaddr; - bytes32 m_appChecksum; - bytes m_appMREnclave; -} +contract IRegistry previous ``` -### WorkerpoolInfo +### initialized ```solidity -struct WorkerpoolInfo { - address owner; - string m_workerpoolDescription; - uint256 m_workerStakeRatioPolicy; - uint256 m_schedulerRewardRatioPolicy; -} +bool initialized ``` -### Resource - -Clerk - Deals +### initialize ```solidity -struct Resource { - address pointer; - address owner; - uint256 price; -} +function initialize(address _previous) external ``` -### Deal +### setBaseURI ```solidity -struct Deal { - struct IexecLibCore_v5.Resource app; - struct IexecLibCore_v5.Resource dataset; - struct IexecLibCore_v5.Resource workerpool; - uint256 trust; - uint256 category; - bytes32 tag; - address requester; - address beneficiary; - address callback; - string params; - uint256 startTime; - uint256 botFirst; - uint256 botSize; - uint256 workerStake; - uint256 schedulerRewardRatio; - address sponsor; -} +function setBaseURI(string baseUri) external ``` -### DealBoost - -Simplified deals for PoCo Boost module. +### baseURI ```solidity -struct DealBoost { - address appOwner; - uint96 appPrice; - address datasetOwner; - uint96 datasetPrice; - address workerpoolOwner; - uint96 workerpoolPrice; - address requester; - uint96 workerReward; - address callback; - uint40 deadline; - uint16 botFirst; - uint16 botSize; - bytes3 shortTag; - address sponsor; -} +function baseURI() public view returns (string) ``` -### TaskStatusEnum +_Added for retrocompatibility! -Tasks +Returns the base URI set via {setBaseURI}. This will be +automatically added as a prefix in {tokenURI} to each token's ID._ + +### isRegistered ```solidity -enum TaskStatusEnum { - UNSET, - ACTIVE, - REVEALING, - COMPLETED, - FAILED -} +function isRegistered(address _entry) external view returns (bool) ``` -### Task +### setName ```solidity -struct Task { - enum IexecLibCore_v5.TaskStatusEnum status; - bytes32 dealid; - uint256 idx; - uint256 timeref; - uint256 contributionDeadline; - uint256 revealDeadline; - uint256 finalDeadline; - bytes32 consensusValue; - uint256 revealCounter; - uint256 winnerCounter; - address[] contributors; - bytes32 resultDigest; - bytes results; - uint256 resultsTimestamp; - bytes resultsCallback; -} +function setName(address, string) external ``` -### Consensus +Sets the reverse registration name for a registry contract. -Consensus +_This functionality is supported only on Bellecour Sidechain, calls on other chains +will revert. The function is kept as nonpayable to maintain retrocompatibility with the +iExec SDK._ + +## RegistryEntry + +_Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### registry ```solidity -struct Consensus { - mapping(bytes32 => uint256) group; - uint256 total; -} +contract IRegistry registry ``` -### ContributionStatusEnum - -Consensus +### owner ```solidity -enum ContributionStatusEnum { - UNSET, - CONTRIBUTED, - PROVED, - REJECTED -} +function owner() public view returns (address) ``` -### Contribution +### setName ```solidity -struct Contribution { - enum IexecLibCore_v5.ContributionStatusEnum status; - bytes32 resultHash; - bytes32 resultSeal; - address enclaveChallenge; - uint256 weight; -} +function setName(address, string) external ``` -## IexecLibOrders_v5 +Sets the reverse registration name for a registry entry contract. -### EIP712DOMAIN_TYPEHASH +_This functionality is supported only on Bellecour Sidechain, calls on other chains +will revert. The function is kept as nonpayable to maintain retrocompatibility with the +iExec SDK._ + +## App + +_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### m_appName ```solidity -bytes32 EIP712DOMAIN_TYPEHASH +string m_appName ``` -### APPORDER_TYPEHASH +Members + +### m_appType ```solidity -bytes32 APPORDER_TYPEHASH +string m_appType ``` -### DATASETORDER_TYPEHASH +### m_appMultiaddr ```solidity -bytes32 DATASETORDER_TYPEHASH +bytes m_appMultiaddr ``` -### WORKERPOOLORDER_TYPEHASH +### m_appChecksum ```solidity -bytes32 WORKERPOOLORDER_TYPEHASH +bytes32 m_appChecksum ``` -### REQUESTORDER_TYPEHASH +### m_appMREnclave ```solidity -bytes32 REQUESTORDER_TYPEHASH +bytes m_appMREnclave ``` -### APPORDEROPERATION_TYPEHASH +### initialize ```solidity -bytes32 APPORDEROPERATION_TYPEHASH +function initialize(string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) public ``` -### DATASETORDEROPERATION_TYPEHASH +Constructor + +## AppRegistry + +_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### constructor ```solidity -bytes32 DATASETORDEROPERATION_TYPEHASH +constructor() public ``` -### WORKERPOOLORDEROPERATION_TYPEHASH +Constructor + +### createApp ```solidity -bytes32 WORKERPOOLORDEROPERATION_TYPEHASH +function createApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external returns (contract App) ``` -### REQUESTORDEROPERATION_TYPEHASH +### predictApp ```solidity -bytes32 REQUESTORDEROPERATION_TYPEHASH +function predictApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external view returns (contract App) ``` -### OrderOperationEnum +## IApp + +### owner ```solidity -enum OrderOperationEnum { - SIGN, - CLOSE -} +function owner() external view returns (address) ``` -### EIP712Domain +### m_appName ```solidity -struct EIP712Domain { - string name; - string version; - uint256 chainId; - address verifyingContract; -} +function m_appName() external view returns (string) ``` -### AppOrder +### m_appType ```solidity -struct AppOrder { - address app; - uint256 appprice; - uint256 volume; - bytes32 tag; - address datasetrestrict; - address workerpoolrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function m_appType() external view returns (string) ``` -### DatasetOrder +### m_appMultiaddr ```solidity -struct DatasetOrder { - address dataset; - uint256 datasetprice; - uint256 volume; - bytes32 tag; - address apprestrict; - address workerpoolrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function m_appMultiaddr() external view returns (bytes) ``` -### WorkerpoolOrder +### m_appChecksum ```solidity -struct WorkerpoolOrder { - address workerpool; - uint256 workerpoolprice; - uint256 volume; - bytes32 tag; - uint256 category; - uint256 trust; - address apprestrict; - address datasetrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function m_appChecksum() external view returns (bytes32) ``` -### RequestOrder +### m_appMREnclave ```solidity -struct RequestOrder { - address app; - uint256 appmaxprice; - address dataset; - uint256 datasetmaxprice; - address workerpool; - uint256 workerpoolmaxprice; - address requester; - uint256 volume; - bytes32 tag; - uint256 category; - uint256 trust; - address beneficiary; - address callback; - string params; - bytes32 salt; - bytes sign; -} +function m_appMREnclave() external view returns (bytes) ``` -### AppOrderOperation +## Dataset + +_Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### m_datasetName ```solidity -struct AppOrderOperation { - struct IexecLibOrders_v5.AppOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +string m_datasetName ``` -### DatasetOrderOperation +Members + +### m_datasetMultiaddr ```solidity -struct DatasetOrderOperation { - struct IexecLibOrders_v5.DatasetOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +bytes m_datasetMultiaddr ``` -### WorkerpoolOrderOperation +### m_datasetChecksum ```solidity -struct WorkerpoolOrderOperation { - struct IexecLibOrders_v5.WorkerpoolOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +bytes32 m_datasetChecksum ``` -### RequestOrderOperation +### initialize ```solidity -struct RequestOrderOperation { - struct IexecLibOrders_v5.RequestOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function initialize(string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) public ``` -### hash +Constructor + +## DatasetRegistry + +_Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### constructor ```solidity -function hash(struct IexecLibOrders_v5.EIP712Domain _domain) public pure returns (bytes32 domainhash) +constructor() public ``` -### hash +Constructor + +### createDataset ```solidity -function hash(struct IexecLibOrders_v5.AppOrder _apporder) public pure returns (bytes32 apphash) +function createDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external returns (contract Dataset) ``` -### hash +### predictDataset ```solidity -function hash(struct IexecLibOrders_v5.DatasetOrder _datasetorder) public pure returns (bytes32 datasethash) +function predictDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external view returns (contract Dataset) ``` -### hash +## IDataset + +### owner ```solidity -function hash(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) public pure returns (bytes32 workerpoolhash) +function owner() external view returns (address) ``` -### hash +### m_datasetName ```solidity -function hash(struct IexecLibOrders_v5.RequestOrder _requestorder) public pure returns (bytes32 requesthash) +function m_datasetName() external view returns (string) ``` -### hash +### m_datasetMultiaddr ```solidity -function hash(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) public pure returns (bytes32) +function m_datasetMultiaddr() external view returns (bytes) ``` -### hash +### m_datasetChecksum ```solidity -function hash(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) public pure returns (bytes32) +function m_datasetChecksum() external view returns (bytes32) ``` -### hash +## Address + +## BaseUpgradeabilityProxy + +_This contract implements a proxy that allows to change the +implementation address to which it will delegate. +Such a change is called an implementation upgrade._ + +### Upgraded ```solidity -function hash(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) public pure returns (bytes32) +event Upgraded(address implementation) ``` -### hash +_Emitted when the implementation is upgraded._ + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| implementation | address | Address of the new implementation. | + +## InitializableUpgradeabilityProxy + +_Extends BaseUpgradeabilityProxy with an initializer for initializing +implementation and init data._ + +### initialize ```solidity -function hash(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) public pure returns (bytes32) +function initialize(address _logic, bytes _data) public payable ``` -## PocoStorageLib +_Contract initializer._ -### PocoStorage +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| _logic | address | Address of the initial implementation. | +| _data | bytes | Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. | + +## Proxy + +_Implements delegation of calls to other contracts, with proper +forwarding of return values and bubbling of failures. +It defines a fallback function that delegates all calls to the address +returned by the abstract _implementation() internal function._ + +### receive ```solidity -struct PocoStorage { - contract IRegistry m_appregistry; - contract IRegistry m_datasetregistry; - contract IRegistry m_workerpoolregistry; - contract IERC20 m_baseToken; - string m_name; - string m_symbol; - uint8 m_decimals; - uint256 m_totalSupply; - mapping(address => uint256) m_balances; - mapping(address => uint256) m_frozens; - mapping(address => mapping(address => uint256)) m_allowances; - bytes32 m_eip712DomainSeparator; - mapping(bytes32 => address) m_presigned; - mapping(bytes32 => uint256) m_consumed; - mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; - mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; - mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; - mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; - mapping(address => uint256) m_workerScores; - address m_teebroker; - uint256 m_callbackgas; - struct IexecLibCore_v5.Category[] m_categories; - contract IexecHubV3Interface m_v3_iexecHub; - mapping(address => bool) m_v3_scoreImported; - mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; -} +receive() external payable virtual ``` ->>>>>>> 845802f9698338658a92a512ea722acdf1dccede -## IApp +_Receive function. +Implemented entirely in `_fallback`._ -### owner +### fallback ```solidity -function owner() external view returns (address) +fallback() external payable ``` -### m_appName +_Fallback function. +Implemented entirely in `_fallback`._ + +## IWorkerpool + +### owner ```solidity -function m_appName() external view returns (string) +function owner() external view returns (address) ``` -### m_appType +### m_workerpoolDescription ```solidity -function m_appType() external view returns (string) +function m_workerpoolDescription() external view returns (string) ``` -### m_appMultiaddr +### m_schedulerRewardRatioPolicy ```solidity -function m_appMultiaddr() external view returns (bytes) +function m_schedulerRewardRatioPolicy() external view returns (uint256) ``` -### m_appChecksum +### m_workerStakeRatioPolicy ```solidity -function m_appChecksum() external view returns (bytes32) +function m_workerStakeRatioPolicy() external view returns (uint256) ``` -### m_appMREnclave +## Workerpool + +_Referenced in the SDK with the current path `contracts/registries/workerpools/Workerpool.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### m_workerpoolDescription ```solidity -function m_appMREnclave() external view returns (bytes) +string m_workerpoolDescription ``` -## IDataset +Parameters -### owner +### m_workerStakeRatioPolicy ```solidity -function owner() external view returns (address) +uint256 m_workerStakeRatioPolicy ``` -### m_datasetName +### m_schedulerRewardRatioPolicy ```solidity -function m_datasetName() external view returns (string) +uint256 m_schedulerRewardRatioPolicy ``` -### m_datasetMultiaddr +### PolicyUpdate ```solidity -function m_datasetMultiaddr() external view returns (bytes) +event PolicyUpdate(uint256 oldWorkerStakeRatioPolicy, uint256 newWorkerStakeRatioPolicy, uint256 oldSchedulerRewardRatioPolicy, uint256 newSchedulerRewardRatioPolicy) ``` -### m_datasetChecksum +Events + +### initialize ```solidity -function m_datasetChecksum() external view returns (bytes32) +function initialize(string _workerpoolDescription) public ``` -## IWorkerpool +Constructor -### owner +### changePolicy ```solidity -function owner() external view returns (address) +function changePolicy(uint256 _newWorkerStakeRatioPolicy, uint256 _newSchedulerRewardRatioPolicy) external ``` -### m_workerpoolDescription +## WorkerpoolRegistry + +_Referenced in the SDK with the current path `contracts/registries/workerpools/WorkerpoolRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### constructor ```solidity -function m_workerpoolDescription() external view returns (string) +constructor() public ``` -### m_schedulerRewardRatioPolicy +Constructor + +### createWorkerpool ```solidity -function m_schedulerRewardRatioPolicy() external view returns (uint256) +function createWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external returns (contract Workerpool) ``` -### m_workerStakeRatioPolicy +### predictWorkerpool ```solidity -function m_workerStakeRatioPolicy() external view returns (uint256) +function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) ``` From f0cbc5a6dc153ecf193b43335829262c5822651a Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Fri, 31 Oct 2025 16:42:35 +0100 Subject: [PATCH 72/77] refactor: downgrade @openzeppelin/contracts version to ^5.0.2 and update package.json to exclude TimelockController from build artifacts --- package-lock.json | 2 +- package.json | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6737c9c6e..c6b38eeb5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@iexec/interface": "3.0.35-8", "@iexec/solidity": "^0.1.1", "@mudgen/diamond-1": "github:mudgen/diamond-1-hardhat#3da037b", - "@openzeppelin/contracts": "^5.4.0", + "@openzeppelin/contracts": "^5.0.2", "@uniswap/v2-periphery": "1.1.0-beta.0", "createx": "github:pcaversaccio/createx#v1.0.0", "rlc-faucet-contract": "1.0.10" diff --git a/package.json b/package.json index fb8347d1e..b5010681d 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "/contracts", "!/contracts/tools/testing/**/*", "!/contracts/tools/diagrams/**/*", + "!/contracts/tools/TimelockController/**/*", "/deployments", "/artifacts/contracts", "!/artifacts/contracts/**/*.dbg.json" @@ -49,7 +50,7 @@ "@iexec/interface": "3.0.35-8", "@iexec/solidity": "^0.1.1", "@mudgen/diamond-1": "github:mudgen/diamond-1-hardhat#3da037b", - "@openzeppelin/contracts": "^5.4.0", + "@openzeppelin/contracts": "^5.0.2", "@uniswap/v2-periphery": "1.1.0-beta.0", "createx": "github:pcaversaccio/createx#v1.0.0", "rlc-faucet-contract": "1.0.10" From 19612c9f8285bc9a885eaacf5a19a49b596a8a2f Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Fri, 31 Oct 2025 16:42:53 +0100 Subject: [PATCH 73/77] refactor: update Solidity API documentation to introduce a new registry structure, consolidate interfaces, and enhance function signatures for better clarity and organization. This update includes breaking changes and new methods for managing categories, datasets, and worker pools. --- docs/solidity/index.md | 1816 ++++++++++++++++++++-------------------- 1 file changed, 908 insertions(+), 908 deletions(-) diff --git a/docs/solidity/index.md b/docs/solidity/index.md index fa5ddcf95..b5f389573 100644 --- a/docs/solidity/index.md +++ b/docs/solidity/index.md @@ -1,761 +1,749 @@ # Solidity API -## IexecInterfaceNative - -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in native mode. - -_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -## IexecInterfaceToken +## IRegistry -A global interface that aggregates all the interfaces needed to interact with -the PoCo contracts in token mode. +### isRegistered -_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +function isRegistered(address _entry) external view returns (bool) +``` -## IexecCategoryManagerFacet +## Registry -### createCategory +### master ```solidity -function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) +address master ``` -Methods - -## IexecConfigurationExtraFacet - -### changeRegistries +### proxyCode ```solidity -function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external +bytes proxyCode ``` -## IexecConfigurationFacet - -### configure +### proxyCodeHash ```solidity -function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external +bytes32 proxyCodeHash ``` -### domain +### previous ```solidity -function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) +contract IRegistry previous ``` -### updateDomainSeparator +### initialized ```solidity -function updateDomainSeparator() external +bool initialized ``` -### importScore +### initialize ```solidity -function importScore(address _worker) external +function initialize(address _previous) external ``` -### setTeeBroker +### setBaseURI ```solidity -function setTeeBroker(address _teebroker) external +function setBaseURI(string baseUri) external ``` -### setCallbackGas +### baseURI ```solidity -function setCallbackGas(uint256 _callbackgas) external +function baseURI() public view returns (string) ``` -## IexecERC20Core +_Added for retrocompatibility! -## IexecERC20Facet +Returns the base URI set via {setBaseURI}. This will be +automatically added as a prefix in {tokenURI} to each token's ID._ -### transfer +### isRegistered ```solidity -function transfer(address recipient, uint256 amount) external returns (bool) +function isRegistered(address _entry) external view returns (bool) ``` -### approve +### setName ```solidity -function approve(address spender, uint256 value) external returns (bool) +function setName(address, string) external ``` -### approveAndCall +Sets the reverse registration name for a registry contract. -```solidity -function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) -``` +_This functionality is supported only on Bellecour Sidechain, calls on other chains +will revert. The function is kept as nonpayable to maintain retrocompatibility with the +iExec SDK._ -### transferFrom +## RegistryEntry + +_Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### registry ```solidity -function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) +contract IRegistry registry ``` -### increaseAllowance +### owner ```solidity -function increaseAllowance(address spender, uint256 addedValue) external returns (bool) +function owner() public view returns (address) ``` -### decreaseAllowance +### setName ```solidity -function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) +function setName(address, string) external ``` -## IexecEscrow +Sets the reverse registration name for a registry entry contract. -### Transfer +_This functionality is supported only on Bellecour Sidechain, calls on other chains +will revert. The function is kept as nonpayable to maintain retrocompatibility with the +iExec SDK._ -```solidity -event Transfer(address from, address to, uint256 value) -``` +## App -### Lock +_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### m_appName ```solidity -event Lock(address owner, uint256 amount) +string m_appName ``` -### Unlock +Members + +### m_appType ```solidity -event Unlock(address owner, uint256 amount) +string m_appType ``` -### Reward +### m_appMultiaddr ```solidity -event Reward(address owner, uint256 amount, bytes32 ref) +bytes m_appMultiaddr ``` -### Seize +### m_appChecksum ```solidity -event Seize(address owner, uint256 amount, bytes32 ref) +bytes32 m_appChecksum ``` -## IexecEscrowNativeFacet - -### receive +### m_appMREnclave ```solidity -receive() external payable +bytes m_appMREnclave ``` -### fallback +### initialize ```solidity -fallback() external payable +function initialize(string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) public ``` -### deposit +Constructor -```solidity -function deposit() external payable returns (bool) -``` +## AppRegistry -### depositFor +_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### constructor ```solidity -function depositFor(address target) external payable returns (bool) +constructor() public ``` -### depositForArray +Constructor + +### createApp ```solidity -function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) +function createApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external returns (contract App) ``` -### withdraw +### predictApp ```solidity -function withdraw(uint256 amount) external returns (bool) +function predictApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external view returns (contract App) ``` -### withdrawTo +## Dataset -```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) -``` +_Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### recover +### m_datasetName ```solidity -function recover() external returns (uint256) +string m_datasetName ``` -## IexecEscrowTokenFacet +Members -### receive +### m_datasetMultiaddr ```solidity -receive() external payable +bytes m_datasetMultiaddr ``` -### fallback +### m_datasetChecksum ```solidity -fallback() external payable +bytes32 m_datasetChecksum ``` -### deposit +### initialize ```solidity -function deposit(uint256 amount) external returns (bool) +function initialize(string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) public ``` -### depositFor +Constructor -```solidity -function depositFor(uint256 amount, address target) external returns (bool) -``` +## DatasetRegistry -### depositForArray +_Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### constructor ```solidity -function depositForArray(uint256[] amounts, address[] targets) external returns (bool) +constructor() public ``` -### withdraw +Constructor + +### createDataset ```solidity -function withdraw(uint256 amount) external returns (bool) +function createDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external returns (contract Dataset) ``` -### withdrawTo +### predictDataset ```solidity -function withdrawTo(uint256 amount, address target) external returns (bool) +function predictDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external view returns (contract Dataset) ``` -### recover +## Address -```solidity -function recover() external returns (uint256) -``` +## BaseUpgradeabilityProxy -### receiveApproval +_This contract implements a proxy that allows to change the +implementation address to which it will delegate. +Such a change is called an implementation upgrade._ + +### Upgraded ```solidity -function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) +event Upgraded(address implementation) ``` -## IexecOrderManagementFacet +_Emitted when the implementation is upgraded._ -### manageAppOrder +#### Parameters -```solidity -function manageAppOrder(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) external -``` +| Name | Type | Description | +| ---- | ---- | ----------- | +| implementation | address | Address of the new implementation. | -### manageDatasetOrder +## InitializableUpgradeabilityProxy -```solidity -function manageDatasetOrder(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) external -``` +_Extends BaseUpgradeabilityProxy with an initializer for initializing +implementation and init data._ -### manageWorkerpoolOrder +### initialize ```solidity -function manageWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) external +function initialize(address _logic, bytes _data) public payable ``` -### manageRequestOrder +_Contract initializer._ -```solidity -function manageRequestOrder(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) external -``` +#### Parameters -## Matching +| Name | Type | Description | +| ---- | ---- | ----------- | +| _logic | address | Address of the initial implementation. | +| _data | bytes | Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. | -```solidity -struct Matching { - bytes32 apporderHash; - address appOwner; - bytes32 datasetorderHash; - address datasetOwner; - bytes32 workerpoolorderHash; - address workerpoolOwner; - bytes32 requestorderHash; - bool hasDataset; -} -``` +## Proxy -## IexecPoco1Facet +_Implements delegation of calls to other contracts, with proper +forwarding of return values and bubbling of failures. +It defines a fallback function that delegates all calls to the address +returned by the abstract _implementation() internal function._ -### verifySignature +### receive ```solidity -function verifySignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) +receive() external payable virtual ``` -### verifyPresignature +_Receive function. +Implemented entirely in `_fallback`._ + +### fallback ```solidity -function verifyPresignature(address _identity, bytes32 _hash) external view returns (bool) +fallback() external payable ``` -### verifyPresignatureOrSignature +_Fallback function. +Implemented entirely in `_fallback`._ -```solidity -function verifyPresignatureOrSignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) -``` +## Workerpool -### assertDatasetDealCompatibility +_Referenced in the SDK with the current path `contracts/registries/workerpools/Workerpool.sol`. +Changing the name or the path would cause a breaking change in the SDK._ + +### m_workerpoolDescription ```solidity -function assertDatasetDealCompatibility(struct IexecLibOrders_v5.DatasetOrder datasetOrder, bytes32 dealId) external view +string m_workerpoolDescription ``` -Public view function to check if a dataset order is compatible with a deal. -This function performs all the necessary checks to verify dataset order compatibility with a deal. -Reverts with `IncompatibleDatasetOrder(reason)` if the dataset order is not compatible with the deal, does -nothing otherwise. - -_This function is mainly consumed by offchain clients. It should be carefully inspected if -used in on-chain code. -This function should not be used in `matchOrders` since it does not check the same requirements. -The choice of reverting instead of returning true/false is motivated by the Java middleware -requirements._ +Parameters -#### Parameters +### m_workerStakeRatioPolicy -| Name | Type | Description | -| ---- | ---- | ----------- | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order to verify | -| dealId | bytes32 | The deal ID to check against | +```solidity +uint256 m_workerStakeRatioPolicy +``` -### matchOrders +### m_schedulerRewardRatioPolicy ```solidity -function matchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) +uint256 m_schedulerRewardRatioPolicy ``` -Match orders. The requester gets debited. +### PolicyUpdate -#### Parameters +```solidity +event PolicyUpdate(uint256 oldWorkerStakeRatioPolicy, uint256 newWorkerStakeRatioPolicy, uint256 oldSchedulerRewardRatioPolicy, uint256 newSchedulerRewardRatioPolicy) +``` -| Name | Type | Description | -| ---- | ---- | ----------- | -| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | -| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | +Events -### sponsorMatchOrders +### initialize ```solidity -function sponsorMatchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) +function initialize(string _workerpoolDescription) public ``` -Sponsor match orders for a requester. -Unlike the standard `matchOrders(..)` hook where the requester pays for -the deal, this current hook makes it possible for any `msg.sender` to pay for -a third party requester. +Constructor -Be aware that anyone seeing a valid request order on the network -(via an off-chain public marketplace, via a `sponsorMatchOrders(..)` -pending transaction in the mempool or by any other means) might decide -to call the standard `matchOrders(..)` hook which will result in the -requester being debited instead. Therefore, such a front run would result -in a loss of some of the requester funds deposited in the iExec account -(a loss value equivalent to the price of the deal). +### changePolicy -#### Parameters +```solidity +function changePolicy(uint256 _newWorkerStakeRatioPolicy, uint256 _newSchedulerRewardRatioPolicy) external +``` -| Name | Type | Description | -| ---- | ---- | ----------- | -| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | -| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | +## WorkerpoolRegistry -## IexecPoco2Facet +_Referenced in the SDK with the current path `contracts/registries/workerpools/WorkerpoolRegistry.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### initialize +### constructor ```solidity -function initialize(bytes32 _dealid, uint256 idx) public returns (bytes32) +constructor() public ``` -### contribute - -```solidity -function contribute(bytes32 _taskid, bytes32 _resultHash, bytes32 _resultSeal, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external -``` +Constructor -### contributeAndFinalize +### createWorkerpool ```solidity -function contributeAndFinalize(bytes32 _taskid, bytes32 _resultDigest, bytes _results, bytes _resultsCallback, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external +function createWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external returns (contract Workerpool) ``` -### reveal +### predictWorkerpool ```solidity -function reveal(bytes32 _taskid, bytes32 _resultDigest) external +function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) ``` -### reopen +## IexecInterfaceNative -```solidity -function reopen(bytes32 _taskid) external -``` +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in native mode. -### finalize +_Referenced in the SDK with the current path `contracts/IexecInterfaceNative.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -```solidity -function finalize(bytes32 _taskid, bytes _results, bytes _resultsCallback) external -``` +## IexecInterfaceToken -### claim +A global interface that aggregates all the interfaces needed to interact with +the PoCo contracts in token mode. -```solidity -function claim(bytes32 _taskid) public -``` +_Referenced in the SDK with the current path `contracts/IexecInterfaceToken.sol`. +Changing the name or the path would cause a breaking change in the SDK._ -### initializeArray +## IexecCategoryManagerFacet + +### createCategory ```solidity -function initializeArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) +function createCategory(string name, string description, uint256 workClockTimeRef) external returns (uint256) ``` -### claimArray +Methods -```solidity -function claimArray(bytes32[] _taskid) external returns (bool) -``` +## IexecConfigurationExtraFacet -### initializeAndClaimArray +### changeRegistries ```solidity -function initializeAndClaimArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) +function changeRegistries(address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress) external ``` -## IexecPocoAccessorsFacet +## IexecConfigurationFacet -### viewDeal +### configure ```solidity -function viewDeal(bytes32 id) external view returns (struct IexecLibCore_v5.Deal deal) +function configure(address _token, string _name, string _symbol, uint8 _decimal, address _appregistryAddress, address _datasetregistryAddress, address _workerpoolregistryAddress, address _v3_iexecHubAddress) external ``` -Get a deal created by PoCo classic facet. - -#### Parameters +### domain -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | The ID of the deal. | +```solidity +function domain() external view returns (struct IexecLibOrders_v5.EIP712Domain) +``` -### viewTask +### updateDomainSeparator ```solidity -function viewTask(bytes32 id) external view returns (struct IexecLibCore_v5.Task) +function updateDomainSeparator() external ``` -Get task created in Classic mode. - -#### Parameters +### importScore -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | id of the task | +```solidity +function importScore(address _worker) external +``` -### computeDealVolume +### setTeeBroker ```solidity -function computeDealVolume(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external view returns (uint256) +function setTeeBroker(address _teebroker) external ``` -Computes the volume of the "not yet created" deal based on the provided orders. -This function should only be used if the deal is not yet created. -For existing deals, use the deal accessors instead. - -#### Parameters +### setCallbackGas -| Name | Type | Description | -| ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The application order. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The request order. | +```solidity +function setCallbackGas(uint256 _callbackgas) external +``` -#### Return Values +## IexecERC20Core -| Name | Type | Description | -| ---- | ---- | ----------- | -| [0] | uint256 | The computed deal volume. | +## IexecERC20Facet -### viewConsumed +### transfer ```solidity -function viewConsumed(bytes32 _id) external view returns (uint256 consumed) +function transfer(address recipient, uint256 amount) external returns (bool) ``` -### viewPresigned +### approve ```solidity -function viewPresigned(bytes32 _id) external view returns (address signer) +function approve(address spender, uint256 value) external returns (bool) ``` -### viewContribution +### approveAndCall ```solidity -function viewContribution(bytes32 _taskid, address _worker) external view returns (struct IexecLibCore_v5.Contribution) +function approveAndCall(address spender, uint256 value, bytes extraData) external returns (bool) ``` -### viewScore +### transferFrom ```solidity -function viewScore(address _worker) external view returns (uint256) +function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) ``` -### resultFor +### increaseAllowance ```solidity -function resultFor(bytes32 id) external view returns (bytes) +function increaseAllowance(address spender, uint256 addedValue) external returns (bool) ``` -### name +### decreaseAllowance ```solidity -function name() external view returns (string) +function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) ``` -### symbol +## IexecEscrow + +### Transfer ```solidity -function symbol() external view returns (string) +event Transfer(address from, address to, uint256 value) ``` -### decimals +### Lock ```solidity -function decimals() external view returns (uint8) +event Lock(address owner, uint256 amount) ``` -### totalSupply +### Unlock ```solidity -function totalSupply() external view returns (uint256) +event Unlock(address owner, uint256 amount) ``` -### balanceOf +### Reward ```solidity -function balanceOf(address account) external view returns (uint256) +event Reward(address owner, uint256 amount, bytes32 ref) ``` -### frozenOf +### Seize ```solidity -function frozenOf(address account) external view returns (uint256) +event Seize(address owner, uint256 amount, bytes32 ref) ``` -### allowance +## IexecEscrowNativeFacet + +### receive ```solidity -function allowance(address account, address spender) external view returns (uint256) +receive() external payable ``` -### viewAccount +### fallback ```solidity -function viewAccount(address account) external view returns (struct IexecLibCore_v5.Account) +fallback() external payable ``` -### token +### deposit ```solidity -function token() external view returns (address) +function deposit() external payable returns (bool) ``` -### viewCategory +### depositFor ```solidity -function viewCategory(uint256 _catid) external view returns (struct IexecLibCore_v5.Category category) +function depositFor(address target) external payable returns (bool) ``` -### countCategory +### depositForArray ```solidity -function countCategory() external view returns (uint256 count) +function depositForArray(uint256[] amounts, address[] targets) external payable returns (bool) ``` -### appregistry +### withdraw ```solidity -function appregistry() external view returns (contract IRegistry) +function withdraw(uint256 amount) external returns (bool) ``` -### datasetregistry +### withdrawTo ```solidity -function datasetregistry() external view returns (contract IRegistry) +function withdrawTo(uint256 amount, address target) external returns (bool) ``` -### workerpoolregistry +### recover ```solidity -function workerpoolregistry() external view returns (contract IRegistry) +function recover() external returns (uint256) ``` -### teebroker +## IexecEscrowTokenFacet + +### receive ```solidity -function teebroker() external view returns (address) +receive() external payable ``` -### callbackgas +### fallback ```solidity -function callbackgas() external view returns (uint256) +fallback() external payable ``` -### viewDataset +### deposit ```solidity -function viewDataset(address dataset) external view returns (struct IexecLibCore_v5.DatasetInfo) +function deposit(uint256 amount) external returns (bool) ``` -### viewApp +### depositFor ```solidity -function viewApp(address app) external view returns (struct IexecLibCore_v5.AppInfo) +function depositFor(uint256 amount, address target) external returns (bool) ``` -### viewWorkerpool +### depositForArray ```solidity -function viewWorkerpool(address workerpool) external view returns (struct IexecLibCore_v5.WorkerpoolInfo) +function depositForArray(uint256[] amounts, address[] targets) external returns (bool) ``` -### contribution_deadline_ratio +### withdraw ```solidity -function contribution_deadline_ratio() external pure returns (uint256) +function withdraw(uint256 amount) external returns (bool) ``` -### reveal_deadline_ratio +### withdrawTo ```solidity -function reveal_deadline_ratio() external pure returns (uint256) +function withdrawTo(uint256 amount, address target) external returns (bool) ``` -### final_deadline_ratio +### recover ```solidity -function final_deadline_ratio() external pure returns (uint256) +function recover() external returns (uint256) ``` -### workerpool_stake_ratio +### receiveApproval ```solidity -function workerpool_stake_ratio() external pure returns (uint256) +function receiveApproval(address sender, uint256 amount, address token, bytes) external returns (bool) ``` -### kitty_ratio +## IexecOrderManagementFacet + +### manageAppOrder ```solidity -function kitty_ratio() external pure returns (uint256) +function manageAppOrder(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) external ``` -### kitty_min +### manageDatasetOrder ```solidity -function kitty_min() external pure returns (uint256) +function manageDatasetOrder(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) external ``` -### kitty_address +### manageWorkerpoolOrder ```solidity -function kitty_address() external pure returns (address) +function manageWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) external ``` -### groupmember_purpose +### manageRequestOrder ```solidity -function groupmember_purpose() external pure returns (uint256) +function manageRequestOrder(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) external ``` -### eip712domain_separator +## Matching ```solidity -function eip712domain_separator() external view returns (bytes32) +struct Matching { + bytes32 apporderHash; + address appOwner; + bytes32 datasetorderHash; + address datasetOwner; + bytes32 workerpoolorderHash; + address workerpoolOwner; + bytes32 requestorderHash; + bool hasDataset; +} ``` -## IexecPocoBoostAccessorsFacet - -Access to PoCo Boost tasks must be done with PoCo Classic `IexecPocoAccessors`. +## IexecPoco1Facet -### viewDealBoost +### verifySignature ```solidity -function viewDealBoost(bytes32 id) external view returns (struct IexecLibCore_v5.DealBoost deal) +function verifySignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) ``` -Get a deal created by PoCo Boost facet. - -#### Parameters +### verifyPresignature -| Name | Type | Description | -| ---- | ---- | ----------- | -| id | bytes32 | The ID of the deal. | +```solidity +function verifyPresignature(address _identity, bytes32 _hash) external view returns (bool) +``` -## IexecPocoBoostFacet +### verifyPresignatureOrSignature -Works for deals with requested trust = 0. +```solidity +function verifyPresignatureOrSignature(address _identity, bytes32 _hash, bytes _signature) external view returns (bool) +``` -### matchOrdersBoost +### assertDatasetDealCompatibility ```solidity -function matchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) +function assertDatasetDealCompatibility(struct IexecLibOrders_v5.DatasetOrder datasetOrder, bytes32 dealId) external view ``` -This boost match orders is only compatible with trust <= 1. -The requester gets debited. +Public view function to check if a dataset order is compatible with a deal. +This function performs all the necessary checks to verify dataset order compatibility with a deal. +Reverts with `IncompatibleDatasetOrder(reason)` if the dataset order is not compatible with the deal, does +nothing otherwise. + +_This function is mainly consumed by offchain clients. It should be carefully inspected if +used in on-chain code. +This function should not be used in `matchOrders` since it does not check the same requirements. +The choice of reverting instead of returning true/false is motivated by the Java middleware +requirements._ #### Parameters | Name | Type | Description | | ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The order signed by the application developer. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The order signed by the dataset provider. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The order signed by the workerpool manager. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The order signed by the requester. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order to verify | +| dealId | bytes32 | The deal ID to check against | -#### Return Values +### matchOrders + +```solidity +function matchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) +``` + +Match orders. The requester gets debited. + +#### Parameters | Name | Type | Description | | ---- | ---- | ----------- | -| [0] | bytes32 | The ID of the deal. | +| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | +| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | -### sponsorMatchOrdersBoost +### sponsorMatchOrders ```solidity -function sponsorMatchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) +function sponsorMatchOrders(struct IexecLibOrders_v5.AppOrder _apporder, struct IexecLibOrders_v5.DatasetOrder _datasetorder, struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder, struct IexecLibOrders_v5.RequestOrder _requestorder) external returns (bytes32) ``` -Sponsor match orders boost for a requester. -Unlike the standard `matchOrdersBoost(..)` hook where the requester pays for +Sponsor match orders for a requester. +Unlike the standard `matchOrders(..)` hook where the requester pays for the deal, this current hook makes it possible for any `msg.sender` to pay for a third party requester. Be aware that anyone seeing a valid request order on the network -(via an off-chain public marketplace, via a `sponsorMatchOrdersBoost(..)` +(via an off-chain public marketplace, via a `sponsorMatchOrders(..)` pending transaction in the mempool or by any other means) might decide -to call the standard `matchOrdersBoost(..)` hook which will result in the +to call the standard `matchOrders(..)` hook which will result in the requester being debited instead. Therefore, such a front run would result in a loss of some of the requester funds deposited in the iExec account (a loss value equivalent to the price of the deal). @@ -764,907 +752,927 @@ in a loss of some of the requester funds deposited in the iExec account | Name | Type | Description | | ---- | ---- | ----------- | -| appOrder | struct IexecLibOrders_v5.AppOrder | The app order. | -| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | -| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | -| requestOrder | struct IexecLibOrders_v5.RequestOrder | The requester order. | +| _apporder | struct IexecLibOrders_v5.AppOrder | The app order. | +| _datasetorder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| _workerpoolorder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| _requestorder | struct IexecLibOrders_v5.RequestOrder | The requester order. | -### pushResultBoost +## IexecPoco2Facet + +### initialize ```solidity -function pushResultBoost(bytes32 dealId, uint256 index, bytes results, bytes resultsCallback, bytes authorizationSign, address enclaveChallenge, bytes enclaveSign) external +function initialize(bytes32 _dealid, uint256 idx) public returns (bytes32) ``` -Accept results of a task computed by a worker during Boost workflow. - -#### Parameters +### contribute -| Name | Type | Description | -| ---- | ---- | ----------- | -| dealId | bytes32 | The id of the target deal. | -| index | uint256 | The index of the target task of the deal. | -| results | bytes | The results of the task computed by the worker. | -| resultsCallback | bytes | The results of the task computed by the worker that will be forwarded as call data to the callback address set by the requester. | -| authorizationSign | bytes | The authorization signed by the scheduler. authorizing the worker to push a result. | -| enclaveChallenge | address | The enclave address which can produce enclave signature. | -| enclaveSign | bytes | The signature generated from the enclave. | +```solidity +function contribute(bytes32 _taskid, bytes32 _resultHash, bytes32 _resultSeal, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external +``` -### claimBoost +### contributeAndFinalize ```solidity -function claimBoost(bytes32 dealId, uint256 index) external +function contributeAndFinalize(bytes32 _taskid, bytes32 _resultDigest, bytes _results, bytes _resultsCallback, address _enclaveChallenge, bytes _enclaveSign, bytes _authorizationSign) external ``` -Claim task to get a refund if task is not completed after deadline. +### reveal -#### Parameters +```solidity +function reveal(bytes32 _taskid, bytes32 _resultDigest) external +``` -| Name | Type | Description | -| ---- | ---- | ----------- | -| dealId | bytes32 | The ID of the deal. | -| index | uint256 | The index of the task. | +### reopen -## IexecRelayFacet +```solidity +function reopen(bytes32 _taskid) external +``` -### broadcastAppOrder +### finalize ```solidity -function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external +function finalize(bytes32 _taskid, bytes _results, bytes _resultsCallback) external ``` -### broadcastDatasetOrder +### claim ```solidity -function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external +function claim(bytes32 _taskid) public ``` -### broadcastWorkerpoolOrder +### initializeArray ```solidity -function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external +function initializeArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) ``` -### broadcastRequestOrder +### claimArray ```solidity -function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external +function claimArray(bytes32[] _taskid) external returns (bool) ``` -## IexecLibCore_v5 - -### Account - -Tools +### initializeAndClaimArray ```solidity -struct Account { - uint256 stake; - uint256 locked; -} +function initializeAndClaimArray(bytes32[] _dealid, uint256[] _idx) external returns (bool) ``` -### Category +## IexecPocoAccessorsFacet + +### viewDeal ```solidity -struct Category { - string name; - string description; - uint256 workClockTimeRef; -} +function viewDeal(bytes32 id) external view returns (struct IexecLibCore_v5.Deal deal) ``` -### DatasetInfo +Get a deal created by PoCo classic facet. -```solidity -struct DatasetInfo { - address owner; - string m_datasetName; - bytes m_datasetMultiaddr; - bytes32 m_datasetChecksum; -} -``` +#### Parameters -### AppInfo +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | The ID of the deal. | + +### viewTask ```solidity -struct AppInfo { - address owner; - string m_appName; - string m_appType; - bytes m_appMultiaddr; - bytes32 m_appChecksum; - bytes m_appMREnclave; -} +function viewTask(bytes32 id) external view returns (struct IexecLibCore_v5.Task) ``` -### WorkerpoolInfo +Get task created in Classic mode. + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | id of the task | + +### computeDealVolume ```solidity -struct WorkerpoolInfo { - address owner; - string m_workerpoolDescription; - uint256 m_workerStakeRatioPolicy; - uint256 m_schedulerRewardRatioPolicy; -} +function computeDealVolume(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external view returns (uint256) ``` -### Resource +Computes the volume of the "not yet created" deal based on the provided orders. +This function should only be used if the deal is not yet created. +For existing deals, use the deal accessors instead. -Clerk - Deals +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The application order. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The request order. | + +#### Return Values + +| Name | Type | Description | +| ---- | ---- | ----------- | +| [0] | uint256 | The computed deal volume. | + +### viewConsumed ```solidity -struct Resource { - address pointer; - address owner; - uint256 price; -} +function viewConsumed(bytes32 _id) external view returns (uint256 consumed) ``` -### Deal +### viewPresigned ```solidity -struct Deal { - struct IexecLibCore_v5.Resource app; - struct IexecLibCore_v5.Resource dataset; - struct IexecLibCore_v5.Resource workerpool; - uint256 trust; - uint256 category; - bytes32 tag; - address requester; - address beneficiary; - address callback; - string params; - uint256 startTime; - uint256 botFirst; - uint256 botSize; - uint256 workerStake; - uint256 schedulerRewardRatio; - address sponsor; -} +function viewPresigned(bytes32 _id) external view returns (address signer) ``` -### DealBoost - -Simplified deals for PoCo Boost module. +### viewContribution ```solidity -struct DealBoost { - address appOwner; - uint96 appPrice; - address datasetOwner; - uint96 datasetPrice; - address workerpoolOwner; - uint96 workerpoolPrice; - address requester; - uint96 workerReward; - address callback; - uint40 deadline; - uint16 botFirst; - uint16 botSize; - bytes3 shortTag; - address sponsor; -} +function viewContribution(bytes32 _taskid, address _worker) external view returns (struct IexecLibCore_v5.Contribution) ``` -### TaskStatusEnum - -Tasks +### viewScore ```solidity -enum TaskStatusEnum { - UNSET, - ACTIVE, - REVEALING, - COMPLETED, - FAILED -} +function viewScore(address _worker) external view returns (uint256) ``` -### Task +### resultFor ```solidity -struct Task { - enum IexecLibCore_v5.TaskStatusEnum status; - bytes32 dealid; - uint256 idx; - uint256 timeref; - uint256 contributionDeadline; - uint256 revealDeadline; - uint256 finalDeadline; - bytes32 consensusValue; - uint256 revealCounter; - uint256 winnerCounter; - address[] contributors; - bytes32 resultDigest; - bytes results; - uint256 resultsTimestamp; - bytes resultsCallback; -} +function resultFor(bytes32 id) external view returns (bytes) ``` -### Consensus - -Consensus +### name ```solidity -struct Consensus { - mapping(bytes32 => uint256) group; - uint256 total; -} +function name() external view returns (string) ``` -### ContributionStatusEnum +### symbol -Consensus +```solidity +function symbol() external view returns (string) +``` + +### decimals ```solidity -enum ContributionStatusEnum { - UNSET, - CONTRIBUTED, - PROVED, - REJECTED -} +function decimals() external view returns (uint8) ``` -### Contribution +### totalSupply ```solidity -struct Contribution { - enum IexecLibCore_v5.ContributionStatusEnum status; - bytes32 resultHash; - bytes32 resultSeal; - address enclaveChallenge; - uint256 weight; -} +function totalSupply() external view returns (uint256) ``` -## IexecLibOrders_v5 +### balanceOf -### EIP712DOMAIN_TYPEHASH +```solidity +function balanceOf(address account) external view returns (uint256) +``` + +### frozenOf ```solidity -bytes32 EIP712DOMAIN_TYPEHASH +function frozenOf(address account) external view returns (uint256) ``` -### APPORDER_TYPEHASH +### allowance ```solidity -bytes32 APPORDER_TYPEHASH +function allowance(address account, address spender) external view returns (uint256) ``` -### DATASETORDER_TYPEHASH +### viewAccount ```solidity -bytes32 DATASETORDER_TYPEHASH +function viewAccount(address account) external view returns (struct IexecLibCore_v5.Account) ``` -### WORKERPOOLORDER_TYPEHASH +### token ```solidity -bytes32 WORKERPOOLORDER_TYPEHASH +function token() external view returns (address) ``` -### REQUESTORDER_TYPEHASH +### viewCategory ```solidity -bytes32 REQUESTORDER_TYPEHASH +function viewCategory(uint256 _catid) external view returns (struct IexecLibCore_v5.Category category) ``` -### APPORDEROPERATION_TYPEHASH +### countCategory ```solidity -bytes32 APPORDEROPERATION_TYPEHASH +function countCategory() external view returns (uint256 count) ``` -### DATASETORDEROPERATION_TYPEHASH +### appregistry ```solidity -bytes32 DATASETORDEROPERATION_TYPEHASH +function appregistry() external view returns (contract IRegistry) ``` -### WORKERPOOLORDEROPERATION_TYPEHASH +### datasetregistry ```solidity -bytes32 WORKERPOOLORDEROPERATION_TYPEHASH +function datasetregistry() external view returns (contract IRegistry) ``` -### REQUESTORDEROPERATION_TYPEHASH +### workerpoolregistry ```solidity -bytes32 REQUESTORDEROPERATION_TYPEHASH +function workerpoolregistry() external view returns (contract IRegistry) ``` -### OrderOperationEnum +### teebroker ```solidity -enum OrderOperationEnum { - SIGN, - CLOSE -} +function teebroker() external view returns (address) ``` -### EIP712Domain +### callbackgas ```solidity -struct EIP712Domain { - string name; - string version; - uint256 chainId; - address verifyingContract; -} +function callbackgas() external view returns (uint256) ``` -### AppOrder +### viewDataset ```solidity -struct AppOrder { - address app; - uint256 appprice; - uint256 volume; - bytes32 tag; - address datasetrestrict; - address workerpoolrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function viewDataset(address dataset) external view returns (struct IexecLibCore_v5.DatasetInfo) ``` -### DatasetOrder +### viewApp ```solidity -struct DatasetOrder { - address dataset; - uint256 datasetprice; - uint256 volume; - bytes32 tag; - address apprestrict; - address workerpoolrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function viewApp(address app) external view returns (struct IexecLibCore_v5.AppInfo) ``` -### WorkerpoolOrder +### viewWorkerpool ```solidity -struct WorkerpoolOrder { - address workerpool; - uint256 workerpoolprice; - uint256 volume; - bytes32 tag; - uint256 category; - uint256 trust; - address apprestrict; - address datasetrestrict; - address requesterrestrict; - bytes32 salt; - bytes sign; -} +function viewWorkerpool(address workerpool) external view returns (struct IexecLibCore_v5.WorkerpoolInfo) ``` -### RequestOrder +### contribution_deadline_ratio ```solidity -struct RequestOrder { - address app; - uint256 appmaxprice; - address dataset; - uint256 datasetmaxprice; - address workerpool; - uint256 workerpoolmaxprice; - address requester; - uint256 volume; - bytes32 tag; - uint256 category; - uint256 trust; - address beneficiary; - address callback; - string params; - bytes32 salt; - bytes sign; -} +function contribution_deadline_ratio() external pure returns (uint256) ``` -### AppOrderOperation +### reveal_deadline_ratio ```solidity -struct AppOrderOperation { - struct IexecLibOrders_v5.AppOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function reveal_deadline_ratio() external pure returns (uint256) ``` -### DatasetOrderOperation +### final_deadline_ratio ```solidity -struct DatasetOrderOperation { - struct IexecLibOrders_v5.DatasetOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function final_deadline_ratio() external pure returns (uint256) ``` -### WorkerpoolOrderOperation +### workerpool_stake_ratio ```solidity -struct WorkerpoolOrderOperation { - struct IexecLibOrders_v5.WorkerpoolOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function workerpool_stake_ratio() external pure returns (uint256) ``` -### RequestOrderOperation +### kitty_ratio ```solidity -struct RequestOrderOperation { - struct IexecLibOrders_v5.RequestOrder order; - enum IexecLibOrders_v5.OrderOperationEnum operation; - bytes sign; -} +function kitty_ratio() external pure returns (uint256) ``` -### hash +### kitty_min ```solidity -function hash(struct IexecLibOrders_v5.EIP712Domain _domain) public pure returns (bytes32 domainhash) +function kitty_min() external pure returns (uint256) ``` -### hash +### kitty_address ```solidity -function hash(struct IexecLibOrders_v5.AppOrder _apporder) public pure returns (bytes32 apphash) +function kitty_address() external pure returns (address) ``` -### hash +### groupmember_purpose ```solidity -function hash(struct IexecLibOrders_v5.DatasetOrder _datasetorder) public pure returns (bytes32 datasethash) +function groupmember_purpose() external pure returns (uint256) ``` -### hash +### eip712domain_separator ```solidity -function hash(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) public pure returns (bytes32 workerpoolhash) +function eip712domain_separator() external view returns (bytes32) ``` -### hash +## IexecPocoBoostAccessorsFacet -```solidity -function hash(struct IexecLibOrders_v5.RequestOrder _requestorder) public pure returns (bytes32 requesthash) -``` +Access to PoCo Boost tasks must be done with PoCo Classic `IexecPocoAccessors`. -### hash +### viewDealBoost ```solidity -function hash(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) public pure returns (bytes32) +function viewDealBoost(bytes32 id) external view returns (struct IexecLibCore_v5.DealBoost deal) ``` -### hash +Get a deal created by PoCo Boost facet. + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| id | bytes32 | The ID of the deal. | + +## IexecPocoBoostFacet + +Works for deals with requested trust = 0. + +### matchOrdersBoost ```solidity -function hash(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) public pure returns (bytes32) +function matchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) ``` -### hash +This boost match orders is only compatible with trust <= 1. +The requester gets debited. + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The order signed by the application developer. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The order signed by the dataset provider. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The order signed by the workerpool manager. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The order signed by the requester. | + +#### Return Values + +| Name | Type | Description | +| ---- | ---- | ----------- | +| [0] | bytes32 | The ID of the deal. | + +### sponsorMatchOrdersBoost ```solidity -function hash(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) public pure returns (bytes32) +function sponsorMatchOrdersBoost(struct IexecLibOrders_v5.AppOrder appOrder, struct IexecLibOrders_v5.DatasetOrder datasetOrder, struct IexecLibOrders_v5.WorkerpoolOrder workerpoolOrder, struct IexecLibOrders_v5.RequestOrder requestOrder) external returns (bytes32) ``` -### hash +Sponsor match orders boost for a requester. +Unlike the standard `matchOrdersBoost(..)` hook where the requester pays for +the deal, this current hook makes it possible for any `msg.sender` to pay for +a third party requester. + +Be aware that anyone seeing a valid request order on the network +(via an off-chain public marketplace, via a `sponsorMatchOrdersBoost(..)` +pending transaction in the mempool or by any other means) might decide +to call the standard `matchOrdersBoost(..)` hook which will result in the +requester being debited instead. Therefore, such a front run would result +in a loss of some of the requester funds deposited in the iExec account +(a loss value equivalent to the price of the deal). + +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| appOrder | struct IexecLibOrders_v5.AppOrder | The app order. | +| datasetOrder | struct IexecLibOrders_v5.DatasetOrder | The dataset order. | +| workerpoolOrder | struct IexecLibOrders_v5.WorkerpoolOrder | The workerpool order. | +| requestOrder | struct IexecLibOrders_v5.RequestOrder | The requester order. | + +### pushResultBoost ```solidity -function hash(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) public pure returns (bytes32) +function pushResultBoost(bytes32 dealId, uint256 index, bytes results, bytes resultsCallback, bytes authorizationSign, address enclaveChallenge, bytes enclaveSign) external ``` -## PocoStorageLib +Accept results of a task computed by a worker during Boost workflow. -### PocoStorage +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| dealId | bytes32 | The id of the target deal. | +| index | uint256 | The index of the target task of the deal. | +| results | bytes | The results of the task computed by the worker. | +| resultsCallback | bytes | The results of the task computed by the worker that will be forwarded as call data to the callback address set by the requester. | +| authorizationSign | bytes | The authorization signed by the scheduler. authorizing the worker to push a result. | +| enclaveChallenge | address | The enclave address which can produce enclave signature. | +| enclaveSign | bytes | The signature generated from the enclave. | + +### claimBoost ```solidity -struct PocoStorage { - contract IRegistry m_appregistry; - contract IRegistry m_datasetregistry; - contract IRegistry m_workerpoolregistry; - contract IERC20 m_baseToken; - string m_name; - string m_symbol; - uint8 m_decimals; - uint256 m_totalSupply; - mapping(address => uint256) m_balances; - mapping(address => uint256) m_frozens; - mapping(address => mapping(address => uint256)) m_allowances; - bytes32 m_eip712DomainSeparator; - mapping(bytes32 => address) m_presigned; - mapping(bytes32 => uint256) m_consumed; - mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; - mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; - mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; - mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; - mapping(address => uint256) m_workerScores; - address m_teebroker; - uint256 m_callbackgas; - struct IexecLibCore_v5.Category[] m_categories; - contract IexecHubV3Interface m_v3_iexecHub; - mapping(address => bool) m_v3_scoreImported; - mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; -} +function claimBoost(bytes32 dealId, uint256 index) external ``` -## IRegistry +Claim task to get a refund if task is not completed after deadline. -### isRegistered +#### Parameters + +| Name | Type | Description | +| ---- | ---- | ----------- | +| dealId | bytes32 | The ID of the deal. | +| index | uint256 | The index of the task. | + +## IexecRelayFacet + +### broadcastAppOrder ```solidity -function isRegistered(address _entry) external view returns (bool) +function broadcastAppOrder(struct IexecLibOrders_v5.AppOrder _apporder) external ``` -## Registry - -### master +### broadcastDatasetOrder ```solidity -address master +function broadcastDatasetOrder(struct IexecLibOrders_v5.DatasetOrder _datasetorder) external ``` -### proxyCode +### broadcastWorkerpoolOrder ```solidity -bytes proxyCode +function broadcastWorkerpoolOrder(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) external ``` -### proxyCodeHash +### broadcastRequestOrder ```solidity -bytes32 proxyCodeHash +function broadcastRequestOrder(struct IexecLibOrders_v5.RequestOrder _requestorder) external ``` -### previous +## IexecLibCore_v5 + +### Account + +Tools ```solidity -contract IRegistry previous +struct Account { + uint256 stake; + uint256 locked; +} ``` -### initialized +### Category ```solidity -bool initialized +struct Category { + string name; + string description; + uint256 workClockTimeRef; +} ``` -### initialize +### DatasetInfo ```solidity -function initialize(address _previous) external +struct DatasetInfo { + address owner; + string m_datasetName; + bytes m_datasetMultiaddr; + bytes32 m_datasetChecksum; +} ``` -### setBaseURI +### AppInfo ```solidity -function setBaseURI(string baseUri) external +struct AppInfo { + address owner; + string m_appName; + string m_appType; + bytes m_appMultiaddr; + bytes32 m_appChecksum; + bytes m_appMREnclave; +} ``` -### baseURI +### WorkerpoolInfo ```solidity -function baseURI() public view returns (string) +struct WorkerpoolInfo { + address owner; + string m_workerpoolDescription; + uint256 m_workerStakeRatioPolicy; + uint256 m_schedulerRewardRatioPolicy; +} ``` -_Added for retrocompatibility! - -Returns the base URI set via {setBaseURI}. This will be -automatically added as a prefix in {tokenURI} to each token's ID._ +### Resource -### isRegistered +Clerk - Deals ```solidity -function isRegistered(address _entry) external view returns (bool) +struct Resource { + address pointer; + address owner; + uint256 price; +} ``` -### setName +### Deal ```solidity -function setName(address, string) external +struct Deal { + struct IexecLibCore_v5.Resource app; + struct IexecLibCore_v5.Resource dataset; + struct IexecLibCore_v5.Resource workerpool; + uint256 trust; + uint256 category; + bytes32 tag; + address requester; + address beneficiary; + address callback; + string params; + uint256 startTime; + uint256 botFirst; + uint256 botSize; + uint256 workerStake; + uint256 schedulerRewardRatio; + address sponsor; +} ``` -Sets the reverse registration name for a registry contract. +### DealBoost -_This functionality is supported only on Bellecour Sidechain, calls on other chains -will revert. The function is kept as nonpayable to maintain retrocompatibility with the -iExec SDK._ +Simplified deals for PoCo Boost module. -## RegistryEntry +```solidity +struct DealBoost { + address appOwner; + uint96 appPrice; + address datasetOwner; + uint96 datasetPrice; + address workerpoolOwner; + uint96 workerpoolPrice; + address requester; + uint96 workerReward; + address callback; + uint40 deadline; + uint16 botFirst; + uint16 botSize; + bytes3 shortTag; + address sponsor; +} +``` -_Referenced in the SDK with the current path `contracts/registries/RegistryEntry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +### TaskStatusEnum -### registry +Tasks ```solidity -contract IRegistry registry +enum TaskStatusEnum { + UNSET, + ACTIVE, + REVEALING, + COMPLETED, + FAILED +} ``` -### owner +### Task ```solidity -function owner() public view returns (address) +struct Task { + enum IexecLibCore_v5.TaskStatusEnum status; + bytes32 dealid; + uint256 idx; + uint256 timeref; + uint256 contributionDeadline; + uint256 revealDeadline; + uint256 finalDeadline; + bytes32 consensusValue; + uint256 revealCounter; + uint256 winnerCounter; + address[] contributors; + bytes32 resultDigest; + bytes results; + uint256 resultsTimestamp; + bytes resultsCallback; +} ``` -### setName +### Consensus + +Consensus ```solidity -function setName(address, string) external +struct Consensus { + mapping(bytes32 => uint256) group; + uint256 total; +} ``` -Sets the reverse registration name for a registry entry contract. - -_This functionality is supported only on Bellecour Sidechain, calls on other chains -will revert. The function is kept as nonpayable to maintain retrocompatibility with the -iExec SDK._ +### ContributionStatusEnum -## App +Consensus -_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +enum ContributionStatusEnum { + UNSET, + CONTRIBUTED, + PROVED, + REJECTED +} +``` -### m_appName +### Contribution ```solidity -string m_appName +struct Contribution { + enum IexecLibCore_v5.ContributionStatusEnum status; + bytes32 resultHash; + bytes32 resultSeal; + address enclaveChallenge; + uint256 weight; +} ``` -Members +## IexecLibOrders_v5 -### m_appType +### EIP712DOMAIN_TYPEHASH ```solidity -string m_appType +bytes32 EIP712DOMAIN_TYPEHASH ``` -### m_appMultiaddr +### APPORDER_TYPEHASH ```solidity -bytes m_appMultiaddr +bytes32 APPORDER_TYPEHASH ``` -### m_appChecksum +### DATASETORDER_TYPEHASH ```solidity -bytes32 m_appChecksum +bytes32 DATASETORDER_TYPEHASH ``` -### m_appMREnclave +### WORKERPOOLORDER_TYPEHASH ```solidity -bytes m_appMREnclave +bytes32 WORKERPOOLORDER_TYPEHASH ``` -### initialize +### REQUESTORDER_TYPEHASH ```solidity -function initialize(string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) public +bytes32 REQUESTORDER_TYPEHASH ``` -Constructor - -## AppRegistry - -_Referenced in the SDK with the current path `contracts/registries/apps/AppRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### constructor +### APPORDEROPERATION_TYPEHASH ```solidity -constructor() public +bytes32 APPORDEROPERATION_TYPEHASH ``` -Constructor - -### createApp +### DATASETORDEROPERATION_TYPEHASH ```solidity -function createApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external returns (contract App) +bytes32 DATASETORDEROPERATION_TYPEHASH ``` -### predictApp +### WORKERPOOLORDEROPERATION_TYPEHASH ```solidity -function predictApp(address _appOwner, string _appName, string _appType, bytes _appMultiaddr, bytes32 _appChecksum, bytes _appMREnclave) external view returns (contract App) +bytes32 WORKERPOOLORDEROPERATION_TYPEHASH ``` -## IApp - -### owner +### REQUESTORDEROPERATION_TYPEHASH ```solidity -function owner() external view returns (address) +bytes32 REQUESTORDEROPERATION_TYPEHASH ``` -### m_appName +### OrderOperationEnum ```solidity -function m_appName() external view returns (string) +enum OrderOperationEnum { + SIGN, + CLOSE +} ``` -### m_appType +### EIP712Domain ```solidity -function m_appType() external view returns (string) +struct EIP712Domain { + string name; + string version; + uint256 chainId; + address verifyingContract; +} ``` -### m_appMultiaddr +### AppOrder ```solidity -function m_appMultiaddr() external view returns (bytes) +struct AppOrder { + address app; + uint256 appprice; + uint256 volume; + bytes32 tag; + address datasetrestrict; + address workerpoolrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -### m_appChecksum +### DatasetOrder ```solidity -function m_appChecksum() external view returns (bytes32) +struct DatasetOrder { + address dataset; + uint256 datasetprice; + uint256 volume; + bytes32 tag; + address apprestrict; + address workerpoolrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -### m_appMREnclave +### WorkerpoolOrder ```solidity -function m_appMREnclave() external view returns (bytes) +struct WorkerpoolOrder { + address workerpool; + uint256 workerpoolprice; + uint256 volume; + bytes32 tag; + uint256 category; + uint256 trust; + address apprestrict; + address datasetrestrict; + address requesterrestrict; + bytes32 salt; + bytes sign; +} ``` -## Dataset - -_Referenced in the SDK with the current path `contracts/registries/datasets/Dataset.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### m_datasetName +### RequestOrder ```solidity -string m_datasetName +struct RequestOrder { + address app; + uint256 appmaxprice; + address dataset; + uint256 datasetmaxprice; + address workerpool; + uint256 workerpoolmaxprice; + address requester; + uint256 volume; + bytes32 tag; + uint256 category; + uint256 trust; + address beneficiary; + address callback; + string params; + bytes32 salt; + bytes sign; +} ``` -Members - -### m_datasetMultiaddr +### AppOrderOperation ```solidity -bytes m_datasetMultiaddr +struct AppOrderOperation { + struct IexecLibOrders_v5.AppOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -### m_datasetChecksum +### DatasetOrderOperation ```solidity -bytes32 m_datasetChecksum +struct DatasetOrderOperation { + struct IexecLibOrders_v5.DatasetOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -### initialize +### WorkerpoolOrderOperation ```solidity -function initialize(string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) public +struct WorkerpoolOrderOperation { + struct IexecLibOrders_v5.WorkerpoolOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -Constructor - -## DatasetRegistry - -_Referenced in the SDK with the current path `contracts/registries/datasets/DatasetRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### constructor +### RequestOrderOperation ```solidity -constructor() public +struct RequestOrderOperation { + struct IexecLibOrders_v5.RequestOrder order; + enum IexecLibOrders_v5.OrderOperationEnum operation; + bytes sign; +} ``` -Constructor - -### createDataset +### hash ```solidity -function createDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external returns (contract Dataset) +function hash(struct IexecLibOrders_v5.EIP712Domain _domain) public pure returns (bytes32 domainhash) ``` -### predictDataset +### hash ```solidity -function predictDataset(address _datasetOwner, string _datasetName, bytes _datasetMultiaddr, bytes32 _datasetChecksum) external view returns (contract Dataset) +function hash(struct IexecLibOrders_v5.AppOrder _apporder) public pure returns (bytes32 apphash) ``` -## IDataset - -### owner +### hash ```solidity -function owner() external view returns (address) +function hash(struct IexecLibOrders_v5.DatasetOrder _datasetorder) public pure returns (bytes32 datasethash) ``` -### m_datasetName +### hash ```solidity -function m_datasetName() external view returns (string) +function hash(struct IexecLibOrders_v5.WorkerpoolOrder _workerpoolorder) public pure returns (bytes32 workerpoolhash) ``` -### m_datasetMultiaddr +### hash ```solidity -function m_datasetMultiaddr() external view returns (bytes) +function hash(struct IexecLibOrders_v5.RequestOrder _requestorder) public pure returns (bytes32 requesthash) ``` -### m_datasetChecksum +### hash ```solidity -function m_datasetChecksum() external view returns (bytes32) +function hash(struct IexecLibOrders_v5.AppOrderOperation _apporderoperation) public pure returns (bytes32) ``` -## Address - -## BaseUpgradeabilityProxy - -_This contract implements a proxy that allows to change the -implementation address to which it will delegate. -Such a change is called an implementation upgrade._ - -### Upgraded +### hash ```solidity -event Upgraded(address implementation) +function hash(struct IexecLibOrders_v5.DatasetOrderOperation _datasetorderoperation) public pure returns (bytes32) ``` -_Emitted when the implementation is upgraded._ - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| implementation | address | Address of the new implementation. | - -## InitializableUpgradeabilityProxy - -_Extends BaseUpgradeabilityProxy with an initializer for initializing -implementation and init data._ - -### initialize +### hash ```solidity -function initialize(address _logic, bytes _data) public payable +function hash(struct IexecLibOrders_v5.WorkerpoolOrderOperation _workerpoolorderoperation) public pure returns (bytes32) ``` -_Contract initializer._ - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | ----------- | -| _logic | address | Address of the initial implementation. | -| _data | bytes | Data to send as msg.data to the implementation to initialize the proxied contract. It should include the signature and the parameters of the function to be called, as described in https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. | - -## Proxy - -_Implements delegation of calls to other contracts, with proper -forwarding of return values and bubbling of failures. -It defines a fallback function that delegates all calls to the address -returned by the abstract _implementation() internal function._ - -### receive +### hash ```solidity -receive() external payable virtual +function hash(struct IexecLibOrders_v5.RequestOrderOperation _requestorderoperation) public pure returns (bytes32) ``` -_Receive function. -Implemented entirely in `_fallback`._ +## PocoStorageLib -### fallback +### PocoStorage ```solidity -fallback() external payable +struct PocoStorage { + contract IRegistry m_appregistry; + contract IRegistry m_datasetregistry; + contract IRegistry m_workerpoolregistry; + contract IERC20 m_baseToken; + string m_name; + string m_symbol; + uint8 m_decimals; + uint256 m_totalSupply; + mapping(address => uint256) m_balances; + mapping(address => uint256) m_frozens; + mapping(address => mapping(address => uint256)) m_allowances; + bytes32 m_eip712DomainSeparator; + mapping(bytes32 => address) m_presigned; + mapping(bytes32 => uint256) m_consumed; + mapping(bytes32 => struct IexecLibCore_v5.Deal) m_deals; + mapping(bytes32 => struct IexecLibCore_v5.Task) m_tasks; + mapping(bytes32 => struct IexecLibCore_v5.Consensus) m_consensus; + mapping(bytes32 => mapping(address => struct IexecLibCore_v5.Contribution)) m_contributions; + mapping(address => uint256) m_workerScores; + address m_teebroker; + uint256 m_callbackgas; + struct IexecLibCore_v5.Category[] m_categories; + contract IexecHubV3Interface m_v3_iexecHub; + mapping(address => bool) m_v3_scoreImported; + mapping(bytes32 => struct IexecLibCore_v5.DealBoost) m_dealsBoost; +} ``` -_Fallback function. -Implemented entirely in `_fallback`._ - -## IWorkerpool +## IApp ### owner @@ -1672,93 +1680,85 @@ Implemented entirely in `_fallback`._ function owner() external view returns (address) ``` -### m_workerpoolDescription +### m_appName ```solidity -function m_workerpoolDescription() external view returns (string) +function m_appName() external view returns (string) ``` -### m_schedulerRewardRatioPolicy +### m_appType ```solidity -function m_schedulerRewardRatioPolicy() external view returns (uint256) +function m_appType() external view returns (string) ``` -### m_workerStakeRatioPolicy +### m_appMultiaddr ```solidity -function m_workerStakeRatioPolicy() external view returns (uint256) +function m_appMultiaddr() external view returns (bytes) ``` -## Workerpool +### m_appChecksum -_Referenced in the SDK with the current path `contracts/registries/workerpools/Workerpool.sol`. -Changing the name or the path would cause a breaking change in the SDK._ +```solidity +function m_appChecksum() external view returns (bytes32) +``` -### m_workerpoolDescription +### m_appMREnclave ```solidity -string m_workerpoolDescription +function m_appMREnclave() external view returns (bytes) ``` -Parameters +## IDataset -### m_workerStakeRatioPolicy +### owner ```solidity -uint256 m_workerStakeRatioPolicy +function owner() external view returns (address) ``` -### m_schedulerRewardRatioPolicy +### m_datasetName ```solidity -uint256 m_schedulerRewardRatioPolicy +function m_datasetName() external view returns (string) ``` -### PolicyUpdate +### m_datasetMultiaddr ```solidity -event PolicyUpdate(uint256 oldWorkerStakeRatioPolicy, uint256 newWorkerStakeRatioPolicy, uint256 oldSchedulerRewardRatioPolicy, uint256 newSchedulerRewardRatioPolicy) +function m_datasetMultiaddr() external view returns (bytes) ``` -Events - -### initialize +### m_datasetChecksum ```solidity -function initialize(string _workerpoolDescription) public +function m_datasetChecksum() external view returns (bytes32) ``` -Constructor +## IWorkerpool -### changePolicy +### owner ```solidity -function changePolicy(uint256 _newWorkerStakeRatioPolicy, uint256 _newSchedulerRewardRatioPolicy) external +function owner() external view returns (address) ``` -## WorkerpoolRegistry - -_Referenced in the SDK with the current path `contracts/registries/workerpools/WorkerpoolRegistry.sol`. -Changing the name or the path would cause a breaking change in the SDK._ - -### constructor +### m_workerpoolDescription ```solidity -constructor() public +function m_workerpoolDescription() external view returns (string) ``` -Constructor - -### createWorkerpool +### m_schedulerRewardRatioPolicy ```solidity -function createWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external returns (contract Workerpool) +function m_schedulerRewardRatioPolicy() external view returns (uint256) ``` -### predictWorkerpool +### m_workerStakeRatioPolicy ```solidity -function predictWorkerpool(address _workerpoolOwner, string _workerpoolDescription) external view returns (contract Workerpool) +function m_workerStakeRatioPolicy() external view returns (uint256) ``` From 4e3e5e8a8080a4032ec4b0d11176554ec14cce6e Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Fri, 31 Oct 2025 16:47:19 +0100 Subject: [PATCH 74/77] fix: format --- .../InitializableUpgradeabilityProxy.sol | 32 +++++++++---------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/contracts/registries/proxy/InitializableUpgradeabilityProxy.sol b/contracts/registries/proxy/InitializableUpgradeabilityProxy.sol index 87e547bf5..944b5d1f1 100644 --- a/contracts/registries/proxy/InitializableUpgradeabilityProxy.sol +++ b/contracts/registries/proxy/InitializableUpgradeabilityProxy.sol @@ -19,21 +19,21 @@ import {BaseUpgradeabilityProxy} from "./BaseUpgradeabilityProxy.sol"; * implementation and init data. */ contract InitializableUpgradeabilityProxy is BaseUpgradeabilityProxy { - /** - * @dev Contract initializer. - * @param _logic Address of the initial implementation. - * @param _data Data to send as msg.data to the implementation to initialize the proxied contract. - * It should include the signature and the parameters of the function to be called, as described in - * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. - * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. - */ - function initialize(address _logic, bytes memory _data) public payable { - require(_implementation() == address(0)); - assert(IMPLEMENTATION_SLOT == keccak256("org.zeppelinos.proxy.implementation")); - _setImplementation(_logic); - if (_data.length > 0) { - (bool success, ) = _logic.delegatecall(_data); - require(success); - } + /** + * @dev Contract initializer. + * @param _logic Address of the initial implementation. + * @param _data Data to send as msg.data to the implementation to initialize the proxied contract. + * It should include the signature and the parameters of the function to be called, as described in + * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding. + * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped. + */ + function initialize(address _logic, bytes memory _data) public payable { + require(_implementation() == address(0)); + assert(IMPLEMENTATION_SLOT == keccak256("org.zeppelinos.proxy.implementation")); + _setImplementation(_logic); + if(_data.length > 0) { + (bool success,) = _logic.delegatecall(_data); + require(success); } + } } From 676891b5971f8ac6648ffcbec014593ca1de4f8a Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Fri, 31 Oct 2025 16:48:20 +0100 Subject: [PATCH 75/77] fix: format --- .../proxy/BaseUpgradeabilityProxy.sol | 80 +++++++++---------- 1 file changed, 38 insertions(+), 42 deletions(-) diff --git a/contracts/registries/proxy/BaseUpgradeabilityProxy.sol b/contracts/registries/proxy/BaseUpgradeabilityProxy.sol index 185474785..821215343 100644 --- a/contracts/registries/proxy/BaseUpgradeabilityProxy.sol +++ b/contracts/registries/proxy/BaseUpgradeabilityProxy.sol @@ -22,54 +22,50 @@ import {Proxy} from "./Proxy.sol"; * Such a change is called an implementation upgrade. */ contract BaseUpgradeabilityProxy is Proxy { - /** - * @dev Emitted when the implementation is upgraded. - * @param implementation Address of the new implementation. - */ - event Upgraded(address indexed implementation); + /** + * @dev Emitted when the implementation is upgraded. + * @param implementation Address of the new implementation. + */ + event Upgraded(address indexed implementation); - /** - * @dev Storage slot with the address of the current implementation. - * This is the keccak-256 hash of "org.zeppelinos.proxy.implementation", and is - * validated in the constructor. - */ - bytes32 internal constant IMPLEMENTATION_SLOT = - 0x7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3; + /** + * @dev Storage slot with the address of the current implementation. + * This is the keccak-256 hash of "org.zeppelinos.proxy.implementation", and is + * validated in the constructor. + */ + bytes32 internal constant IMPLEMENTATION_SLOT = 0x7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3; - /** - * @dev Returns the current implementation. - * @return impl Address of the current implementation - */ - function _implementation() internal view override returns (address impl) { - bytes32 slot = IMPLEMENTATION_SLOT; - assembly { - impl := sload(slot) - } + /** + * @dev Returns the current implementation. + * @return impl Address of the current implementation + */ + function _implementation() internal override view returns (address impl) { + bytes32 slot = IMPLEMENTATION_SLOT; + assembly { + impl := sload(slot) } + } - /** - * @dev Upgrades the proxy to a new implementation. - * @param newImplementation Address of the new implementation. - */ - function _upgradeTo(address newImplementation) internal { - _setImplementation(newImplementation); - emit Upgraded(newImplementation); - } + /** + * @dev Upgrades the proxy to a new implementation. + * @param newImplementation Address of the new implementation. + */ + function _upgradeTo(address newImplementation) internal { + _setImplementation(newImplementation); + emit Upgraded(newImplementation); + } - /** - * @dev Sets the implementation address of the proxy. - * @param newImplementation Address of the new implementation. - */ - function _setImplementation(address newImplementation) internal { - require( - Address.isContract(newImplementation), - "Cannot set a proxy implementation to a non-contract address" - ); + /** + * @dev Sets the implementation address of the proxy. + * @param newImplementation Address of the new implementation. + */ + function _setImplementation(address newImplementation) internal { + require(Address.isContract(newImplementation), "Cannot set a proxy implementation to a non-contract address"); - bytes32 slot = IMPLEMENTATION_SLOT; + bytes32 slot = IMPLEMENTATION_SLOT; - assembly { - sstore(slot, newImplementation) - } + assembly { + sstore(slot, newImplementation) } + } } From 853ccd90e235ebbb4a77f8b5046529369cdde856 Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Fri, 31 Oct 2025 17:39:09 +0100 Subject: [PATCH 76/77] chore: update Hardhat configuration for compatibility with version 3.0.10, add old config file for reference, and update Node version in .nvmrc --- .nvmrc | 2 +- hardhat.config.old.ts | 344 + hardhat.config.ts | 357 +- package-lock.json | 20605 ++++++++++------------------ package.json | 4 +- scripts/tools/copy-deployments.ts | 4 +- 6 files changed, 7393 insertions(+), 13923 deletions(-) create mode 100644 hardhat.config.old.ts diff --git a/.nvmrc b/.nvmrc index 209e3ef4b..ec7ba0e9b 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -20 +22.10.0 diff --git a/hardhat.config.old.ts b/hardhat.config.old.ts new file mode 100644 index 000000000..20ed8e587 --- /dev/null +++ b/hardhat.config.old.ts @@ -0,0 +1,344 @@ +import 'dotenv/config'; +import * as fs from 'fs'; +// hardhat-deploy temporarily disabled - not compatible with Hardhat 3 yet +// import 'hardhat-deploy'; +import { HardhatUserConfig, task } from 'hardhat/config'; +import * as path from 'path'; +// solidity-docgen temporarily disabled - not compatible with Hardhat 3 yet +// import 'solidity-docgen'; +import { cleanupDeployments, copyDeployments } from './scripts/tools/copy-deployments'; +import chainConfig from './utils/config'; +// Hardhat 3: internal imports may have changed, using defaults directly +const HARDHAT_NETWORK_MNEMONIC = 'test test test test test test test test test test test junk'; +const defaultHardhatNetworkParams = {}; +const defaultLocalhostNetworkParams = {}; + +const isNativeChainType = chainConfig.isNativeChain(); +const isLocalFork = chainConfig.isLocalFork(); +const isArbitrumSepoliaFork = chainConfig.isArbitrumSepoliaFork(); +const isArbitrumFork = chainConfig.isArbitrumFork(); +const bellecourBlockscoutUrl = 'https://blockscout.bellecour.iex.ec'; + +/** + * @dev Native mode. As close as possible to the iExec Bellecour blockchain. + * @note Any fresh version of Hardhat uses for its default + * hardhat network a configuration from a recent Ethereum + * fork. EIPs brought by such recent fork are not necessarily + * supported by the iExec Bellecour blockchain. + */ +const bellecourBaseConfig = { + hardfork: 'berlin', // No EIP-1559 before London fork + gasPrice: 0, + blockGasLimit: 6_700_000, +}; + +// Arbitrum Sepolia specific configuration +const arbitrumSepoliaBaseConfig = { + chainId: 421614, + blockGasLimit: 32_000_000, +}; + +// Arbitrum specific configuration +const arbitrumBaseConfig = { + chainId: 42161, + // https://docs.arbitrum.io/build-decentralized-apps/arbitrum-vs-ethereum/block-numbers-and-time#block-gas-limit + blockGasLimit: 32_000_000, +}; + +const settings = { + optimizer: { + enabled: true, + runs: 200, + }, + outputSelection: { '*': { '*': ['storageLayout'] } }, +}; + +const v8Settings = { + ...settings, + /** + * Enable Intermediate Representation (IR) to reduce `Stack too deep` occurrences + * at compile time (e.g.: too many local variables in `matchOrdersBoost`). + * https://hardhat.org/hardhat-runner/docs/reference/solidity-support#support-for-ir-based-codegen + */ + viaIR: true, + optimizer: { + ...settings.optimizer, + details: { + yul: true, + yulDetails: { + optimizerSteps: 'u', + }, + }, + }, +}; + +const config: HardhatUserConfig = { + paths: { + sources: './contracts', + tests: './test', + cache: './cache', + artifacts: './artifacts', + }, + solidity: { + compilers: [ + { version: '0.8.21', settings: v8Settings }, // PoCo Boost + { version: '0.6.12', settings }, // PoCo contracts + { version: '0.4.11', settings }, // RLC contracts + ], + }, + namedAccounts: { + deployer: { + default: 0, + bellecour: chainConfig.chains['134'].deployer, + arbitrum: chainConfig.chains['42161'].deployer, + arbitrumSepolia: chainConfig.chains['421614'].deployer, + }, + owner: { + default: 0, // TODO change this to 1 and update admin tests. + bellecour: chainConfig.chains['134'].owner, + arbitrum: chainConfig.chains['42161'].owner, + arbitrumSepolia: chainConfig.chains['421614'].owner, + }, + }, + networks: { + hardhat: { + type: 'edr-simulated', // Hardhat 3: required network type + accounts: { + mnemonic: process.env.MNEMONIC || HARDHAT_NETWORK_MNEMONIC, + }, + ...((isNativeChainType || isLocalFork) && bellecourBaseConfig), + ...(isLocalFork && { + forking: { + url: 'https://bellecour.iex.ec', + }, + chainId: 134, + }), + ...(isArbitrumSepoliaFork && { + forking: { + url: + process.env.ARBITRUM_SEPOLIA_RPC_URL || + 'https://sepolia-rollup.arbitrum.io/rpc', + blockNumber: process.env.ARBITRUM_SEPOLIA_BLOCK_NUMBER + ? parseInt(process.env.ARBITRUM_SEPOLIA_BLOCK_NUMBER) + : undefined, + }, + ...arbitrumSepoliaBaseConfig, + gasPrice: 100_000_000, // 0.1 Gwei + }), + + ...(isArbitrumFork && { + forking: { + url: process.env.ARBITRUM_RPC_URL || 'https://arbitrum.gateway.tenderly.co', + }, + ...arbitrumBaseConfig, + gasPrice: 100_000_000, // 0.1 Gwei + }), + }, + 'external-hardhat': { + type: 'edr-simulated', // Hardhat 3: required network type + ...defaultHardhatNetworkParams, + ...defaultLocalhostNetworkParams, + accounts: { + mnemonic: process.env.MNEMONIC || HARDHAT_NETWORK_MNEMONIC, + }, + ...((isNativeChainType || isLocalFork) && bellecourBaseConfig), + ...(isLocalFork && { + accounts: 'remote', // Override defaults accounts for impersonation + chainId: 134, + }), + ...(isArbitrumSepoliaFork && { + accounts: 'remote', // Override defaults accounts for impersonation + ...arbitrumSepoliaBaseConfig, + }), + ...(isArbitrumFork && { + accounts: 'remote', // Override defaults accounts for impersonation + ...arbitrumBaseConfig, + }), + }, + 'dev-native': { + type: 'http', // Hardhat 3: required network type + chainId: 65535, + url: process.env.DEV_NODE || 'http://localhost:8545', + accounts: { + mnemonic: process.env.MNEMONIC || '', + }, + gasPrice: bellecourBaseConfig.gasPrice, // Get closer to Bellecour network + }, + 'dev-token': { + type: 'http', // Hardhat 3: required network type + chainId: 65535, + url: process.env.DEV_NODE || 'http://localhost:8545', + accounts: { + mnemonic: process.env.MNEMONIC || '', + }, + // When deploying on a blockchain with EIP-1559 enabled and + // force-sealing disabled, deployment gets stuck if gasPrice is + // not manually set. Other approaches might be considered here. + gasPrice: 8_000_000_000, // 8 Gwei + }, + arbitrum: { + type: 'http', // Hardhat 3: required network type + url: + process.env.ARBITRUM_RPC_URL || // Used in local development + process.env.RPC_URL || // Defined in Github Actions environments + 'https://arbitrum.gateway.tenderly.co', + accounts: _getPrivateKeys(), + ...arbitrumBaseConfig, + }, + arbitrumSepolia: { + type: 'http', // Hardhat 3: required network type + url: + process.env.ARBITRUM_SEPOLIA_RPC_URL || // Used in local development + process.env.RPC_URL || // Defined in Github Actions environments + 'https://sepolia-rollup.arbitrum.io/rpc', + accounts: _getPrivateKeys(), + ...arbitrumSepoliaBaseConfig, + }, + bellecour: { + type: 'http', // Hardhat 3: required network type + chainId: 134, + url: 'https://bellecour.iex.ec', + accounts: _getPrivateKeys(), + ...bellecourBaseConfig, + verify: { + etherscan: { + apiUrl: bellecourBlockscoutUrl, + apiKey: '<>', + }, + }, + }, + }, + etherscan: { + // Using Etherscan V2 API for unified multichain support + apiKey: process.env.EXPLORER_API_KEY || '', + customChains: [ + { + network: 'bellecour', + chainId: 134, + urls: { + apiURL: `${bellecourBlockscoutUrl}/api`, + browserURL: bellecourBlockscoutUrl, + }, + }, + ], + }, + sourcify: { + enabled: true, + }, + typechain: { + outDir: 'typechain', + }, + // dependencyCompiler temporarily disabled - not compatible with Hardhat 3 yet + // TODO: Re-enable when hardhat-dependency-compiler supports Hardhat 3 + // dependencyCompiler: { + // paths: [ + // 'rlc-faucet-contract/contracts/RLC.sol', + // // ERC-2535 Diamond + // '@mudgen/diamond-1/contracts/facets/DiamondCutFacet.sol', + // '@mudgen/diamond-1/contracts/facets/DiamondLoupeFacet.sol', + // '@mudgen/diamond-1/contracts/facets/OwnershipFacet.sol', + // '@mudgen/diamond-1/contracts/libraries/LibDiamond.sol', + // '@mudgen/diamond-1/contracts/upgradeInitializers/DiamondInit.sol', + // // Used as mock or fake in UTs + // '@openzeppelin/contracts/interfaces/IERC1271.sol', + // // Used in deployment + // '@amxx/factory/contracts/v6/GenericFactory.sol', + // 'createx/src/ICreateX.sol', + // ], + // keep: true, // Slither requires compiled dependencies + // }, + docgen: { + outputDir: 'docs/solidity', + templates: 'docs/solidity/templates', + exclude: [ + 'external', + 'facets/FacetBase.sol', // duplicated in FacetBase.v8.sol + 'facets/IexecAccessorsABILegacyFacet.sol', // not relevant + // kept for events 'facets/IexecERC20Core.sol', // contains only internal/private + // kept for events 'facets/IexecEscrow.v8.sol', // contains only internal/private + 'facets/IexecPocoCommon.sol', // contains only internal/private + 'facets/SignatureVerifier.sol', // contains only internal/private + 'facets/SignatureVerifier.v8.sol', + 'interfaces', // interesting for events but too much doc duplication if enabled + 'tools', + 'Diamond.sol', // not relevant + ], + }, + mocha: { timeout: 300000 }, +}; + +/** + * Ignore doc generation of contracts compiled with solc@0.4 (unsupported by docgen). + */ +task('docgen').setAction(async (taskArgs, hre, runSuper) => { + const ignoredSuffix = '.docgen-ignored'; + const ignoredPaths: string[] = []; + for (const path of await hre.artifacts.getBuildInfoPaths()) { + const solcVersion: string = JSON.parse(fs.readFileSync(path, 'utf8')).solcVersion; + if (solcVersion.startsWith('0.4')) { + fs.renameSync(path, path + ignoredSuffix); // mark as docgen ignored + ignoredPaths.push(path); + } + } + await runSuper(taskArgs).finally(() => { + for (const path of ignoredPaths) { + fs.renameSync(path + ignoredSuffix, path); // restore build info as before + } + }); +}); + +task('test').setAction(async (taskArgs: any, hre, runSuper) => { + let deploymentsCopied = false; + let networkName = ''; + try { + if (isArbitrumSepoliaFork) { + networkName = 'arbitrumSepolia'; + deploymentsCopied = await copyDeployments(networkName); + } + await runSuper(taskArgs); + } finally { + if (deploymentsCopied && networkName) { + await cleanupDeployments(networkName); + } + } +}); + +// Automatically update ABIs after compiling contracts. +task('compile').setAction(async (taskArgs: any, hre, runSuper) => { + await runSuper(taskArgs); + await hre.run('abis'); +}); + +task('abis', 'Generate contract ABIs').setAction(async (taskArgs, hre) => { + const abisDir = './abis'; + // Remove old ABIs folder if it exists. + if (fs.existsSync(abisDir)) { + fs.rmSync(abisDir, { recursive: true, force: true }); + } + fs.mkdirSync(abisDir); + const contracts = (await hre.artifacts.getAllFullyQualifiedNames()) + // Keep only "contracts/" folder + .filter((name) => name.startsWith('contracts/')) + // Remove non relevant contracts + // !!! Update package.json#files if this is updated. + .filter((name) => !name.startsWith('contracts/tools/testing')) + .filter((name) => !name.startsWith('contracts/tools/diagrams')) + .filter((name) => !name.startsWith('contracts/tools/TimelockController')); + for (const contractFile of contracts) { + const artifact = await hre.artifacts.readArtifact(contractFile); + const abiFileDir = `${abisDir}/${path.dirname(contractFile)}`; + const abiFile = `${abiFileDir}/${artifact.contractName}.json`; + fs.mkdirSync(abiFileDir, { recursive: true }); + fs.writeFileSync(abiFile, JSON.stringify(artifact.abi, null, 2)); + } + console.log(`Saved ${contracts.length} ABI files to ${abisDir} folder`); +}); + +function _getPrivateKeys() { + const ZERO_PRIVATE_KEY = '0x0000000000000000000000000000000000000000000000000000000000000000'; + const deployerKey = process.env.DEPLOYER_PRIVATE_KEY || ZERO_PRIVATE_KEY; + const adminKey = process.env.ADMIN_PRIVATE_KEY || ZERO_PRIVATE_KEY; + return [deployerKey, adminKey]; +} + +export default config; diff --git a/hardhat.config.ts b/hardhat.config.ts index dea65345a..3eed4b871 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -1,330 +1,53 @@ -import '@nomicfoundation/hardhat-toolbox'; -import 'dotenv/config'; -import * as fs from 'fs'; -import 'hardhat-dependency-compiler'; -import 'hardhat-deploy'; -import { HardhatUserConfig, task } from 'hardhat/config'; -import { - HARDHAT_NETWORK_MNEMONIC, - defaultHardhatNetworkParams, - defaultLocalhostNetworkParams, -} from 'hardhat/internal/core/config/default-config'; -import * as path from 'path'; -import 'solidity-docgen'; -import { cleanupDeployments, copyDeployments } from './scripts/tools/copy-deployments'; -import chainConfig from './utils/config'; - -const isNativeChainType = chainConfig.isNativeChain(); -const isLocalFork = chainConfig.isLocalFork(); -const isArbitrumSepoliaFork = chainConfig.isArbitrumSepoliaFork(); -const isArbitrumFork = chainConfig.isArbitrumFork(); -const bellecourBlockscoutUrl = 'https://blockscout.bellecour.iex.ec'; - -/** - * @dev Native mode. As close as possible to the iExec Bellecour blockchain. - * @note Any fresh version of Hardhat uses for its default - * hardhat network a configuration from a recent Ethereum - * fork. EIPs brought by such recent fork are not necessarily - * supported by the iExec Bellecour blockchain. - */ -const bellecourBaseConfig = { - hardfork: 'berlin', // No EIP-1559 before London fork - gasPrice: 0, - blockGasLimit: 6_700_000, -}; - -// Arbitrum Sepolia specific configuration -const arbitrumSepoliaBaseConfig = { - chainId: 421614, - blockGasLimit: 32_000_000, -}; - -// Arbitrum specific configuration -const arbitrumBaseConfig = { - chainId: 42161, - // https://docs.arbitrum.io/build-decentralized-apps/arbitrum-vs-ethereum/block-numbers-and-time#block-gas-limit - blockGasLimit: 32_000_000, -}; - -const settings = { - optimizer: { - enabled: true, - runs: 200, - }, - outputSelection: { '*': { '*': ['storageLayout'] } }, -}; - -const v8Settings = { - ...settings, - /** - * Enable Intermediate Representation (IR) to reduce `Stack too deep` occurrences - * at compile time (e.g.: too many local variables in `matchOrdersBoost`). - * https://hardhat.org/hardhat-runner/docs/reference/solidity-support#support-for-ir-based-codegen - */ - viaIR: true, - optimizer: { - ...settings.optimizer, - details: { - yul: true, - yulDetails: { - optimizerSteps: 'u', - }, - }, - }, -}; +import type { HardhatUserConfig } from 'hardhat/config'; const config: HardhatUserConfig = { + paths: { + sources: './contracts', + tests: './test', + cache: './cache', + artifacts: './artifacts', + }, solidity: { compilers: [ - { version: '0.8.21', settings: v8Settings }, // PoCo Boost - { version: '0.6.12', settings }, // PoCo contracts - { version: '0.4.11', settings }, // RLC contracts - ], - }, - namedAccounts: { - deployer: { - default: 0, - bellecour: chainConfig.chains['134'].deployer, - arbitrum: chainConfig.chains['42161'].deployer, - arbitrumSepolia: chainConfig.chains['421614'].deployer, - }, - owner: { - default: 0, // TODO change this to 1 and update admin tests. - bellecour: chainConfig.chains['134'].owner, - arbitrum: chainConfig.chains['42161'].owner, - arbitrumSepolia: chainConfig.chains['421614'].owner, - }, - }, - networks: { - hardhat: { - accounts: { - mnemonic: process.env.MNEMONIC || HARDHAT_NETWORK_MNEMONIC, - }, - ...((isNativeChainType || isLocalFork) && bellecourBaseConfig), - ...(isLocalFork && { - forking: { - url: 'https://bellecour.iex.ec', - }, - chainId: 134, - }), - ...(isArbitrumSepoliaFork && { - forking: { - url: - process.env.ARBITRUM_SEPOLIA_RPC_URL || - 'https://sepolia-rollup.arbitrum.io/rpc', - blockNumber: process.env.ARBITRUM_SEPOLIA_BLOCK_NUMBER - ? parseInt(process.env.ARBITRUM_SEPOLIA_BLOCK_NUMBER) - : undefined, - }, - ...arbitrumSepoliaBaseConfig, - gasPrice: 100_000_000, // 0.1 Gwei - }), - - ...(isArbitrumFork && { - forking: { - url: process.env.ARBITRUM_RPC_URL || 'https://arbitrum.gateway.tenderly.co', + { + version: '0.8.21', + settings: { + optimizer: { + enabled: true, + runs: 200, + details: { + yul: true, + yulDetails: { + optimizerSteps: 'u', + }, + }, + }, + outputSelection: { '*': { '*': ['storageLayout'] } }, + viaIR: true, }, - ...arbitrumBaseConfig, - gasPrice: 100_000_000, // 0.1 Gwei - }), - }, - 'external-hardhat': { - ...defaultHardhatNetworkParams, - ...defaultLocalhostNetworkParams, - accounts: { - mnemonic: process.env.MNEMONIC || HARDHAT_NETWORK_MNEMONIC, - }, - ...((isNativeChainType || isLocalFork) && bellecourBaseConfig), - ...(isLocalFork && { - accounts: 'remote', // Override defaults accounts for impersonation - chainId: 134, - }), - ...(isArbitrumSepoliaFork && { - accounts: 'remote', // Override defaults accounts for impersonation - ...arbitrumSepoliaBaseConfig, - }), - ...(isArbitrumFork && { - accounts: 'remote', // Override defaults accounts for impersonation - ...arbitrumBaseConfig, - }), - }, - 'dev-native': { - chainId: 65535, - url: process.env.DEV_NODE || 'http://localhost:8545', - accounts: { - mnemonic: process.env.MNEMONIC || '', - }, - gasPrice: bellecourBaseConfig.gasPrice, // Get closer to Bellecour network - }, - 'dev-token': { - chainId: 65535, - url: process.env.DEV_NODE || 'http://localhost:8545', - accounts: { - mnemonic: process.env.MNEMONIC || '', - }, - // When deploying on a blockchain with EIP-1559 enabled and - // force-sealing disabled, deployment gets stuck if gasPrice is - // not manually set. Other approaches might be considered here. - gasPrice: 8_000_000_000, // 8 Gwei - }, - arbitrum: { - url: - process.env.ARBITRUM_RPC_URL || // Used in local development - process.env.RPC_URL || // Defined in Github Actions environments - 'https://arbitrum.gateway.tenderly.co', - accounts: _getPrivateKeys(), - ...arbitrumBaseConfig, - }, - arbitrumSepolia: { - url: - process.env.ARBITRUM_SEPOLIA_RPC_URL || // Used in local development - process.env.RPC_URL || // Defined in Github Actions environments - 'https://sepolia-rollup.arbitrum.io/rpc', - accounts: _getPrivateKeys(), - ...arbitrumSepoliaBaseConfig, - }, - bellecour: { - chainId: 134, - url: 'https://bellecour.iex.ec', - accounts: _getPrivateKeys(), - ...bellecourBaseConfig, - verify: { - etherscan: { - apiUrl: bellecourBlockscoutUrl, - apiKey: '<>', + }, // PoCo Boost + { + version: '0.6.12', + settings: { + optimizer: { + enabled: true, + runs: 200, + }, + outputSelection: { '*': { '*': ['storageLayout'] } }, }, - }, - }, - }, - etherscan: { - // Using Etherscan V2 API for unified multichain support - apiKey: process.env.EXPLORER_API_KEY || '', - customChains: [ + }, // PoCo contracts { - network: 'bellecour', - chainId: 134, - urls: { - apiURL: `${bellecourBlockscoutUrl}/api`, - browserURL: bellecourBlockscoutUrl, + version: '0.4.11', + settings: { + optimizer: { + enabled: true, + runs: 200, + }, + outputSelection: { '*': { '*': ['storageLayout'] } }, }, - }, + }, // RLC contracts ], }, - sourcify: { - enabled: true, - }, - typechain: { - outDir: 'typechain', - }, - dependencyCompiler: { - paths: [ - 'rlc-faucet-contract/contracts/RLC.sol', - // ERC-2535 Diamond - '@mudgen/diamond-1/contracts/facets/DiamondCutFacet.sol', - '@mudgen/diamond-1/contracts/facets/DiamondLoupeFacet.sol', - '@mudgen/diamond-1/contracts/facets/OwnershipFacet.sol', - '@mudgen/diamond-1/contracts/libraries/LibDiamond.sol', - '@mudgen/diamond-1/contracts/upgradeInitializers/DiamondInit.sol', - // Used as mock or fake in UTs - '@openzeppelin/contracts/interfaces/IERC1271.sol', - // Used in deployment - '@amxx/factory/contracts/v6/GenericFactory.sol', - 'createx/src/ICreateX.sol', - ], - keep: true, // Slither requires compiled dependencies - }, - docgen: { - outputDir: 'docs/solidity', - templates: 'docs/solidity/templates', - exclude: [ - 'external', - 'facets/FacetBase.sol', // duplicated in FacetBase.v8.sol - 'facets/IexecAccessorsABILegacyFacet.sol', // not relevant - // kept for events 'facets/IexecERC20Core.sol', // contains only internal/private - // kept for events 'facets/IexecEscrow.v8.sol', // contains only internal/private - 'facets/IexecPocoCommon.sol', // contains only internal/private - 'facets/SignatureVerifier.sol', // contains only internal/private - 'facets/SignatureVerifier.v8.sol', - 'interfaces', // interesting for events but too much doc duplication if enabled - 'tools', - 'Diamond.sol', // not relevant - ], - }, - mocha: { timeout: 300000 }, }; -/** - * Ignore doc generation of contracts compiled with solc@0.4 (unsupported by docgen). - */ -task('docgen').setAction(async (taskArgs, hre, runSuper) => { - const ignoredSuffix = '.docgen-ignored'; - const ignoredPaths: string[] = []; - for (const path of await hre.artifacts.getBuildInfoPaths()) { - const solcVersion: string = JSON.parse(fs.readFileSync(path, 'utf8')).solcVersion; - if (solcVersion.startsWith('0.4')) { - fs.renameSync(path, path + ignoredSuffix); // mark as docgen ignored - ignoredPaths.push(path); - } - } - await runSuper(taskArgs).finally(() => { - for (const path of ignoredPaths) { - fs.renameSync(path + ignoredSuffix, path); // restore build info as before - } - }); -}); - -task('test').setAction(async (taskArgs: any, hre, runSuper) => { - let deploymentsCopied = false; - let networkName = ''; - try { - if (isArbitrumSepoliaFork) { - networkName = 'arbitrumSepolia'; - deploymentsCopied = await copyDeployments(networkName); - } - await runSuper(taskArgs); - } finally { - if (deploymentsCopied && networkName) { - await cleanupDeployments(networkName); - } - } -}); - -// Automatically update ABIs after compiling contracts. -task('compile').setAction(async (taskArgs: any, hre, runSuper) => { - await runSuper(taskArgs); - await hre.run('abis'); -}); - -task('abis', 'Generate contract ABIs').setAction(async (taskArgs, hre) => { - const abisDir = './abis'; - // Remove old ABIs folder if it exists. - if (fs.existsSync(abisDir)) { - fs.rmSync(abisDir, { recursive: true, force: true }); - } - fs.mkdirSync(abisDir); - const contracts = (await hre.artifacts.getAllFullyQualifiedNames()) - // Keep only "contracts/" folder - .filter((name) => name.startsWith('contracts/')) - // Remove non relevant contracts - // !!! Update package.json#files if this is updated. - .filter((name) => !name.startsWith('contracts/tools/testing')) - .filter((name) => !name.startsWith('contracts/tools/diagrams')) - .filter((name) => !name.startsWith('contracts/tools/TimelockController')); - for (const contractFile of contracts) { - const artifact = await hre.artifacts.readArtifact(contractFile); - const abiFileDir = `${abisDir}/${path.dirname(contractFile)}`; - const abiFile = `${abiFileDir}/${artifact.contractName}.json`; - fs.mkdirSync(abiFileDir, { recursive: true }); - fs.writeFileSync(abiFile, JSON.stringify(artifact.abi, null, 2)); - } - console.log(`Saved ${contracts.length} ABI files to ${abisDir} folder`); -}); - -function _getPrivateKeys() { - const ZERO_PRIVATE_KEY = '0x0000000000000000000000000000000000000000000000000000000000000000'; - const deployerKey = process.env.DEPLOYER_PRIVATE_KEY || ZERO_PRIVATE_KEY; - const adminKey = process.env.ADMIN_PRIVATE_KEY || ZERO_PRIVATE_KEY; - return [deployerKey, adminKey]; -} - export default config; diff --git a/package-lock.json b/package-lock.json index c6b38eeb5..01625fd0f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,10 +19,9 @@ }, "devDependencies": { "@amxx/factory": "^1.0.0", - "@nomicfoundation/hardhat-toolbox": "^5.0.0", "@openzeppelin/upgrades-core": "^1.37.1", "dotenv": "^16.5.0", - "hardhat": "^2.22.18", + "hardhat": "^3.0.10", "hardhat-dependency-compiler": "^1.2.1", "hardhat-deploy": "^0.11.43", "husky": "^9.1.6", @@ -38,13 +37,6 @@ "zx": "^8.1.6" } }, - "node_modules/@adraffy/ens-normalize": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", - "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", - "dev": true, - "peer": true - }, "node_modules/@aduh95/viz.js": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/@aduh95/viz.js/-/viz.js-3.7.0.tgz", @@ -57,236 +49,452 @@ "integrity": "sha512-GXos8f4vKWPcphVyF2RU+/4rGvlov2idZSPNzXyIEmkzwLuxa+waTOUjHCvN7cmG0vXM7tyjawXUN1fdgiLvxA==", "dev": true }, - "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", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.11.tgz", + "integrity": "sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==", + "cpu": [ + "ppc64" + ], "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], "engines": { - "node": ">=12" + "node": ">=18" } }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "node_modules/@esbuild/android-arm": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz", + "integrity": "sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==", + "cpu": [ + "arm" + ], "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@ethersproject/abi": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", - "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "node_modules/@esbuild/android-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz", + "integrity": "sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==", + "cpu": [ + "arm64" + ], "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } + "license": "MIT", + "optional": true, + "os": [ + "android" ], - "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "engines": { + "node": ">=18" } }, - "node_modules/@ethersproject/abstract-provider": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", - "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "node_modules/@esbuild/android-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz", + "integrity": "sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==", + "cpu": [ + "x64" + ], "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } + "license": "MIT", + "optional": true, + "os": [ + "android" ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0" + "engines": { + "node": ">=18" } }, - "node_modules/@ethersproject/abstract-signer": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", - "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz", + "integrity": "sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==", + "cpu": [ + "arm64" + ], "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } + "license": "MIT", + "optional": true, + "os": [ + "darwin" ], - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0" + "engines": { + "node": ">=18" } }, - "node_modules/@ethersproject/address": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz", + "integrity": "sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==", + "cpu": [ + "x64" + ], "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } + "license": "MIT", + "optional": true, + "os": [ + "darwin" ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/rlp": "^5.7.0" + "engines": { + "node": ">=18" } }, - "node_modules/@ethersproject/base64": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", - "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz", + "integrity": "sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==", + "cpu": [ + "arm64" + ], "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } + "license": "MIT", + "optional": true, + "os": [ + "freebsd" ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0" + "engines": { + "node": ">=18" } }, - "node_modules/@ethersproject/basex": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", - "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz", + "integrity": "sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==", + "cpu": [ + "x64" + ], "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } + "license": "MIT", + "optional": true, + "os": [ + "freebsd" ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/properties": "^5.7.0" + "engines": { + "node": ">=18" } }, - "node_modules/@ethersproject/bignumber": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "node_modules/@esbuild/linux-arm": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz", + "integrity": "sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==", + "cpu": [ + "arm" + ], "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "bn.js": "^5.2.1" + "engines": { + "node": ">=18" } }, - "node_modules/@ethersproject/bignumber/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - }, - "node_modules/@ethersproject/bytes": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz", + "integrity": "sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==", + "cpu": [ + "arm64" + ], "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" ], - "dependencies": { - "@ethersproject/logger": "^5.7.0" + "engines": { + "node": ">=18" } }, - "node_modules/@ethersproject/constants": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", - "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz", + "integrity": "sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==", + "cpu": [ + "ia32" + ], "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } + "license": "MIT", + "optional": true, + "os": [ + "linux" ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0" + "engines": { + "node": ">=18" } }, - "node_modules/@ethersproject/contracts": { + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz", + "integrity": "sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz", + "integrity": "sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz", + "integrity": "sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz", + "integrity": "sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz", + "integrity": "sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz", + "integrity": "sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.11.tgz", + "integrity": "sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz", + "integrity": "sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.11.tgz", + "integrity": "sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz", + "integrity": "sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.11.tgz", + "integrity": "sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz", + "integrity": "sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz", + "integrity": "sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz", + "integrity": "sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz", + "integrity": "sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@ethersproject/abi": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", - "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", "dev": true, "funding": [ { @@ -299,22 +507,21 @@ } ], "dependencies": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", "@ethersproject/address": "^5.7.0", "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", "@ethersproject/logger": "^5.7.0", "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0" + "@ethersproject/strings": "^5.7.0" } }, - "node_modules/@ethersproject/hash": { + "node_modules/@ethersproject/abstract-provider": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", - "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", "dev": true, "funding": [ { @@ -327,21 +534,19 @@ } ], "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" } }, - "node_modules/@ethersproject/hdnode": { + "node_modules/@ethersproject/abstract-signer": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", "dev": true, "funding": [ { @@ -354,24 +559,17 @@ } ], "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/basex": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" + "@ethersproject/properties": "^5.7.0" } }, - "node_modules/@ethersproject/json-wallets": { + "node_modules/@ethersproject/address": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", - "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", "dev": true, "funding": [ { @@ -384,18 +582,230 @@ } ], "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", "@ethersproject/keccak256": "^5.7.0", "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "aes-js": "3.0.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@ethersproject/bignumber/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", "scrypt-js": "3.0.1" } }, @@ -819,67 +1229,12 @@ "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.2.0.tgz", "integrity": "sha512-bUOmkSoPkjnUyMiKo6RYnb0VHBk5D9KKDAgNLzF41aqAM3TeE0yGdFF5dVRcV60pZdJLlyFT/jjXIZCWyyEzAQ==" }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true, - "peer": true - }, "node_modules/@mudgen/diamond-1": { "name": "contracts-starter", "version": "1.0.0", "resolved": "git+ssh://git@github.com/mudgen/diamond-1-hardhat.git#3da037b378195b4108b977cf2014600eeddbf67d", "license": "MIT" }, - "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, - "peer": true, - "dependencies": { - "@noble/hashes": "1.3.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "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, - "peer": true, - "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", - "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -916,427 +1271,184 @@ } }, "node_modules/@nomicfoundation/edr": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.7.0.tgz", - "integrity": "sha512-+Zyu7TE47TGNcPhOfWLPA/zISs32WDMXrhSWdWYyPHDVn/Uux5TVuOeScKb0BR/R8EJ+leR8COUF/EGxvDOVKg==", + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.12.0-next.10.tgz", + "integrity": "sha512-D10VX2FO9faYhy3T+z5mx3M/cnQ1BQ9vayuunm9aQOwmqsB9G2Ozvlb41+ooXEqmNpnpxxXuD8zst6v7HydjLg==", "dev": true, + "license": "MIT", "dependencies": { - "@nomicfoundation/edr-darwin-arm64": "0.7.0", - "@nomicfoundation/edr-darwin-x64": "0.7.0", - "@nomicfoundation/edr-linux-arm64-gnu": "0.7.0", - "@nomicfoundation/edr-linux-arm64-musl": "0.7.0", - "@nomicfoundation/edr-linux-x64-gnu": "0.7.0", - "@nomicfoundation/edr-linux-x64-musl": "0.7.0", - "@nomicfoundation/edr-win32-x64-msvc": "0.7.0" + "@nomicfoundation/edr-darwin-arm64": "0.12.0-next.10", + "@nomicfoundation/edr-darwin-x64": "0.12.0-next.10", + "@nomicfoundation/edr-linux-arm64-gnu": "0.12.0-next.10", + "@nomicfoundation/edr-linux-arm64-musl": "0.12.0-next.10", + "@nomicfoundation/edr-linux-x64-gnu": "0.12.0-next.10", + "@nomicfoundation/edr-linux-x64-musl": "0.12.0-next.10", + "@nomicfoundation/edr-win32-x64-msvc": "0.12.0-next.10" }, "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@nomicfoundation/edr-darwin-arm64": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.7.0.tgz", - "integrity": "sha512-vAH20oh4GaSB/iQFTRcoO8jLc0CLd9XuLY9I7vtcqZWAiM4U1J4Y8cu67PWmtxbvUQOqXR7S6FtAr8/AlWm14g==", + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.12.0-next.10.tgz", + "integrity": "sha512-LYXaU0Pk7zA4iAHMdvZ9Gs5QaScs9n5IpclWBNVevSHnL1/uJiFLDF4FYE/NonvaCST6Rd0E4MS3pJltsrBQmA==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@nomicfoundation/edr-darwin-x64": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.7.0.tgz", - "integrity": "sha512-WHDdIrPvLlgXQr2eKypBM5xOZAwdxhDAEQIvEMQL8tEEm2qYW2bliUlssBPrs8E3bdivFbe1HizImslMAfU3+g==", + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.12.0-next.10.tgz", + "integrity": "sha512-GtcBqSRhtjOZn6MaT9AReQS/75CY0KG/7IPURGMyjY8lxGtx6WdkzLSP7d7Jvc/WMinXZVs0jCuucfjZg/etQw==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@nomicfoundation/edr-linux-arm64-gnu": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.7.0.tgz", - "integrity": "sha512-WXpJB54ukz1no7gxCPXVEw9pgl/9UZ/WO3l1ctyv/T7vOygjqA4SUd6kppTs6MNXAuTiisPtvJ/fmvHiMBLrsw==", + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.12.0-next.10.tgz", + "integrity": "sha512-EtnYfNdKfn7Dd06/zCFwjBaiI0iPiJIy8GvwJx9oiIzcmIzKnY4ZJrsRfriAK2TBzAk8nmm8Z7r4lIzOqpBUkQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@nomicfoundation/edr-linux-arm64-musl": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.7.0.tgz", - "integrity": "sha512-1iZYOcEgc+zJI7JQrlAFziuy9sBz1WgnIx3HIIu0J7lBRZ/AXeHHgATb+4InqxtEx9O3W8A0s7f11SyFqJL4Aw==", + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.12.0-next.10.tgz", + "integrity": "sha512-ZkKdzMy6WpSEt3+pnJteg8dX/ovnUCL95dm4+cyvySRkUCCGbp0kgQ7RlGkC7X/z/BZpaKsCjVgbEJgMFlF8sg==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@nomicfoundation/edr-linux-x64-gnu": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.7.0.tgz", - "integrity": "sha512-wSjC94WcR5MM8sg9w3OsAmT6+bbmChJw6uJKoXR3qscps/jdhjzJWzfgT0XGRq3XMUfimyafW2RWOyfX3ouhrQ==", + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.12.0-next.10.tgz", + "integrity": "sha512-I4eaN/ChGPxuJfycjYbUV7SmltxAGNSBJNVxmLj4+eKN30fXo+6fL2X0HdKo3dqkYq3iM/G1j9FXbxZ3ZaK/SQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@nomicfoundation/edr-linux-x64-musl": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.7.0.tgz", - "integrity": "sha512-Us22+AZ7wkG1mZwxqE4S4ZcuwkEA5VrUiBOJSvKHGOgy6vFvB/Euh5Lkp4GovwjrtiXuvyGO2UmtkzymZKDxZw==", + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.12.0-next.10.tgz", + "integrity": "sha512-ruovF/WCs61If5uVBYMYns40ayW6EhdORAbQ5cUEgxN2iaQhUZ6AQNlRFCgIESOiBqDRrQZQIdJC/6pgbFzuCg==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 18" + "node": ">= 20" } }, "node_modules/@nomicfoundation/edr-win32-x64-msvc": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.7.0.tgz", - "integrity": "sha512-HAry0heTsWkzReVtjHwoIq3BgFCvXpVhJ5qPmTnegZGsr/KxqvMmHyDMifzKao4bycU8yrpTSyOiAJt27RWjzQ==", - "dev": true, - "engines": { - "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==", - "dev": true, - "dependencies": { - "@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" - } - }, - "node_modules/@nomicfoundation/ethereumjs-tx": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.4.tgz", - "integrity": "sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==", - "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-common": "4.0.4", - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "ethereum-cryptography": "0.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "c-kzg": "^2.1.2" - }, - "peerDependenciesMeta": { - "c-kzg": { - "optional": true - } - } - }, - "node_modules/@nomicfoundation/ethereumjs-util": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.4.tgz", - "integrity": "sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==", + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.12.0-next.10.tgz", + "integrity": "sha512-5hlqjWIx5bdY7xNdrV9W+0BMbNgkwF/Am/J4Rof6J40Ht/NkKwhzs4XuGujBKCqKVKfvbqKlaexyX1qIPhS8Ag==", "dev": true, - "dependencies": { - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "ethereum-cryptography": "0.1.3" - }, + "license": "MIT", "engines": { - "node": ">=18" - }, - "peerDependencies": { - "c-kzg": "^2.1.2" - }, - "peerDependenciesMeta": { - "c-kzg": { - "optional": true - } + "node": ">= 20" } }, - "node_modules/@nomicfoundation/hardhat-chai-matchers": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.8.tgz", - "integrity": "sha512-Z5PiCXH4xhNLASROlSUOADfhfpfhYO6D7Hn9xp8PddmHey0jq704cr6kfU8TRrQ4PUZbpfsZadPj+pCfZdjPIg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/chai-as-promised": "^7.1.3", - "chai-as-promised": "^7.1.1", - "deep-eql": "^4.0.1", - "ordinal": "^1.0.3" - }, - "peerDependencies": { - "@nomicfoundation/hardhat-ethers": "^3.0.0", - "chai": "^4.2.0", - "ethers": "^6.1.0", - "hardhat": "^2.9.4" - } - }, - "node_modules/@nomicfoundation/hardhat-ethers": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.8.tgz", - "integrity": "sha512-zhOZ4hdRORls31DTOqg+GmEZM0ujly8GGIuRY7t7szEk2zW/arY1qDug/py8AEktT00v5K+b6RvbVog+va51IA==", + "node_modules/@nomicfoundation/hardhat-errors": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-errors/-/hardhat-errors-3.0.3.tgz", + "integrity": "sha512-qvVIyNE5yXFdwCD7G74fb3j+p5PjYSej/K2mhOuJBhxdGwzARpyoJbcDZrjkNyabytlt95iniZLHHWM9jvVXEA==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "debug": "^4.1.1", - "lodash.isequal": "^4.5.0" - }, - "peerDependencies": { - "ethers": "^6.1.0", - "hardhat": "^2.0.0" + "@nomicfoundation/hardhat-utils": "^3.0.1" } }, - "node_modules/@nomicfoundation/hardhat-ignition": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition/-/hardhat-ignition-0.15.9.tgz", - "integrity": "sha512-lSWqhaDOBt6gsqMadkRLvH6HdoFV1v8/bx7z+12cghaOloVwwn48CPoTH2iXXnkqilPGw8rdH5eVTE6UM+2v6Q==", + "node_modules/@nomicfoundation/hardhat-utils": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-utils/-/hardhat-utils-3.0.4.tgz", + "integrity": "sha512-ZExEZ0ym/oIJoXg1HmrOgIKg0hnkS16bDa5UeRbMCH/cVwcatDYKAmwQwLBhoB2JK8nPjDlYmHxYvjL65QQ1Xw==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "@nomicfoundation/ignition-core": "^0.15.9", - "@nomicfoundation/ignition-ui": "^0.15.9", - "chalk": "^4.0.0", + "@streamparser/json-node": "^0.0.22", "debug": "^4.3.2", - "fs-extra": "^10.0.0", - "json5": "^2.2.3", - "prompts": "^2.4.2" - }, - "peerDependencies": { - "@nomicfoundation/hardhat-verify": "^2.0.1", - "hardhat": "^2.18.0" - } - }, - "node_modules/@nomicfoundation/hardhat-ignition-ethers": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition-ethers/-/hardhat-ignition-ethers-0.15.9.tgz", - "integrity": "sha512-9PwwgLv3z2ec3B26mK0IjiFezHFFBcBcs1qKaRu8SanARE4b7RvrfiLIy8ZXE7HaxgPt32kSsQzehhzAwAIj1Q==", - "dev": true, - "peer": true, - "peerDependencies": { - "@nomicfoundation/hardhat-ethers": "^3.0.4", - "@nomicfoundation/hardhat-ignition": "^0.15.9", - "@nomicfoundation/ignition-core": "^0.15.9", - "ethers": "^6.7.0", - "hardhat": "^2.18.0" + "env-paths": "^2.2.0", + "ethereum-cryptography": "^2.2.1", + "fast-equals": "^5.0.1", + "json-stream-stringify": "^3.1.6", + "rfdc": "^1.3.1", + "undici": "^6.16.1" } }, - "node_modules/@nomicfoundation/hardhat-ignition/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@nomicfoundation/hardhat-utils/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "@noble/hashes": "1.4.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@nomicfoundation/hardhat-ignition/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@nomicfoundation/hardhat-utils/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==", "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 16" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@nomicfoundation/hardhat-ignition/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/@nomicfoundation/hardhat-utils/node_modules/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/@nomicfoundation/hardhat-ignition/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "node_modules/@nomicfoundation/hardhat-ignition/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" } }, - "node_modules/@nomicfoundation/hardhat-ignition/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@nomicfoundation/hardhat-utils/node_modules/undici": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.22.0.tgz", + "integrity": "sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw==", "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" - }, + "license": "MIT", "engines": { - "node": ">=8" - } - }, - "node_modules/@nomicfoundation/hardhat-network-helpers": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.11.tgz", - "integrity": "sha512-uGPL7QSKvxrHRU69dx8jzoBvuztlLCtyFsbgfXIwIjnO3dqZRz2GNMHJoO3C3dIiUNM6jdNF4AUnoQKDscdYrA==", - "dev": true, - "peer": true, - "dependencies": { - "ethereumjs-util": "^7.1.4" - }, - "peerDependencies": { - "hardhat": "^2.9.5" + "node": ">=18.17" } }, - "node_modules/@nomicfoundation/hardhat-toolbox": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-5.0.0.tgz", - "integrity": "sha512-FnUtUC5PsakCbwiVNsqlXVIWG5JIb5CEZoSXbJUsEBun22Bivx2jhF1/q9iQbzuaGpJKFQyOhemPB2+XlEE6pQ==", - "dev": true, - "peerDependencies": { - "@nomicfoundation/hardhat-chai-matchers": "^2.0.0", - "@nomicfoundation/hardhat-ethers": "^3.0.0", - "@nomicfoundation/hardhat-ignition-ethers": "^0.15.0", - "@nomicfoundation/hardhat-network-helpers": "^1.0.0", - "@nomicfoundation/hardhat-verify": "^2.0.0", - "@typechain/ethers-v6": "^0.5.0", - "@typechain/hardhat": "^9.0.0", - "@types/chai": "^4.2.0", - "@types/mocha": ">=9.1.0", - "@types/node": ">=18.0.0", - "chai": "^4.2.0", - "ethers": "^6.4.0", - "hardhat": "^2.11.0", - "hardhat-gas-reporter": "^1.0.8", - "solidity-coverage": "^0.8.1", - "ts-node": ">=8.0.0", - "typechain": "^8.3.0", - "typescript": ">=4.5.0" - } - }, - "node_modules/@nomicfoundation/hardhat-verify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.12.tgz", - "integrity": "sha512-Lg3Nu7DCXASQRVI/YysjuAX2z8jwOCbS0w5tz2HalWGSTZThqA0v9N0v0psHbKNqzPJa8bNOeapIVSziyJTnAg==", + "node_modules/@nomicfoundation/hardhat-zod-utils": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-zod-utils/-/hardhat-zod-utils-3.0.1.tgz", + "integrity": "sha512-I6/pyYiS9p2lLkzQuedr1ScMocH+ew8l233xTi+LP92gjEiviJDxselpkzgU01MUM0t6BPpfP8yMO958LDEJVg==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "@ethersproject/abi": "^5.1.2", - "@ethersproject/address": "^5.0.2", - "cbor": "^8.1.0", - "debug": "^4.1.1", - "lodash.clonedeep": "^4.5.0", - "picocolors": "^1.1.0", - "semver": "^6.3.0", - "table": "^6.8.0", - "undici": "^5.14.0" + "@nomicfoundation/hardhat-errors": "^3.0.0", + "@nomicfoundation/hardhat-utils": "^3.0.2" }, "peerDependencies": { - "hardhat": "^2.0.4" - } - }, - "node_modules/@nomicfoundation/hardhat-verify/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@nomicfoundation/ignition-core": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-core/-/ignition-core-0.15.9.tgz", - "integrity": "sha512-X8W+7UP/UQPorpHUnGvA1OdsEr/edGi8tDpNwEqzaLm83FMZVbRWdOsr3vNICHN2XMzNY/xIm18Cx7xGKL2PQw==", - "dev": true, - "peer": true, - "dependencies": { - "@ethersproject/address": "5.6.1", - "@nomicfoundation/solidity-analyzer": "^0.1.1", - "cbor": "^9.0.0", - "debug": "^4.3.2", - "ethers": "^6.7.0", - "fs-extra": "^10.0.0", - "immer": "10.0.2", - "lodash": "4.17.21", - "ndjson": "2.0.0" - } - }, - "node_modules/@nomicfoundation/ignition-core/node_modules/@ethersproject/address": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.1.tgz", - "integrity": "sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, - "dependencies": { - "@ethersproject/bignumber": "^5.6.2", - "@ethersproject/bytes": "^5.6.1", - "@ethersproject/keccak256": "^5.6.1", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/rlp": "^5.6.1" - } - }, - "node_modules/@nomicfoundation/ignition-core/node_modules/cbor": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.2.tgz", - "integrity": "sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==", - "dev": true, - "peer": true, - "dependencies": { - "nofilter": "^3.1.0" - }, - "engines": { - "node": ">=16" + "zod": "^3.23.8" } }, - "node_modules/@nomicfoundation/ignition-ui": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-ui/-/ignition-ui-0.15.9.tgz", - "integrity": "sha512-8lzbT7gpJ5PoowPQDQilkwdyqBviUKDMoHp/5rhgnwG1bDslnCS+Lxuo6s9R2akWu9LtEL14dNyqQb6WsURTag==", - "dev": true, - "peer": true - }, "node_modules/@nomicfoundation/slang": { "version": "0.17.0", "resolved": "https://registry.npmjs.org/@nomicfoundation/slang/-/slang-0.17.0.tgz", @@ -1761,302 +1873,108 @@ "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", - "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", + "node_modules/@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry/hub": "5.30.0", - "@sentry/minimal": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@sentry/core/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@sentry/hub": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", - "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", + "node_modules/@scure/bip32/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" + "@noble/hashes": "1.4.0" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@sentry/hub/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@sentry/minimal": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", - "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", + "node_modules/@scure/bip32/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==", "dev": true, - "dependencies": { - "@sentry/hub": "5.30.0", - "@sentry/types": "5.30.0", - "tslib": "^1.9.3" - }, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@sentry/minimal/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@sentry/node": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", - "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", + "node_modules/@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", "dev": true, + "license": "MIT", "dependencies": { - "@sentry/core": "5.30.0", - "@sentry/hub": "5.30.0", - "@sentry/tracing": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "cookie": "^0.4.1", - "https-proxy-agent": "^5.0.0", - "lru_map": "^0.3.3", - "tslib": "^1.9.3" + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@sentry/node/node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "node_modules/@scure/bip39/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==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@sentry/node/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@sentry/tracing": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", - "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", + "node_modules/@sentry/core": { + "version": "9.46.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-9.46.0.tgz", + "integrity": "sha512-it7JMFqxVproAgEtbLgCVBYtQ9fIb+Bu0JD+cEplTN/Ukpe6GaolyYib5geZqslVxhp2sQgT+58aGvfd/k0N8Q==", "dev": true, - "dependencies": { - "@sentry/hub": "5.30.0", - "@sentry/minimal": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - }, + "license": "MIT", "engines": { - "node": ">=6" + "node": ">=18" } }, - "node_modules/@sentry/tracing/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true + "node_modules/@streamparser/json": { + "version": "0.0.22", + "resolved": "https://registry.npmjs.org/@streamparser/json/-/json-0.0.22.tgz", + "integrity": "sha512-b6gTSBjJ8G8SuO3Gbbj+zXbVx8NSs1EbpbMKpzGLWMdkR+98McH9bEjSz3+0mPJf68c5nxa3CrJHp5EQNXM6zQ==", + "dev": true, + "license": "MIT" }, - "node_modules/@sentry/types": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", - "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", + "node_modules/@streamparser/json-node": { + "version": "0.0.22", + "resolved": "https://registry.npmjs.org/@streamparser/json-node/-/json-node-0.0.22.tgz", + "integrity": "sha512-sJT2ptNRwqB1lIsQrQlCoWk5rF4tif9wDh+7yluAGijJamAhrHGYpFB/Zg3hJeceoZypi74ftXk8DHzwYpbZSg==", "dev": true, - "engines": { - "node": ">=6" + "license": "MIT", + "dependencies": { + "@streamparser/json": "^0.0.22" } }, - "node_modules/@sentry/utils": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", - "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", + "node_modules/@types/debug": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", + "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", "dev": true, "dependencies": { - "@sentry/types": "5.30.0", - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@sentry/utils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/@solidity-parser/parser": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.1.tgz", - "integrity": "sha512-eLjj2L6AuQjBB6s/ibwCAc0DwrR5Ge+ys+wgWo+bviU7fV2nTMQhU63CGaDKXg9iTmMxwhkyoggdIR7ZGRfMgw==", - "dev": true, - "peer": true, - "dependencies": { - "antlr4ts": "^0.5.0-alpha.4" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true, - "peer": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "peer": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "peer": true - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true, - "peer": true - }, - "node_modules/@typechain/ethers-v6": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz", - "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==", - "dev": true, - "peer": true, - "dependencies": { - "lodash": "^4.17.15", - "ts-essentials": "^7.0.1" - }, - "peerDependencies": { - "ethers": "6.x", - "typechain": "^8.3.2", - "typescript": ">=4.7.0" - } - }, - "node_modules/@typechain/hardhat": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-9.1.0.tgz", - "integrity": "sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==", - "dev": true, - "peer": true, - "dependencies": { - "fs-extra": "^9.1.0" - }, - "peerDependencies": { - "@typechain/ethers-v6": "^0.5.1", - "ethers": "^6.1.0", - "hardhat": "^2.9.9", - "typechain": "^8.3.2" - } - }, - "node_modules/@typechain/hardhat/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "peer": true, - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typechain/hardhat/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/chai": { - "version": "4.3.20", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", - "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", - "dev": true, - "peer": true - }, - "node_modules/@types/chai-as-promised": { - "version": "7.1.8", - "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz", - "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/chai": "*" - } - }, - "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/debug": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", - "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", - "dev": true, - "dependencies": { - "@types/ms": "*" - } - }, - "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/node": "*" + "@types/ms": "*" } }, "node_modules/@types/fs-extra": { @@ -2090,25 +2008,12 @@ "@types/node": "*" } }, - "node_modules/@types/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", - "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/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", - "dev": true, - "peer": true - }, "node_modules/@types/ms": { "version": "0.7.31", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", @@ -2133,13 +2038,6 @@ "@types/node": "*" } }, - "node_modules/@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "dev": true, - "peer": true - }, "node_modules/@types/qs": { "version": "6.9.7", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", @@ -2199,16 +2097,6 @@ "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", "dev": true }, - "node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/adm-zip": { "version": "0.4.16", "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", @@ -2236,36 +2124,6 @@ "node": ">= 6.0.0" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/amdefine": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", @@ -2276,84 +2134,6 @@ "node": ">=0.4.2" } }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-align/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-align/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-align/node_modules/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/ansi-align/node_modules/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/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/ansi-styles": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", @@ -2366,13 +2146,6 @@ "node": ">=4" } }, - "node_modules/antlr4ts": { - "version": "0.5.0-alpha.4", - "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", - "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==", - "dev": true, - "peer": true - }, "node_modules/anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", @@ -2386,13 +2159,6 @@ "node": ">= 8" } }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "peer": true - }, "node_modules/argparse": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", @@ -2402,16 +2168,6 @@ "sprintf-js": "~1.0.2" } }, - "node_modules/array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, "node_modules/array-buffer-byte-length": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", @@ -2434,16 +2190,6 @@ "node": ">=8" } }, - "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, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/array.prototype.findlast": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.3.tgz", @@ -2463,26 +2209,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array.prototype.reduce": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", - "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", - "dev": true, - "peer": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", @@ -2504,69 +2230,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true, - "peer": true - }, - "node_modules/asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "peer": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "peer": true, - "engines": { - "node": "*" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 4.0.0" - } - }, "node_modules/available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", @@ -2579,23 +2248,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true, - "peer": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true, - "peer": true - }, "node_modules/axios": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz", @@ -2673,16 +2325,6 @@ } ] }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "peer": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, "node_modules/bech32": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", @@ -2780,154 +2422,6 @@ "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", "dev": true }, - "node_modules/boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", - "dev": true, - "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/boxen/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/boxen/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/boxen/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/boxen/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/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/boxen/node_modules/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/boxen/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/boxen/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -3005,12 +2499,6 @@ "node": "*" } }, - "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, "node_modules/buffer-xor": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", @@ -3029,18 +2517,6 @@ "node-gyp-build": "^4.2.0" } }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dev": true, - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, "node_modules/bytesish": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/bytesish/-/bytesish-0.4.4.tgz", @@ -3092,51 +2568,6 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, - "node_modules/cbor": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", - "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", - "dev": true, - "peer": true, - "dependencies": { - "nofilter": "^3.1.0" - }, - "engines": { - "node": ">=12.19" - } - }, - "node_modules/chai": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", - "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", - "dev": true, - "peer": true, - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chai-as-promised": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz", - "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==", - "dev": true, - "peer": true, - "dependencies": { - "check-error": "^1.0.2" - }, - "peerDependencies": { - "chai": ">= 2.1.2 < 6" - } - }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -3172,29 +2603,6 @@ "node": ">=4" } }, - "node_modules/charenc": { - "version": "0.0.2", - "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": "*" - } - }, - "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "dev": true, - "peer": true, - "dependencies": { - "get-func-name": "^2.0.2" - }, - "engines": { - "node": "*" - } - }, "node_modules/cheerio": { "version": "1.0.0-rc.12", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", @@ -3266,12 +2674,6 @@ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, "node_modules/cipher-base": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", @@ -3282,27 +2684,6 @@ "safe-buffer": "^5.0.1" } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cli-color": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz", @@ -3335,70 +2716,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-table3": { - "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": { - "object-assign": "^4.1.0", - "string-width": "^2.1.1" - }, - "engines": { - "node": ">=6" - }, - "optionalDependencies": { - "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/cli-truncate": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", @@ -3505,16 +2822,6 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -3536,16 +2843,6 @@ "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, - "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", @@ -3558,64 +2855,6 @@ "node": ">= 0.8" } }, - "node_modules/command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true - }, - "node_modules/command-line-args": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", - "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", - "dev": true, - "peer": true, - "dependencies": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/command-line-usage": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", - "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", - "dev": true, - "peer": true, - "dependencies": { - "array-back": "^4.0.2", - "chalk": "^2.4.2", - "table-layout": "^1.0.2", - "typical": "^5.2.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/command-line-usage/node_modules/array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/command-line-usage/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, "node_modules/commander": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", @@ -3637,55 +2876,6 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "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/convert-svg-core": { "version": "0.6.4", "resolved": "https://registry.npmjs.org/convert-svg-core/-/convert-svg-core-0.6.4.tgz", @@ -3931,13 +3121,6 @@ "node": "^12.20.0 || >=14" } }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true, - "peer": true - }, "node_modules/create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", @@ -3965,13 +3148,6 @@ "sha.js": "^2.4.8" } }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "peer": true - }, "node_modules/createx": { "version": "1.0.0", "resolved": "git+ssh://git@github.com/pcaversaccio/createx.git#cbac803268835138f86a69bfe01fcf05a50e0447", @@ -4015,16 +3191,6 @@ "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/css-select": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", @@ -4067,19 +3233,6 @@ "node": ">=0.12" } }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "peer": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, "node_modules/death": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", @@ -4104,39 +3257,6 @@ } } }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/deep-eql": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", - "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", - "dev": true, - "peer": true, - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4.0.0" - } - }, "node_modules/deep-is": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", @@ -4319,17 +3439,6 @@ "node": ">= 0.4" } }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "peer": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, "node_modules/elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", @@ -4429,6 +3538,7 @@ "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -4498,13 +3608,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true, - "peer": true - }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -4636,6 +3739,48 @@ "es6-symbol": "^3.1.1" } }, + "node_modules/esbuild": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz", + "integrity": "sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.11", + "@esbuild/android-arm": "0.25.11", + "@esbuild/android-arm64": "0.25.11", + "@esbuild/android-x64": "0.25.11", + "@esbuild/darwin-arm64": "0.25.11", + "@esbuild/darwin-x64": "0.25.11", + "@esbuild/freebsd-arm64": "0.25.11", + "@esbuild/freebsd-x64": "0.25.11", + "@esbuild/linux-arm": "0.25.11", + "@esbuild/linux-arm64": "0.25.11", + "@esbuild/linux-ia32": "0.25.11", + "@esbuild/linux-loong64": "0.25.11", + "@esbuild/linux-mips64el": "0.25.11", + "@esbuild/linux-ppc64": "0.25.11", + "@esbuild/linux-riscv64": "0.25.11", + "@esbuild/linux-s390x": "0.25.11", + "@esbuild/linux-x64": "0.25.11", + "@esbuild/netbsd-arm64": "0.25.11", + "@esbuild/netbsd-x64": "0.25.11", + "@esbuild/openbsd-arm64": "0.25.11", + "@esbuild/openbsd-x64": "0.25.11", + "@esbuild/openharmony-arm64": "0.25.11", + "@esbuild/sunos-x64": "0.25.11", + "@esbuild/win32-arm64": "0.25.11", + "@esbuild/win32-ia32": "0.25.11", + "@esbuild/win32-x64": "0.25.11" + } + }, "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -4736,1311 +3881,1142 @@ "node": ">=0.10.0" } }, - "node_modules/eth-gas-reporter": { - "version": "0.2.25", - "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.25.tgz", - "integrity": "sha512-1fRgyE4xUB8SoqLgN3eDfpDfwEfRxh2Sz1b7wzFbyQA+9TekMmvSjjoRu9SKcSVyK+vLkLIsVbJDsTWjw195OQ==", + "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==", "dev": true, - "peer": true, "dependencies": { - "@ethersproject/abi": "^5.0.0-beta.146", - "@solidity-parser/parser": "^0.14.0", - "cli-table3": "^0.5.0", - "colors": "1.4.0", - "ethereum-cryptography": "^1.0.3", - "ethers": "^4.0.40", - "fs-readdir-recursive": "^1.1.0", - "lodash": "^4.17.14", - "markdown-table": "^1.1.3", - "mocha": "^7.1.1", - "req-cwd": "^2.0.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "sha1": "^1.1.1", - "sync-request": "^6.0.0" - }, - "peerDependencies": { - "@codechecks/client": "^0.1.0" - }, - "peerDependenciesMeta": { - "@codechecks/client": { - "optional": true - } + "js-sha3": "^0.8.0" } }, - "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/ethereum-bloom-filters/node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": 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==", + "node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", "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" + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" } }, - "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==", + "node_modules/ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", "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/ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true, - "peer": true, + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.2.4" + }, "engines": { - "node": ">=6" + "node": ">=10.0.0" } }, - "node_modules/eth-gas-reporter/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "node_modules/ethereumjs-util/node_modules/@types/bn.js": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", + "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", "dev": true, - "peer": true, - "engines": { - "node": ">=6" + "dependencies": { + "@types/node": "*" } }, - "node_modules/eth-gas-reporter/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, - "peer": true, - "engines": { - "node": ">=6" - } + "node_modules/ethereumjs-util/node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true }, - "node_modules/eth-gas-reporter/node_modules/chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "node_modules/ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=", "dev": true, - "peer": true, "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" }, "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.1.1" - } - }, - "node_modules/eth-gas-reporter/node_modules/cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "peer": true, - "dependencies": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" + "node": ">=6.5.0", + "npm": ">=3" } }, - "node_modules/eth-gas-reporter/node_modules/cliui/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "peer": true, + "node_modules/ethjs-unit/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", + "dev": true + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "dev": true, + "license": "MIT", "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" + "d": "1", + "es5-ext": "~0.10.14" } }, - "node_modules/eth-gas-reporter/node_modules/debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "dev": true, - "peer": true, "dependencies": { - "ms": "^2.1.1" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, - "node_modules/eth-gas-reporter/node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, - "peer": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, "engines": { - "node": ">=0.3.1" + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/eth-gas-reporter/node_modules/emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "node_modules/execa/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, - "peer": true + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/eth-gas-reporter/node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/execa/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "dev": true, - "peer": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/execa/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, - "peer": true, - "dependencies": { - "@noble/hashes": "1.2.0", - "@noble/secp256k1": "1.7.1", - "@scure/bip32": "1.1.5", - "@scure/bip39": "1.1.1" + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/eth-gas-reporter/node_modules/ethers": { - "version": "4.0.49", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz", - "integrity": "sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg==", + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", "dev": true, - "peer": true, + "license": "ISC", "dependencies": { - "aes-js": "3.0.0", - "bn.js": "^4.11.9", - "elliptic": "6.5.4", - "hash.js": "1.1.3", - "js-sha3": "0.5.7", - "scrypt-js": "2.0.4", - "setimmediate": "1.0.4", - "uuid": "2.0.1", - "xmlhttprequest": "1.8.0" + "type": "^2.7.2" } }, - "node_modules/eth-gas-reporter/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, - "peer": true, "dependencies": { - "locate-path": "^3.0.0" + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" }, "engines": { - "node": ">=6" + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" } }, - "node_modules/eth-gas-reporter/node_modules/flat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", - "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, - "peer": true, "dependencies": { - "is-buffer": "~2.0.3" + "pump": "^3.0.0" }, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/eth-gas-reporter/node_modules/fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "deprecated": "\"Please update to latest v2.3 or v2.2\"", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "peer": true, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eth-gas-reporter/node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/fast-equals": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.3.2.tgz", + "integrity": "sha512-6rxyATwPCkaFIL3JLqw8qXqMpIZ942pTX/tbQFkRsDGblS8tNGtlUauA/+mt6RUfqn/4MoEr+WDkYoIQbibWuQ==", "dev": true, - "peer": true, + "license": "MIT", "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=6.0.0" } }, - "node_modules/eth-gas-reporter/node_modules/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, - "peer": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": "*" + "node": ">=8.6.0" } }, - "node_modules/eth-gas-reporter/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, - "peer": true, - "engines": { - "node": ">=4" - } + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true }, - "node_modules/eth-gas-reporter/node_modules/hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, - "peer": true, "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/eth-gas-reporter/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" + "reusify": "^1.0.4" } }, - "node_modules/eth-gas-reporter/node_modules/js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, - "peer": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "pend": "~1.2.0" } }, - "node_modules/eth-gas-reporter/node_modules/locate-path": { + "node_modules/file-url": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "resolved": "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz", + "integrity": "sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==", "dev": true, - "peer": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/eth-gas-reporter/node_modules/log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, - "peer": true, "dependencies": { - "chalk": "^2.4.2" + "to-regex-range": "^5.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/eth-gas-reporter/node_modules/mocha": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", - "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, - "peer": true, "dependencies": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.5", - "ms": "2.1.1", - "node-environment-flags": "1.0.6", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 8.10.0" + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eth-gas-reporter/node_modules/ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true, - "peer": true - }, - "node_modules/eth-gas-reporter/node_modules/object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "node_modules/find-up/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "peer": true, "dependencies": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "p-locate": "^5.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eth-gas-reporter/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "node_modules/find-up/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, - "peer": true, "dependencies": { - "p-limit": "^2.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/eth-gas-reporter/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eth-gas-reporter/node_modules/readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "node_modules/find-up/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, - "peer": true, "dependencies": { - "picomatch": "^2.0.4" + "p-limit": "^3.0.2" }, "engines": { - "node": ">= 8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eth-gas-reporter/node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "peer": true + "bin": { + "flat": "cli.js" + } }, - "node_modules/eth-gas-reporter/node_modules/scrypt-js": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", - "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", + "node_modules/fmix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fmix/-/fmix-0.1.0.tgz", + "integrity": "sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==", "dev": true, - "peer": true + "dependencies": { + "imul": "^1.0.0" + } }, - "node_modules/eth-gas-reporter/node_modules/setimmediate": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog==", + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "dev": true, - "peer": true + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } }, - "node_modules/eth-gas-reporter/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, - "peer": true, "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" + "is-callable": "^1.1.3" } }, - "node_modules/eth-gas-reporter/node_modules/supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "peer": true, "dependencies": { - "has-flag": "^3.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/eth-gas-reporter/node_modules/which-module": { + "node_modules/fs-extra/node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, - "peer": true + "engines": { + "node": ">= 10.0.0" + } }, - "node_modules/eth-gas-reporter/node_modules/wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, - "peer": true, - "dependencies": { - "string-width": "^1.0.2 || 2" + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/eth-gas-reporter/node_modules/wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "engines": { - "node": ">=6" + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eth-gas-reporter/node_modules/wrap-ansi/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, - "peer": true, "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eth-gas-reporter/node_modules/y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true, - "peer": true - }, - "node_modules/eth-gas-reporter/node_modules/yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, - "peer": true, - "dependencies": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eth-gas-reporter/node_modules/yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "node_modules/get-east-asian-width": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", + "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", "dev": true, - "peer": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eth-gas-reporter/node_modules/yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eth-gas-reporter/node_modules/yargs/node_modules/string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, - "peer": true, + "license": "MIT", "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=6" + "node": ">= 0.4" } }, - "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==", + "node_modules/get-stdin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", + "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", "dev": true, - "dependencies": { - "js-sha3": "^0.8.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ethereum-bloom-filters/node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true - }, - "node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dev": true, "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ethereumjs-abi": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", - "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "node_modules/get-tsconfig": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz", + "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==", "dev": true, + "license": "MIT", "dependencies": { - "bn.js": "^4.11.8", - "ethereumjs-util": "^6.0.0" + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", - "dev": true, - "dependencies": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" - } - }, - "node_modules/ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "node_modules/ghost-testrpc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz", + "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", "dev": true, "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" + "chalk": "^2.4.2", + "node-emoji": "^1.10.0" }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/ethereumjs-util/node_modules/@types/bn.js": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", - "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", - "dev": true, - "dependencies": { - "@types/node": "*" + "bin": { + "testrpc-sc": "index.js" } }, - "node_modules/ethereumjs-util/node_modules/bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "node_modules/gitignore-globs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/gitignore-globs/-/gitignore-globs-0.1.1.tgz", + "integrity": "sha512-GAeT2xnAfU9513pjJ3etkKSxa7rBbLOvZRPJvQ2sfZBNx2zHR6HuX9ZHHU8id8CwgGF+bmss7Jct4VDNLsKZwg==", "dev": true }, - "node_modules/ethers": { - "version": "6.13.5", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.5.tgz", - "integrity": "sha512-+knKNieu5EKRThQJWwqaJ10a6HE9sSehGeqWN65//wE7j47ZpFhKAnHB/JJFibwwg61I/koxaPsXbXpD/skNOQ==", + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/ethers-io/" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "peer": true, "dependencies": { - "@adraffy/ens-normalize": "1.10.1", - "@noble/curves": "1.2.0", - "@noble/hashes": "1.3.2", - "@types/node": "22.7.5", - "aes-js": "4.0.0-beta.5", - "tslib": "2.7.0", - "ws": "8.17.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/ethers/node_modules/@types/node": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", - "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", - "dev": true, - "peer": true, - "dependencies": { - "undici-types": "~6.19.2" - } - }, - "node_modules/ethers/node_modules/aes-js": { - "version": "4.0.0-beta.5", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", - "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", - "dev": true, - "peer": true - }, - "node_modules/ethers/node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "dev": true, - "peer": true - }, - "node_modules/ethers/node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" + "node": "*" }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/ethjs-unit": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", - "integrity": "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=", + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { - "bn.js": "4.11.6", - "number-to-bn": "1.7.0" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=6.5.0", - "npm": ">=3" + "node": ">= 6" } }, - "node_modules/ethjs-unit/node_modules/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", - "dev": true - }, - "node_modules/ethjs-util": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", - "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, "dependencies": { - "is-hex-prefixed": "1.0.0", - "strip-hex-prefix": "1.0.0" + "global-prefix": "^3.0.0" }, "engines": { - "node": ">=6.5.0", - "npm": ">=3" + "node": ">=6" } }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, - "license": "MIT", "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" + }, + "engines": { + "node": ">=6" } }, - "node_modules/evp_bytestokey": { + "node_modules/globalthis": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" + "define-properties": "^1.1.3" }, "engines": { - "node": ">=16.17" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/execa/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "node_modules/globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", "dev": true, - "engines": { - "node": ">=16" + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/execa/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/execa/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==", + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=14" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "dev": true, - "license": "ISC", - "dependencies": { - "type": "^2.7.2" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true, - "peer": true + "node_modules/graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", "dev": true, "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" }, "bin": { - "extract-zip": "cli.js" + "handlebars": "bin/handlebars" }, "engines": { - "node": ">= 10.17.0" + "node": ">=0.4.7" }, "optionalDependencies": { - "@types/yauzl": "^2.9.1" + "uglify-js": "^3.1.4" } }, - "node_modules/extract-zip/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hardhat": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-3.0.10.tgz", + "integrity": "sha512-y9vZfK7NqdJQaIyBL7tZHh57rHzdm6vymJK2XatFY49fWi55QC8dn7C6R3JkpYH6eJ/lOolC06UBy/mhzNyO+g==", "dev": true, + "license": "MIT", "dependencies": { - "pump": "^3.0.0" + "@nomicfoundation/edr": "0.12.0-next.10", + "@nomicfoundation/hardhat-errors": "^3.0.3", + "@nomicfoundation/hardhat-utils": "^3.0.4", + "@nomicfoundation/hardhat-zod-utils": "^3.0.1", + "@nomicfoundation/solidity-analyzer": "^0.1.1", + "@sentry/core": "^9.4.0", + "adm-zip": "^0.4.16", + "chalk": "^5.3.0", + "chokidar": "^4.0.3", + "debug": "^4.3.2", + "enquirer": "^2.3.0", + "ethereum-cryptography": "^2.2.1", + "micro-eth-signer": "^0.14.0", + "p-map": "^7.0.2", + "resolve.exports": "^2.0.3", + "semver": "^7.6.3", + "tsx": "^4.19.3", + "ws": "^8.18.0", + "zod": "^3.23.8" }, + "bin": { + "hardhat": "dist/src/cli.js" + } + }, + "node_modules/hardhat-dependency-compiler": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/hardhat-dependency-compiler/-/hardhat-dependency-compiler-1.2.1.tgz", + "integrity": "sha512-xG5iwbspTtxOEiP5UsPngEYQ1Hg+fjTjliapIjdTQmwGkCPofrsDhQDV2O/dopcYzcR68nTx2X8xTewYHgA2rQ==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=14.14.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "hardhat": "^2.0.0" } }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "node_modules/hardhat-deploy": { + "version": "0.11.43", + "resolved": "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.11.43.tgz", + "integrity": "sha512-D760CjDtinwjOCpKOvdyRtIJYLQIYXmhfgkFe+AkxlYM9bPZ/T4tZ/xIB2tR89ZT+z0hF1YuZFBXIL3/G/9T5g==", "dev": true, - "engines": [ - "node >=0.6.0" - ], - "peer": true + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/contracts": "^5.7.0", + "@ethersproject/providers": "^5.7.2", + "@ethersproject/solidity": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wallet": "^5.7.0", + "@types/qs": "^6.9.7", + "axios": "^0.21.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.2", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "ethers": "^5.7.0", + "form-data": "^4.0.0", + "fs-extra": "^10.0.0", + "match-all": "^1.2.6", + "murmur-128": "^0.2.1", + "qs": "^6.9.4", + "zksync-web3": "^0.14.3" + } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "node_modules/hardhat-deploy/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "peer": true + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } }, - "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "node_modules/hardhat-deploy/node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "follow-redirects": "^1.14.0" + } + }, + "node_modules/hardhat-deploy/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8.6.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "node_modules/hardhat-deploy/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "peer": true + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "node_modules/hardhat-deploy/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "node_modules/hardhat-deploy/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", "dev": true, "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/fastify" + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" }, { - "type": "opencollective", - "url": "https://opencollective.com/fastify" + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" } ], - "peer": true - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, "dependencies": { - "reusify": "^1.0.4" + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" } }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "node_modules/hardhat-deploy/node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dev": true, "dependencies": { - "pend": "~1.2.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/file-url": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz", - "integrity": "sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==", + "node_modules/hardhat-deploy/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/hardhat-deploy/node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dev": true, "dependencies": { - "to-regex-range": "^5.0.1" + "side-channel": "^1.0.4" }, "engines": { - "node": ">=8" + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "node_modules/hardhat-deploy/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "peer": true, "dependencies": { - "array-back": "^3.0.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=4.0.0" + "node": ">=8" } }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/hardhat-deploy/node_modules/zksync-web3": { + "version": "0.14.4", + "resolved": "https://registry.npmjs.org/zksync-web3/-/zksync-web3-0.14.4.tgz", + "integrity": "sha512-kYehMD/S6Uhe1g434UnaMN+sBr9nQm23Ywn0EUP5BfQCsbjcr3ORuS68PosZw8xUTu3pac7G6YMSnNHk+fwzvg==", + "deprecated": "This package has been deprecated in favor of zksync-ethers@5.0.0", "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "ethers": "^5.7.0" } }, - "node_modules/find-up/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/hardhat/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", "dev": true, + "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" + "@noble/hashes": "1.4.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/find-up/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/hardhat/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==", "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 16" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/find-up/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/hardhat/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/fmix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fmix/-/fmix-0.1.0.tgz", - "integrity": "sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==", + "node_modules/hardhat/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "dependencies": { - "imul": "^1.0.0" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", + "readdirp": "^4.0.1" + }, "engines": { - "node": ">=4.0" + "node": ">= 14.16.0" }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "node_modules/hardhat/node_modules/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", "dev": true, + "license": "MIT", "dependencies": { - "is-callable": "^1.1.3" + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" } }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "node_modules/hardhat/node_modules/readdirp": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.1.tgz", + "integrity": "sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==", "dev": true, - "peer": true, "engines": { - "node": "*" + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "node_modules/hardhat/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, - "peer": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" + "license": "ISC", + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 0.12" + "node": ">=10" } }, - "node_modules/fp-ts": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", - "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", - "dev": true - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "node_modules/hardhat/node_modules/ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, + "license": "MIT", "engines": { - "node": ">=12" + "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/fs-extra/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, "engines": { - "node": ">= 10.0.0" + "node": ">= 0.4.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==", + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, - "peer": true + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/fs.realpath": { + "node_modules/has-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=0.10.0" } }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", "dev": true, - "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, "engines": { "node": ">= 0.4" }, @@ -6048,54 +5024,27 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-east-asian-width": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", - "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">=18" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true, - "peer": true, - "engines": { - "node": "*" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -6104,3518 +5053,3558 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "dev": true, - "peer": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, "engines": { "node": ">=4" } }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dev": true, "license": "MIT", "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" + "function-bind": "^1.1.2" }, "engines": { "node": ">= 0.4" } }, - "node_modules/get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "he": "bin/he" } }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "node_modules/heap": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", + "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", + "dev": true + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", "dev": true, - "peer": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], "dependencies": { - "assert-plus": "^1.0.0" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" } }, - "node_modules/ghost-testrpc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz", - "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "dependencies": { - "chalk": "^2.4.2", - "node-emoji": "^1.10.0" + "agent-base": "6", + "debug": "4" }, - "bin": { - "testrpc-sc": "index.js" + "engines": { + "node": ">= 6" } }, - "node_modules/gitignore-globs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/gitignore-globs/-/gitignore-globs-0.1.1.tgz", - "integrity": "sha512-GAeT2xnAfU9513pjJ3etkKSxa7rBbLOvZRPJvQ2sfZBNx2zHR6HuX9ZHHU8id8CwgGF+bmss7Jct4VDNLsKZwg==", - "dev": true + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "node_modules/husky": { + "version": "9.1.6", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.6.tgz", + "integrity": "sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==", "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "bin": { + "husky": "bin.js" }, "engines": { - "node": "*" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/typicode" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, "engines": { - "node": ">= 6" + "node": ">= 4" } }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", + "node_modules/imul": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/imul/-/imul-1.0.1.tgz", + "integrity": "sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==", "dev": true, - "dependencies": { - "global-prefix": "^3.0.0" - }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", "dev": true, "dependencies": { - "define-properties": "^1.1.3" + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true, - "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" - }, "engines": { - "node": ">=8" + "node": ">= 0.10" } }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4.x" + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" + "binary-extensions": "^2.0.0" }, - "bin": { - "handlebars": "bin/handlebars" + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=0.4.7" + "node": ">= 0.4" }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "node_modules/is-core-module": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", + "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", + "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", "dev": true, - "peer": true, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", "dev": true, - "peer": true, "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/hardhat": { - "version": "2.22.18", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.22.18.tgz", - "integrity": "sha512-2+kUz39gvMo56s75cfLBhiFedkQf+gXdrwCcz4R/5wW0oBdwiyfj2q9BIkMoaA0WIGYYMU2I1Cc4ucTunhfjzw==", - "dev": true, - "dependencies": { - "@ethersproject/abi": "^5.1.2", - "@metamask/eth-sig-util": "^4.0.0", - "@nomicfoundation/edr": "^0.7.0", - "@nomicfoundation/ethereumjs-common": "4.0.4", - "@nomicfoundation/ethereumjs-tx": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "@nomicfoundation/solidity-analyzer": "^0.1.0", - "@sentry/node": "^5.18.1", - "@types/bn.js": "^5.1.0", - "@types/lru-cache": "^5.1.0", - "adm-zip": "^0.4.16", - "aggregate-error": "^3.0.0", - "ansi-escapes": "^4.3.0", - "boxen": "^5.1.2", - "chokidar": "^4.0.0", - "ci-info": "^2.0.0", - "debug": "^4.1.1", - "enquirer": "^2.3.0", - "env-paths": "^2.2.0", - "ethereum-cryptography": "^1.0.3", - "ethereumjs-abi": "^0.6.8", - "find-up": "^5.0.0", - "fp-ts": "1.19.3", - "fs-extra": "^7.0.1", - "immutable": "^4.0.0-rc.12", - "io-ts": "1.10.4", - "json-stream-stringify": "^3.1.4", - "keccak": "^3.0.2", - "lodash": "^4.17.11", - "mnemonist": "^0.38.0", - "mocha": "^10.0.0", - "p-map": "^4.0.0", - "picocolors": "^1.1.0", - "raw-body": "^2.4.1", - "resolve": "1.17.0", - "semver": "^6.3.0", - "solc": "0.8.26", - "source-map-support": "^0.5.13", - "stacktrace-parser": "^0.1.10", - "tinyglobby": "^0.2.6", - "tsort": "0.0.1", - "undici": "^5.14.0", - "uuid": "^8.3.2", - "ws": "^7.4.6" - }, - "bin": { - "hardhat": "internal/cli/bootstrap.js" - }, - "peerDependencies": { - "ts-node": "*", - "typescript": "*" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - }, - "typescript": { - "optional": true - } + "node_modules/is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=", + "dev": true, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" } }, - "node_modules/hardhat-dependency-compiler": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/hardhat-dependency-compiler/-/hardhat-dependency-compiler-1.2.1.tgz", - "integrity": "sha512-xG5iwbspTtxOEiP5UsPngEYQ1Hg+fjTjliapIjdTQmwGkCPofrsDhQDV2O/dopcYzcR68nTx2X8xTewYHgA2rQ==", + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true, "engines": { - "node": ">=14.14.0" + "node": ">= 0.4" }, - "peerDependencies": { - "hardhat": "^2.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hardhat-deploy": { - "version": "0.11.43", - "resolved": "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.11.43.tgz", - "integrity": "sha512-D760CjDtinwjOCpKOvdyRtIJYLQIYXmhfgkFe+AkxlYM9bPZ/T4tZ/xIB2tR89ZT+z0hF1YuZFBXIL3/G/9T5g==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, "dependencies": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/contracts": "^5.7.0", - "@ethersproject/providers": "^5.7.2", - "@ethersproject/solidity": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wallet": "^5.7.0", - "@types/qs": "^6.9.7", - "axios": "^0.21.1", - "chalk": "^4.1.2", - "chokidar": "^3.5.2", - "debug": "^4.3.2", - "enquirer": "^2.3.6", - "ethers": "^5.7.0", - "form-data": "^4.0.0", - "fs-extra": "^10.0.0", - "match-all": "^1.2.6", - "murmur-128": "^0.2.1", - "qs": "^6.9.4", - "zksync-web3": "^0.14.3" + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hardhat-deploy/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hardhat-deploy/node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, "dependencies": { - "follow-redirects": "^1.14.0" + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hardhat-deploy/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hardhat-deploy/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "has-symbols": "^1.0.2" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hardhat-deploy/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/hardhat-deploy/node_modules/ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abi": "5.7.0", - "@ethersproject/abstract-provider": "5.7.0", - "@ethersproject/abstract-signer": "5.7.0", - "@ethersproject/address": "5.7.0", - "@ethersproject/base64": "5.7.0", - "@ethersproject/basex": "5.7.0", - "@ethersproject/bignumber": "5.7.0", - "@ethersproject/bytes": "5.7.0", - "@ethersproject/constants": "5.7.0", - "@ethersproject/contracts": "5.7.0", - "@ethersproject/hash": "5.7.0", - "@ethersproject/hdnode": "5.7.0", - "@ethersproject/json-wallets": "5.7.0", - "@ethersproject/keccak256": "5.7.0", - "@ethersproject/logger": "5.7.0", - "@ethersproject/networks": "5.7.1", - "@ethersproject/pbkdf2": "5.7.0", - "@ethersproject/properties": "5.7.0", - "@ethersproject/providers": "5.7.2", - "@ethersproject/random": "5.7.0", - "@ethersproject/rlp": "5.7.0", - "@ethersproject/sha2": "5.7.0", - "@ethersproject/signing-key": "5.7.0", - "@ethersproject/solidity": "5.7.0", - "@ethersproject/strings": "5.7.0", - "@ethersproject/transactions": "5.7.0", - "@ethersproject/units": "5.7.0", - "@ethersproject/wallet": "5.7.0", - "@ethersproject/web": "5.7.1", - "@ethersproject/wordlists": "5.7.0" - } - }, - "node_modules/hardhat-deploy/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dev": true, "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "which-typed-array": "^1.1.11" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hardhat-deploy/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hardhat-deploy/node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" + "call-bind": "^1.0.2" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/hardhat-deploy/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true }, - "node_modules/hardhat-deploy/node_modules/zksync-web3": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/zksync-web3/-/zksync-web3-0.14.4.tgz", - "integrity": "sha512-kYehMD/S6Uhe1g434UnaMN+sBr9nQm23Ywn0EUP5BfQCsbjcr3ORuS68PosZw8xUTu3pac7G6YMSnNHk+fwzvg==", - "deprecated": "This package has been deprecated in favor of zksync-ethers@5.0.0", + "node_modules/js-graph-algorithms": { + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/js-graph-algorithms/-/js-graph-algorithms-1.0.18.tgz", + "integrity": "sha512-Gu1wtWzXBzGeye/j9BuyplGHscwqKRZodp/0M1vyBc19RJpblSwKGu099KwwaTx9cRIV+Qupk8xUMfEiGfFqSA==", "dev": true, - "peerDependencies": { - "ethers": "^5.7.0" + "bin": { + "js-graphs": "src/jsgraphs.js" } }, - "node_modules/hardhat-gas-reporter": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.9.tgz", - "integrity": "sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg==", + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "peer": true, "dependencies": { - "array-uniq": "1.0.3", - "eth-gas-reporter": "^0.2.25", - "sha1": "^1.1.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "peerDependencies": { - "hardhat": "^2.0.2" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/hardhat/node_modules/@metamask/eth-sig-util": { + "node_modules/js-yaml/node_modules/esprima": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", - "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "dependencies": { - "ethereumjs-abi": "^0.6.8", - "ethereumjs-util": "^6.2.1", - "ethjs-util": "^0.1.6", - "tweetnacl": "^1.0.3", - "tweetnacl-util": "^0.15.1" + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">=12.0.0" + "node": ">=4" } }, - "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": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ] - }, - "node_modules/hardhat/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==", + "node_modules/json-stream-stringify": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/json-stream-stringify/-/json-stream-stringify-3.1.6.tgz", + "integrity": "sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" + "license": "MIT", + "engines": { + "node": ">=7.10.1" } }, - "node_modules/hardhat/node_modules/@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], "dependencies": { - "@noble/hashes": "~1.2.0", - "@scure/base": "~1.1.0" + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/hardhat/node_modules/@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "node_modules/jsonfile/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, - "dependencies": { - "@types/node": "*" + "engines": { + "node": ">= 10.0.0" } }, - "node_modules/hardhat/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/jsonschema": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.0.tgz", + "integrity": "sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw==", "dev": true, "engines": { - "node": ">= 0.8" + "node": "*" } }, - "node_modules/hardhat/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "node_modules/keccak": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz", + "integrity": "sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==", "dev": true, + "hasInstallScript": true, "dependencies": { - "readdirp": "^4.0.1" + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" }, "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">=10.0.0" } }, - "node_modules/hardhat/node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/hardhat/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, - "dependencies": { - "@noble/hashes": "1.2.0", - "@noble/secp256k1": "1.7.1", - "@scure/bip32": "1.1.5", - "@scure/bip39": "1.1.1" + "node": ">=0.10.0" } }, - "node_modules/hardhat/node_modules/ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, "dependencies": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/hardhat/node_modules/ethereumjs-util/node_modules/@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "node_modules/lilconfig": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", + "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", "dev": true, - "dependencies": { - "@types/node": "*" + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" } }, - "node_modules/hardhat/node_modules/ethereumjs-util/node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "node_modules/lint-staged": { + "version": "15.2.10", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.10.tgz", + "integrity": "sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==", "dev": true, "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" + "chalk": "~5.3.0", + "commander": "~12.1.0", + "debug": "~4.3.6", + "execa": "~8.0.1", + "lilconfig": "~3.1.2", + "listr2": "~8.2.4", + "micromatch": "~4.0.8", + "pidtree": "~0.6.0", + "string-argv": "~0.3.2", + "yaml": "~2.5.0" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" } }, - "node_modules/hardhat/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, "engines": { - "node": ">=6 <7 || >=8" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/hardhat/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "node_modules/lint-staged/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "ms": "^2.1.3" }, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/hardhat/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/hardhat/node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "node_modules/listr2": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.4.tgz", + "integrity": "sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==", "dev": true, "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=18.0.0" } }, - "node_modules/hardhat/node_modules/readdirp": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.1.tgz", - "integrity": "sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==", + "node_modules/listr2/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, "engines": { - "node": ">= 14.18.0" + "node": ">=12" }, "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/hardhat/node_modules/resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "node_modules/listr2/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, - "dependencies": { - "path-parse": "^1.0.6" + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/hardhat/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } + "node_modules/listr2/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true }, - "node_modules/hardhat/node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "node_modules/listr2/node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "dev": true }, - "node_modules/hardhat/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "node_modules/listr2/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, "engines": { - "node": ">= 0.8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hardhat/node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "node_modules/listr2/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": ">=0.6" - } - }, - "node_modules/hardhat/node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", - "dev": true - }, - "node_modules/hardhat/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, + "node": ">=18" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "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": ">=0.10.0" + "node": ">=8" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.omit": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", + "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==", + "dev": true + }, + "node_modules/lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "license": "MIT", "dependencies": { - "has-symbols": "^1.0.3" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=7.0.0" } }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", "dev": true, - "license": "MIT", "dependencies": { - "function-bind": "^1.1.2" + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">= 0.4" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/heap": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", - "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", - "dev": true - }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "node_modules/log-update/node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", "dev": true, "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "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==", + "node_modules/log-update/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, - "peer": true, - "dependencies": { - "caseless": "^0.12.0", - "concat-stream": "^1.6.2", - "http-response-object": "^3.0.1", - "parse-cache-control": "^1.0.1" - }, "engines": { - "node": ">=6.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "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==", + "node_modules/log-update/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", "dev": true, - "peer": true, "dependencies": { - "@types/node": "^10.0.3" + "get-east-asian-width": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", "dev": true, - "peer": true, "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" }, "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/log-update/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "dependencies": { - "agent-base": "6", - "debug": "4" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">= 6" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "node_modules/log-update/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": ">=16.17.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/husky": { - "version": "9.1.6", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.6.tgz", - "integrity": "sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==", + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "dev": true, - "bin": { - "husky": "bin.js" + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/typicode" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "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==", + "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": { - "safer-buffer": ">= 2.1.2 < 3" + "yallist": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", "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" - } - ] + "license": "MIT", + "dependencies": { + "es5-ext": "~0.10.2" + } }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "node_modules/match-all": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/match-all/-/match-all-1.2.6.tgz", + "integrity": "sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==", + "dev": true + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 4" + "node": ">= 0.4" } }, - "node_modules/immer": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.2.tgz", - "integrity": "sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA==", + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dev": true, - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/immer" + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "node_modules/immutable": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", - "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", - "dev": true - }, - "node_modules/imul": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/imul/-/imul-1.0.1.tgz", - "integrity": "sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==", + "node_modules/memoizee": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz", + "integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==", "dev": true, + "license": "ISC", + "dependencies": { + "d": "^1.0.2", + "es5-ext": "^0.10.64", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" + }, "engines": { - "node": ">=0.10.0" + "node": ">=0.12" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "node_modules/micro-eth-signer": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/micro-eth-signer/-/micro-eth-signer-0.14.0.tgz", + "integrity": "sha512-5PLLzHiVYPWClEvZIXXFu5yutzpadb73rnQCpUqIHu3No3coFuWQNfE5tkBQJ7djuLYl6aRLaS0MgWJYGoqiBw==", "dev": true, + "license": "MIT", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "@noble/curves": "~1.8.1", + "@noble/hashes": "~1.7.1", + "micro-packed": "~0.7.2" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "node_modules/micro-eth-signer/node_modules/@noble/curves": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz", + "integrity": "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g==", "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" + "@noble/hashes": "1.7.2" }, "engines": { - "node": ">= 0.4" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "node_modules/micro-eth-signer/node_modules/@noble/hashes": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz", + "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==", "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/io-ts": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", - "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", + "node_modules/micro-packed": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/micro-packed/-/micro-packed-0.7.3.tgz", + "integrity": "sha512-2Milxs+WNC00TRlem41oRswvw31146GiSaoCT7s3Xi2gMUglW5QBeqlQaZeHr5tJx9nm3i57LNXPqxOOaWtTYg==", "dev": true, + "license": "MIT", "dependencies": { - "fp-ts": "^1.0.0" + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "node_modules/micro-packed/node_modules/@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" - }, + "license": "MIT", "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "dependencies": { - "has-bigints": "^1.0.1" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8.6" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/mime-db": { + "version": "1.48.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", + "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "node_modules/mime-types": { + "version": "2.1.31", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", + "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "mime-db": "1.48.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.6" } }, - "node_modules/is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "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" - } - ], - "peer": true, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", "dev": true, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-core-module": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", - "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "dependencies": { - "has": "^1.0.3" + "brace-expansion": "^1.1.7" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "*" } }, - "node_modules/is-date-object": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", - "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, - "engines": { - "node": ">= 0.4" - }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "node_modules/mocha": { + "version": "10.7.3", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.3.tgz", + "integrity": "sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==", "dev": true, - "peer": true, "dependencies": { - "number-is-nan": "^1.0.0" + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^8.1.0", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^5.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" }, "engines": { - "node": ">=0.10.0" + "node": ">= 14.0.0" } }, - "node_modules/is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "node_modules/mocha/node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/is-hex-prefixed": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=", + "node_modules/mocha/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { - "node": ">=6.5.0", - "npm": ">=3" + "node": ">=8" } }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "node_modules/mocha/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/mocha/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/mocha/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/mocha/node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, "engines": { - "node": ">=0.12.0" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "node_modules/mocha/node_modules/glob": { + "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": { - "has-tostringtag": "^1.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "node_modules/mocha/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT" + "engines": { + "node": ">=8" + } }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "node_modules/mocha/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "node_modules/mocha/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "argparse": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "node_modules/mocha/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10" } }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "node_modules/mocha/node_modules/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": { - "has-symbols": "^1.0.2" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", + "node_modules/mocha/node_modules/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": { - "which-typed-array": "^1.1.11" + "ansi-regex": "^5.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true, - "peer": true - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/mocha/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "node_modules/mocha/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, - "peer": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true, - "peer": true - }, - "node_modules/js-graph-algorithms": { - "version": "1.0.18", - "resolved": "https://registry.npmjs.org/js-graph-algorithms/-/js-graph-algorithms-1.0.18.tgz", - "integrity": "sha512-Gu1wtWzXBzGeye/j9BuyplGHscwqKRZodp/0M1vyBc19RJpblSwKGu099KwwaTx9cRIV+Qupk8xUMfEiGfFqSA==", - "dev": true, - "bin": { - "js-graphs": "src/jsgraphs.js" + "engines": { + "node": ">=10" } }, - "node_modules/js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=", - "dev": true, - "peer": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/mocha/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=10" } }, - "node_modules/js-yaml/node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/mocha/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true, - "peer": true + "license": "MIT" }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "node_modules/murmur-128": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/murmur-128/-/murmur-128-0.2.1.tgz", + "integrity": "sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg==", "dev": true, - "peer": true + "dependencies": { + "encode-utf8": "^1.0.2", + "fmix": "^0.1.0", + "imul": "^1.0.0" + } }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "peer": true + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true }, - "node_modules/json-stream-stringify": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/json-stream-stringify/-/json-stream-stringify-3.1.6.tgz", - "integrity": "sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==", + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", "dev": true, - "engines": { - "node": ">=7.10.1" - } + "license": "ISC" }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true, - "peer": true + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "node_modules/node-emoji": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", + "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", "dev": true, - "peer": true, - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" + "dependencies": { + "lodash": "^4.17.21" } }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/node-fetch": { + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", "dev": true, "dependencies": { - "universalify": "^2.0.0" + "whatwg-url": "^5.0.0" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonfile/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, "engines": { - "node": ">= 10.0.0" + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/jsonschema": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.0.tgz", - "integrity": "sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw==", + "node_modules/node-gyp-build": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", "dev": true, - "engines": { - "node": "*" + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" } }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "node_modules/nofilter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", "dev": true, - "peer": true, - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, "engines": { - "node": ">=0.6.0" + "node": ">=12.19" } }, - "node_modules/keccak": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz", - "integrity": "sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==", + "node_modules/nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", "dev": true, - "hasInstallScript": true, "dependencies": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" + "abbrev": "1" }, - "engines": { - "node": ">=10.0.0" + "bin": { + "nopt": "bin/nopt.js" } }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "dev": true, "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "path-key": "^4.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lilconfig": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", - "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", "dev": true, "engines": { - "node": ">=14" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/antonk52" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lint-staged": { - "version": "15.2.10", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.10.tgz", - "integrity": "sha512-5dY5t743e1byO19P9I4b3x8HJwalIznL5E1FWYnU6OWw33KxNBSLAc6Cy7F2PsFEO8FKnLwjwm5hx7aMF0jzZg==", + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, "dependencies": { - "chalk": "~5.3.0", - "commander": "~12.1.0", - "debug": "~4.3.6", - "execa": "~8.0.1", - "lilconfig": "~3.1.2", - "listr2": "~8.2.4", - "micromatch": "~4.0.8", - "pidtree": "~0.6.0", - "string-argv": "~0.3.2", - "yaml": "~2.5.0" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" - }, - "engines": { - "node": ">=18.12.0" + "boolbase": "^1.0.0" }, "funding": { - "url": "https://opencollective.com/lint-staged" + "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/lint-staged/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/lint-staged/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "node_modules/number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=", "dev": true, "dependencies": { - "ms": "^2.1.3" + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=6.5.0", + "npm": ">=3" } }, - "node_modules/listr2": { - "version": "8.2.4", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.4.tgz", - "integrity": "sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==", + "node_modules/number-to-bn/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", + "dev": true + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", "dev": true, - "dependencies": { - "cli-truncate": "^4.0.0", - "colorette": "^2.0.20", - "eventemitter3": "^5.0.1", - "log-update": "^6.1.0", - "rfdc": "^1.4.1", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=18.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/listr2/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">= 0.4" } }, - "node_modules/listr2/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==", + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/listr2/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "dev": true - }, - "node_modules/listr2/node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "dev": true + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } }, - "node_modules/listr2/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "dev": true, "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" + "mimic-fn": "^4.0.0" }, "engines": { - "node": ">=18" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr2/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==", + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, "dependencies": { - "ansi-regex": "^6.0.1" + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">= 0.8.0" } }, - "node_modules/listr2/node_modules/wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "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": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=18" + "node": ">=6" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "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-locate": "^4.1.0" + "p-limit": "^2.2.0" }, "engines": { "node": ">=8" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true, - "peer": true - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "dev": true, - "peer": true - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", - "deprecated": "This package is deprecated. Use require('node:util').isDeepStrictEqual instead.", - "dev": true, - "peer": true - }, - "node_modules/lodash.omit": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", - "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==", - "dev": true - }, - "node_modules/lodash.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==", - "dev": true - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true, - "peer": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/p-map": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", + "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "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, - "dependencies": { - "color-convert": "^2.0.1" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=6" } }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "entities": "^4.4.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/log-symbols/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "domhandler": "^5.0.2", + "parse5": "^7.0.0" }, - "engines": { - "node": ">=7.0.0" + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/log-symbols/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/log-symbols/node_modules/has-flag": { + "node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "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/log-symbols/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/log-update": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", - "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "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, - "dependencies": { - "ansi-escapes": "^7.0.0", - "cli-cursor": "^5.0.0", - "slice-ansi": "^7.1.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" - }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/log-update/node_modules/ansi-escapes": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", - "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "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/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "dev": true, "dependencies": { - "environment": "^1.0.0" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.12" } }, - "node_modules/log-update/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "engines": { - "node": ">=12" + "node": ">=8.6" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/log-update/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==", + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", "dev": true, - "engines": { - "node": ">=12" + "bin": { + "pidtree": "bin/pidtree.js" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=0.10" } }, - "node_modules/log-update/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "node_modules/plantuml-encoder": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/plantuml-encoder/-/plantuml-encoder-1.4.0.tgz", + "integrity": "sha512-sxMwpDw/ySY1WB2CE3+IdMuEcWibJ72DDOsXLkSmEaSzwEUaYBT6DWgOfBiHGCux4q433X6+OEFWjlVqp7gL6g==", "dev": true }, - "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", - "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", - "dev": true, - "dependencies": { - "get-east-asian-width": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/pollock": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/pollock/-/pollock-0.2.1.tgz", + "integrity": "sha512-2Xy6LImSXm0ANKv9BKSVuCa6Z4ACbK7oUrl9gtUgqLkekL7n9C0mlWsOGYYuGbCG8xT0x3Q4F31C3ZMyVQjwsg==", + "dev": true }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", - "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", "dev": true, - "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" - }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": ">= 0.8.0" } }, - "node_modules/log-update/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" + "bin": { + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">=18" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/log-update/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==", + "node_modules/prettier-plugin-organize-imports": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.0.0.tgz", + "integrity": "sha512-vnKSdgv9aOlqKeEFGhf9SCBsTyzDSyScy1k7E0R1Uo4L0cTcOV7c1XQaT7jfXIOc/p08WLBfN2QUQA9zDSZMxA==", "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" + "peerDependencies": { + "@vue/language-plugin-pug": "^2.0.24", + "prettier": ">=2.0", + "typescript": ">=2.9", + "vue-tsc": "^2.0.24" }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "peerDependenciesMeta": { + "@vue/language-plugin-pug": { + "optional": true + }, + "vue-tsc": { + "optional": true + } } }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "node_modules/prettier-plugin-solidity": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.4.1.tgz", + "integrity": "sha512-Mq8EtfacVZ/0+uDKTtHZGW3Aa7vEbX/BNx63hmVg6YTiTXSiuKP0amj0G6pGwjmLaOfymWh3QgXEZkjQbU8QRg==", "dev": true, "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" + "@solidity-parser/parser": "^0.18.0", + "semver": "^7.5.4" }, "engines": { - "node": ">=18" + "node": ">=16" }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", - "dev": true, - "peer": true, - "dependencies": { - "get-func-name": "^2.0.1" + "peerDependencies": { + "prettier": ">=2.3.0" } }, - "node_modules/lru_map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", + "node_modules/prettier-plugin-solidity/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/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/prettier-plugin-solidity/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" + "bin": { + "semver": "bin/semver.js" }, "engines": { "node": ">=10" } }, - "node_modules/lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true, - "license": "MIT", - "dependencies": { - "es5-ext": "~0.10.2" + "engines": { + "node": ">=0.4.0" } }, - "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==", + "node_modules/proper-lockfile": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", "dev": true, - "peer": true + "dependencies": { + "graceful-fs": "^4.2.4", + "retry": "^0.12.0", + "signal-exit": "^3.0.2" + } }, - "node_modules/markdown-table": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", - "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", - "dev": true, - "peer": true - }, - "node_modules/match-all": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/match-all/-/match-all-1.2.6.tgz", - "integrity": "sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==", - "dev": true - }, - "node_modules/math-intrinsics": { + "node_modules/proxy-from-env": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "node_modules/puml-for-markdown": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/puml-for-markdown/-/puml-for-markdown-1.2.1.tgz", + "integrity": "sha512-zDlnWjNBlTF8LKaI9wxOQPCbqZoObgIn14cTzAHRwkY2At2wIdbqnvPAqAs6ONlZ/9ATPvQ2LPL2ZZy6c7o0ug==", "dev": true, "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "bent": "7.3.12", + "bluebird": "3.7.2", + "commander": "8.2.0", + "gitignore-globs": "0.1.1", + "glob": "7.2.0", + "lodash": "4.17.21", + "plantuml-encoder": "1.4.0", + "tinyurl": "1.1.7" + }, + "bin": { + "puml-for-markdown": "bin/index.js" } }, - "node_modules/memoizee": { - "version": "0.4.17", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz", - "integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==", + "node_modules/puml-for-markdown/node_modules/commander": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.2.0.tgz", + "integrity": "sha512-LLKxDvHeL91/8MIyTAD5BFMNtoIwztGPMiM/7Bl8rIPmHCZXRxmSWr91h57dpOpnQ6jIUqEWdXE/uBYMfiVZDA==", "dev": true, - "license": "ISC", - "dependencies": { - "d": "^1.0.2", - "es5-ext": "^0.10.64", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" - }, "engines": { - "node": ">=0.12" + "node": ">= 12" } }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, - "engines": { - "node": ">= 0.10.0" + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/puppeteer": { + "version": "13.7.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.7.0.tgz", + "integrity": "sha512-U1uufzBjz3+PkpCxFrWzh4OrMIdIb2ztzCu0YEPfRHjHswcSwHZswnK+WdsOQJsRV8WeTg3jLhJR4D867+fjsA==", + "deprecated": "< 19.4.0 is no longer supported", "dev": true, + "hasInstallScript": true, + "dependencies": { + "cross-fetch": "3.1.5", + "debug": "4.3.4", + "devtools-protocol": "0.0.981744", + "extract-zip": "2.0.1", + "https-proxy-agent": "5.0.1", + "pkg-dir": "4.2.0", + "progress": "2.0.3", + "proxy-from-env": "1.1.0", + "rimraf": "3.0.2", + "tar-fs": "2.1.1", + "unbzip2-stream": "1.4.3", + "ws": "8.5.0" + }, "engines": { - "node": ">= 8" + "node": ">=10.18.1" } }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "node_modules/puppeteer/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" + "ms": "2.1.2" }, "engines": { - "node": ">=8.6" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/mime-db": { - "version": "1.48.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.48.0.tgz", - "integrity": "sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==", + "node_modules/puppeteer/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": ">= 0.6" + "node": ">=8" } }, - "node_modules/mime-types": { - "version": "2.1.31", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.31.tgz", - "integrity": "sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==", + "node_modules/puppeteer/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/puppeteer/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "dependencies": { - "mime-db": "1.48.0" + "find-up": "^4.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "node_modules/puppeteer/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "engines": { - "node": ">=12" + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mimic-function": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", - "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "node_modules/puppeteer/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", "dev": true, "engines": { - "node": ">=18" + "node": ">=10.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "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" + } + ] }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": "*" + "node": ">= 6" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "dependencies": { - "minimist": "^1.2.5" + "picomatch": "^2.2.1" }, - "bin": { - "mkdirp": "bin/cmd.js" + "engines": { + "node": ">=8.10.0" } }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true - }, - "node_modules/mnemonist": { - "version": "0.38.5", - "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", - "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "dev": true, "dependencies": { - "obliterator": "^2.0.0" + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" } }, - "node_modules/mocha": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.3.tgz", - "integrity": "sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==", + "node_modules/recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", "dev": true, "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" + "minimatch": "3.0.4" }, "engines": { - "node": ">= 14.0.0" + "node": ">=0.10.0" } }, - "node_modules/mocha/node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mocha/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/mocha/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/mocha/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==", + "node_modules/resolve": { + "version": "1.20.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", + "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "is-core-module": "^2.2.0", + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mocha/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "license": "MIT", + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, - "node_modules/mocha/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/resolve.exports": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", "dev": true, + "license": "MIT", "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "dev": true, + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/glob": { - "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", + "node_modules/restore-cursor/node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "mimic-function": "^5.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/restore-cursor/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": ">=8" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/mocha/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "node": ">= 4" } }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, "engines": { - "node": ">=10" + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "node_modules/mocha/node_modules/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==", + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" + "hash-base": "^3.0.0", + "inherits": "^2.0.1" } }, - "node_modules/mocha/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/rlc-faucet-contract": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/rlc-faucet-contract/-/rlc-faucet-contract-1.0.10.tgz", + "integrity": "sha512-pGQyIMcLIUQraCTNIcA4B9FY1g2vJHB8qWg3qbwjA1YUj1490LStKDlA4YlPwPgO/a0NWg0UHD7R9ki3DMGACQ==" + }, + "node_modules/rlp": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.6.tgz", + "integrity": "sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "bn.js": "^4.11.1" }, - "engines": { - "node": ">=8" + "bin": { + "rlp": "bin/rlp" } }, - "node_modules/mocha/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "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": { + "queue-microtask": "^1.2.2" } }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/safe-array-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" }, "engines": { - "node": ">=10" + "node": ">=0.4" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mocha/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, - "engines": { - "node": ">=10" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/mocha/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", "dev": true, "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, - "license": "MIT" + "optional": true, + "peer": true }, - "node_modules/murmur-128": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/murmur-128/-/murmur-128-0.2.1.tgz", - "integrity": "sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg==", + "node_modules/sc-istanbul": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz", + "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==", "dev": true, "dependencies": { - "encode-utf8": "^1.0.2", - "fmix": "^0.1.0", - "imul": "^1.0.0" + "abbrev": "1.0.x", + "async": "1.x", + "escodegen": "1.8.x", + "esprima": "2.7.x", + "glob": "^5.0.15", + "handlebars": "^4.0.1", + "js-yaml": "3.x", + "mkdirp": "0.5.x", + "nopt": "3.x", + "once": "1.x", + "resolve": "1.1.x", + "supports-color": "^3.1.0", + "which": "^1.1.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "istanbul": "lib/cli.js" } }, - "node_modules/ndjson": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-2.0.0.tgz", - "integrity": "sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==", + "node_modules/sc-istanbul/node_modules/async": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", + "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "dev": true + }, + "node_modules/sc-istanbul/node_modules/glob": { + "version": "5.0.15", + "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", + "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", "dev": true, - "peer": true, "dependencies": { - "json-stringify-safe": "^5.0.1", - "minimist": "^1.2.5", - "readable-stream": "^3.6.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "ndjson": "cli.js" + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=10" + "node": "*" } }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "node_modules/sc-istanbul/node_modules/resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", "dev": true }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", "dev": true }, - "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "node_modules/secp256k1": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", + "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", "dev": true, + "hasInstallScript": true, "dependencies": { - "lodash": "^4.17.21" + "elliptic": "^6.5.2", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" } }, - "node_modules/node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, - "peer": true, "dependencies": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" + "randombytes": "^2.1.0" } }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "node_modules/set-function-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", "dev": true, "dependencies": { - "whatwg-url": "^5.0.0" + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": ">= 0.4" } }, - "node_modules/node-gyp-build": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", - "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/nofilter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", - "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", - "dev": true, - "engines": { - "node": ">=12.19" + "sha.js": "bin.js" } }, - "node_modules/nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "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": { - "abbrev": "1" + "shebang-regex": "^3.0.0" }, - "bin": { - "nopt": "bin/nopt.js" + "engines": { + "node": ">=8" } }, - "node_modules/normalize-path": { + "node_modules/shebang-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dev": true, "dependencies": { - "path-key": "^4.0.0" + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "bin": { + "shjs": "bin/shjs" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, "dependencies": { - "boolbase": "^1.0.0" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" }, "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/number-to-bn": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", - "integrity": "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=", + "node_modules/sol2uml": { + "version": "2.5.22", + "resolved": "https://registry.npmjs.org/sol2uml/-/sol2uml-2.5.22.tgz", + "integrity": "sha512-0Hy2dNwVUKUCRnqkl82oGlW2ygngvFwonSRiqUTA8K6Li0E8ly6tU1jzwfx4863cinwpskOwXCnghP+g3A96Ug==", "dev": true, + "license": "MIT", "dependencies": { - "bn.js": "4.11.6", - "strip-hex-prefix": "1.0.0" + "@aduh95/viz.js": "^3.7.0", + "@solidity-parser/parser": "^0.20.1", + "axios": "^1.10.0", + "axios-debug-log": "^1.0.0", + "cli-color": "^2.0.4", + "commander": "^12.1.0", + "convert-svg-to-png": "^0.6.4", + "debug": "^4.4.1", + "diff-match-patch": "^1.0.5", + "ethers": "^5.8.0", + "js-graph-algorithms": "^1.0.18", + "klaw": "^4.1.0" }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/number-to-bn/node_modules/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", - "dev": true - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "peer": true, - "engines": { - "node": "*" + "bin": { + "sol2uml": "lib/sol2uml.js" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "node_modules/sol2uml/node_modules/@ethersproject/abi": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz", + "integrity": "sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==", "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "node_modules/sol2uml/node_modules/@ethersproject/abstract-provider": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz", + "integrity": "sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/networks": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/web": "^5.8.0" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "node_modules/sol2uml/node_modules/@ethersproject/abstract-signer": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz", + "integrity": "sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==", "dev": true, - "engines": { - "node": ">= 0.4" + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0" } }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "node_modules/sol2uml/node_modules/@ethersproject/address": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.8.0.tgz", + "integrity": "sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/rlp": "^5.8.0" } }, - "node_modules/object.getownpropertydescriptors": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz", - "integrity": "sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ==", + "node_modules/sol2uml/node_modules/@ethersproject/base64": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.8.0.tgz", + "integrity": "sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==", "dev": true, - "peer": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "array.prototype.reduce": "^1.0.5", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.21.2", - "safe-array-concat": "^1.0.0" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@ethersproject/bytes": "^5.8.0" } }, - "node_modules/obliterator": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", - "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", - "dev": true - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "node_modules/sol2uml/node_modules/@ethersproject/basex": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.8.0.tgz", + "integrity": "sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "wrappy": "1" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/properties": "^5.8.0" } }, - "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "node_modules/sol2uml/node_modules/@ethersproject/bignumber": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.8.0.tgz", + "integrity": "sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "bn.js": "^5.2.1" } }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "node_modules/sol2uml/node_modules/@ethersproject/bytes": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz", + "integrity": "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ordinal": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz", - "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==", - "dev": true, - "peer": true - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "@ethersproject/logger": "^5.8.0" } }, - "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==", + "node_modules/sol2uml/node_modules/@ethersproject/constants": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz", + "integrity": "sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@ethersproject/bignumber": "^5.8.0" } }, - "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==", + "node_modules/sol2uml/node_modules/@ethersproject/contracts": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.8.0.tgz", + "integrity": "sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" + "@ethersproject/abi": "^5.8.0", + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/transactions": "^5.8.0" } }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "node_modules/sol2uml/node_modules/@ethersproject/hash": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.8.0.tgz", + "integrity": "sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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" + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/base64": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, - "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/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "node_modules/sol2uml/node_modules/@ethersproject/hdnode": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.8.0.tgz", + "integrity": "sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/basex": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/pbkdf2": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/sha2": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0", + "@ethersproject/strings": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/wordlists": "^5.8.0" } }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "node_modules/sol2uml/node_modules/@ethersproject/json-wallets": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.8.0.tgz", + "integrity": "sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/hdnode": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/pbkdf2": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/random": "^5.8.0", + "@ethersproject/strings": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" } }, - "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==", + "node_modules/sol2uml/node_modules/@ethersproject/keccak256": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.8.0.tgz", + "integrity": "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==", "dev": true, - "engines": { - "node": ">=8" + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "js-sha3": "0.8.0" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "node_modules/sol2uml/node_modules/@ethersproject/logger": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz", + "integrity": "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==", "dev": true, - "engines": { - "node": ">=0.10.0" - } + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" }, - "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==", + "node_modules/sol2uml/node_modules/@ethersproject/networks": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz", + "integrity": "sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==", "dev": true, - "engines": { - "node": ">=8" + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/logger": "^5.8.0" } }, - "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/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "node_modules/sol2uml/node_modules/@ethersproject/pbkdf2": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.8.0.tgz", + "integrity": "sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg==", "dev": true, - "peer": true, - "engines": { - "node": "*" + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/sha2": "^5.8.0" } }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "node_modules/sol2uml/node_modules/@ethersproject/properties": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz", + "integrity": "sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" + "@ethersproject/logger": "^5.8.0" } }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true, - "peer": true - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/sol2uml/node_modules/@ethersproject/providers": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.8.0.tgz", + "integrity": "sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw==", "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/base64": "^5.8.0", + "@ethersproject/basex": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/networks": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/random": "^5.8.0", + "@ethersproject/rlp": "^5.8.0", + "@ethersproject/sha2": "^5.8.0", + "@ethersproject/strings": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/web": "^5.8.0", + "bech32": "1.1.4", + "ws": "8.18.0" } }, - "node_modules/pidtree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "node_modules/sol2uml/node_modules/@ethersproject/random": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.8.0.tgz", + "integrity": "sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A==", "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0" } }, - "node_modules/plantuml-encoder": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/plantuml-encoder/-/plantuml-encoder-1.4.0.tgz", - "integrity": "sha512-sxMwpDw/ySY1WB2CE3+IdMuEcWibJ72DDOsXLkSmEaSzwEUaYBT6DWgOfBiHGCux4q433X6+OEFWjlVqp7gL6g==", - "dev": true - }, - "node_modules/pollock": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/pollock/-/pollock-0.2.1.tgz", - "integrity": "sha512-2Xy6LImSXm0ANKv9BKSVuCa6Z4ACbK7oUrl9gtUgqLkekL7n9C0mlWsOGYYuGbCG8xT0x3Q4F31C3ZMyVQjwsg==", - "dev": true - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "node_modules/sol2uml/node_modules/@ethersproject/rlp": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.8.0.tgz", + "integrity": "sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==", "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0" } }, - "node_modules/prettier-plugin-organize-imports": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.0.0.tgz", - "integrity": "sha512-vnKSdgv9aOlqKeEFGhf9SCBsTyzDSyScy1k7E0R1Uo4L0cTcOV7c1XQaT7jfXIOc/p08WLBfN2QUQA9zDSZMxA==", + "node_modules/sol2uml/node_modules/@ethersproject/sha2": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.8.0.tgz", + "integrity": "sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==", "dev": true, - "peerDependencies": { - "@vue/language-plugin-pug": "^2.0.24", - "prettier": ">=2.0", - "typescript": ">=2.9", - "vue-tsc": "^2.0.24" - }, - "peerDependenciesMeta": { - "@vue/language-plugin-pug": { - "optional": true + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" }, - "vue-tsc": { - "optional": true + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "hash.js": "1.1.7" } }, - "node_modules/prettier-plugin-solidity": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.4.1.tgz", - "integrity": "sha512-Mq8EtfacVZ/0+uDKTtHZGW3Aa7vEbX/BNx63hmVg6YTiTXSiuKP0amj0G6pGwjmLaOfymWh3QgXEZkjQbU8QRg==", + "node_modules/sol2uml/node_modules/@ethersproject/signing-key": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.8.0.tgz", + "integrity": "sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "@solidity-parser/parser": "^0.18.0", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "prettier": ">=2.3.0" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "bn.js": "^5.2.1", + "elliptic": "6.6.1", + "hash.js": "1.1.7" } }, - "node_modules/prettier-plugin-solidity/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/prettier-plugin-solidity/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "node_modules/sol2uml/node_modules/@ethersproject/solidity": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.8.0.tgz", + "integrity": "sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA==", "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/sha2": "^5.8.0", + "@ethersproject/strings": "^5.8.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/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "node_modules/sol2uml/node_modules/@ethersproject/strings": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.8.0.tgz", + "integrity": "sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==", "dev": true, - "engines": { - "node": ">=0.4.0" + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0" } }, - "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==", + "node_modules/sol2uml/node_modules/@ethersproject/transactions": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.8.0.tgz", + "integrity": "sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==", "dev": true, - "peer": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "asap": "~2.0.6" + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/rlp": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0" } }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "node_modules/sol2uml/node_modules/@ethersproject/units": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.8.0.tgz", + "integrity": "sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ==", "dev": true, - "peer": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0" } }, - "node_modules/proper-lockfile": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", - "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "node_modules/sol2uml/node_modules/@ethersproject/wallet": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.8.0.tgz", + "integrity": "sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.4", - "retry": "^0.12.0", - "signal-exit": "^3.0.2" + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/hdnode": "^5.8.0", + "@ethersproject/json-wallets": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/random": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/wordlists": "^5.8.0" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "dev": true - }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true, - "peer": true - }, - "node_modules/puml-for-markdown": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/puml-for-markdown/-/puml-for-markdown-1.2.1.tgz", - "integrity": "sha512-zDlnWjNBlTF8LKaI9wxOQPCbqZoObgIn14cTzAHRwkY2At2wIdbqnvPAqAs6ONlZ/9ATPvQ2LPL2ZZy6c7o0ug==", + "node_modules/sol2uml/node_modules/@ethersproject/web": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.8.0.tgz", + "integrity": "sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "bent": "7.3.12", - "bluebird": "3.7.2", - "commander": "8.2.0", - "gitignore-globs": "0.1.1", - "glob": "7.2.0", - "lodash": "4.17.21", - "plantuml-encoder": "1.4.0", - "tinyurl": "1.1.7" - }, - "bin": { - "puml-for-markdown": "bin/index.js" + "@ethersproject/base64": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, - "node_modules/puml-for-markdown/node_modules/commander": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.2.0.tgz", - "integrity": "sha512-LLKxDvHeL91/8MIyTAD5BFMNtoIwztGPMiM/7Bl8rIPmHCZXRxmSWr91h57dpOpnQ6jIUqEWdXE/uBYMfiVZDA==", + "node_modules/sol2uml/node_modules/@ethersproject/wordlists": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.8.0.tgz", + "integrity": "sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg==", "dev": true, - "engines": { - "node": ">= 12" + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "node_modules/sol2uml/node_modules/@solidity-parser/parser": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.20.2.tgz", + "integrity": "sha512-rbu0bzwNvMcwAjH86hiEAcOeRI2EeK8zCkHDrFykh/Al8mvJeFmjy3UrE7GYQjNwOgbGUUtCn5/k8CB8zIu7QA==", "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } + "license": "MIT" }, - "node_modules/punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "node_modules/sol2uml/node_modules/bn.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } + "license": "MIT" }, - "node_modules/puppeteer": { - "version": "13.7.0", - "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.7.0.tgz", - "integrity": "sha512-U1uufzBjz3+PkpCxFrWzh4OrMIdIb2ztzCu0YEPfRHjHswcSwHZswnK+WdsOQJsRV8WeTg3jLhJR4D867+fjsA==", - "deprecated": "< 19.4.0 is no longer supported", + "node_modules/sol2uml/node_modules/elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", "dev": true, - "hasInstallScript": true, + "license": "MIT", "dependencies": { - "cross-fetch": "3.1.5", - "debug": "4.3.4", - "devtools-protocol": "0.0.981744", - "extract-zip": "2.0.1", - "https-proxy-agent": "5.0.1", - "pkg-dir": "4.2.0", - "progress": "2.0.3", - "proxy-from-env": "1.1.0", - "rimraf": "3.0.2", - "tar-fs": "2.1.1", - "unbzip2-stream": "1.4.3", - "ws": "8.5.0" - }, - "engines": { - "node": ">=10.18.1" + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/puppeteer/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/sol2uml/node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } + "license": "MIT" }, - "node_modules/puppeteer/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==", + "node_modules/sol2uml/node_modules/ethers": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz", + "integrity": "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@ethersproject/abi": "5.8.0", + "@ethersproject/abstract-provider": "5.8.0", + "@ethersproject/abstract-signer": "5.8.0", + "@ethersproject/address": "5.8.0", + "@ethersproject/base64": "5.8.0", + "@ethersproject/basex": "5.8.0", + "@ethersproject/bignumber": "5.8.0", + "@ethersproject/bytes": "5.8.0", + "@ethersproject/constants": "5.8.0", + "@ethersproject/contracts": "5.8.0", + "@ethersproject/hash": "5.8.0", + "@ethersproject/hdnode": "5.8.0", + "@ethersproject/json-wallets": "5.8.0", + "@ethersproject/keccak256": "5.8.0", + "@ethersproject/logger": "5.8.0", + "@ethersproject/networks": "5.8.0", + "@ethersproject/pbkdf2": "5.8.0", + "@ethersproject/properties": "5.8.0", + "@ethersproject/providers": "5.8.0", + "@ethersproject/random": "5.8.0", + "@ethersproject/rlp": "5.8.0", + "@ethersproject/sha2": "5.8.0", + "@ethersproject/signing-key": "5.8.0", + "@ethersproject/solidity": "5.8.0", + "@ethersproject/strings": "5.8.0", + "@ethersproject/transactions": "5.8.0", + "@ethersproject/units": "5.8.0", + "@ethersproject/wallet": "5.8.0", + "@ethersproject/web": "5.8.0", + "@ethersproject/wordlists": "5.8.0" } }, - "node_modules/puppeteer/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/puppeteer/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/sol2uml/node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/puppeteer/node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "node_modules/sol2uml/node_modules/klaw": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-4.1.0.tgz", + "integrity": "sha512-1zGZ9MF9H22UnkpVeuaGKOjfA2t6WrfdrJmGjy16ykcjnKQDmHVX+KI477rpbGevz/5FD4MC3xf1oxylBgcaQw==", "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=14.14.0" } }, - "node_modules/puppeteer/node_modules/ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "node_modules/sol2uml/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, + "license": "MIT", "engines": { "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -9626,114 +8615,152 @@ } } }, - "node_modules/qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", + "node_modules/solidity-ast": { + "version": "0.4.52", + "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.52.tgz", + "integrity": "sha512-iOya9BSiB9jhM8Vf40n8lGELGzwrUc57rl5BhfNtJ5cvAaMvRcNlHeAMNvqJJyjoUnczqRbHqdivEqK89du3Cw==", "dev": true, - "peer": true, - "engines": { - "node": ">=0.6" + "dependencies": { + "array.prototype.findlast": "^1.2.2" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "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" - } - ] - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "node_modules/solidity-coverage": { + "version": "0.8.14", + "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.14.tgz", + "integrity": "sha512-ItAAObe5GaEOp20kXC2BZRnph+9P7Rtoqg2mQc2SXGEHgSDF2wWd1Wxz3ntzQWXkbCtIIGdJT918HG00cObwbA==", "dev": true, "dependencies": { - "safe-buffer": "^5.1.0" + "@ethersproject/abi": "^5.0.9", + "@solidity-parser/parser": "^0.19.0", + "chalk": "^2.4.2", + "death": "^1.1.0", + "difflib": "^0.2.4", + "fs-extra": "^8.1.0", + "ghost-testrpc": "^0.0.2", + "global-modules": "^2.0.0", + "globby": "^10.0.1", + "jsonschema": "^1.2.4", + "lodash": "^4.17.21", + "mocha": "^10.2.0", + "node-emoji": "^1.10.0", + "pify": "^4.0.1", + "recursive-readdir": "^2.2.2", + "sc-istanbul": "^0.4.5", + "semver": "^7.3.4", + "shelljs": "^0.8.3", + "web3-utils": "^1.3.6" + }, + "bin": { + "solidity-coverage": "plugins/bin.js" + }, + "peerDependencies": { + "hardhat": "^2.11.0" } }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/solidity-coverage/node_modules/@solidity-parser/parser": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.19.0.tgz", + "integrity": "sha512-RV16k/qIxW/wWc+mLzV3ARyKUaMUTBy9tOLMzFhtNSKYeTAanQ3a5MudJKf/8arIFnA2L27SNjarQKmFg0w/jA==", + "dev": true + }, + "node_modules/solidity-coverage/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">= 6" + "node": ">=6 <7 || >=8" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/solidity-coverage/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/solidity-coverage/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, "engines": { - "node": ">=8.10.0" + "node": ">=6" } }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "node_modules/solidity-coverage/node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", "dev": true, "dependencies": { - "resolve": "^1.1.6" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 0.10" + "node": ">=10" } }, - "node_modules/recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "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", + "integrity": "sha512-f/I5G2iJgU1h0XrrjRD0hHMr7C10u276vYvm//rw1TzFcYQ4xTOyAoi9oNAHRU0JU4mY9eTuxdVc2zahdMuhaQ==", "dev": true, "dependencies": { - "minimatch": "3.0.4" + "handlebars": "^4.7.7", + "solidity-ast": "^0.4.38" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "hardhat": "^2.8.0" } }, - "node_modules/reduce-flatten": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", - "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "node_modules/solstruct": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/solstruct/-/solstruct-0.1.0.tgz", + "integrity": "sha512-7XiFF2g3R08tsfhhZfKbKheNC0A5lsdAxk5R2HVPzT/kwenTh8AUzmQoc10xw+zXO813KRRLK3t65KqgUE2T4w==" + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true, - "peer": true, "engines": { - "node": ">=6" + "node": ">=0.6.19" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", + "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==", "dev": true, "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" + "es-abstract": "^1.22.1" }, "engines": { "node": ">= 0.4" @@ -9742,262 +8769,304 @@ "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "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==", "dev": true, - "peer": true, "dependencies": { - "req-from": "^2.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==", + "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==", "dev": true, - "peer": true, "dependencies": { - "resolve-from": "^3.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/req-from/node_modules/resolve-from": { + "node_modules/strip-final-newline": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true, - "peer": true, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "node_modules/strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", "dev": true, - "peer": true, "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" + "is-hex-prefixed": "1.0.0" }, "engines": { - "node": ">= 6" + "node": ">=6.5.0", + "npm": ">=3" } }, - "node_modules/request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", "dev": true, - "peer": true, "dependencies": { - "lodash": "^4.17.19" + "has-flag": "^1.0.0" }, "engines": { - "node": ">=0.10.0" - }, - "peerDependencies": { - "request": "^2.34" + "node": ">=0.8.0" } }, - "node_modules/request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "deprecated": "request-promise-native has been deprecated because it extends the now deprecated request package, see https://github.com/request/request/issues/3142", + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", "dev": true, - "peer": true, "dependencies": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "engines": { - "node": ">=0.12.0" - }, - "peerDependencies": { - "request": "^2.34" + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" } }, - "node_modules/request/node_modules/qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", "dev": true, - "peer": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, "engines": { - "node": ">=0.6" + "node": ">=6" } }, - "node_modules/request/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/timers-ext": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz", + "integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==", "dev": true, - "peer": true, - "bin": { - "uuid": "bin/uuid" + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.64", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.12" } }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "node_modules/tinyurl": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/tinyurl/-/tinyurl-1.1.7.tgz", + "integrity": "sha512-NCnyDkBTByS/pLH/Vrx/DPL8EciAUDoAvruaM/WnQLfX6Uame3D1nuWNy2Z9CXw7rcsok0tjuonRLolhmyz5rg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "node_modules/tsx": { + "version": "4.20.6", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz", + "integrity": "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==", "dev": true, - "peer": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.25.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, "engines": { - "node": ">=0.10.0" + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" } }, - "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", + "node_modules/type": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", "dev": true, "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" + "prelude-ls": "~1.1.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/restore-cursor": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", - "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "node_modules/typed-array-buffer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", "dev": true, "dependencies": { - "onetime": "^7.0.0", - "signal-exit": "^4.1.0" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1", + "is-typed-array": "^1.1.10" }, "engines": { - "node": ">=18" + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", - "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", "dev": true, "dependencies": { - "mimic-function": "^5.0.0" + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" }, "engines": { - "node": ">=18" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/restore-cursor/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==", + "node_modules/typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", "dev": true, - "engines": { - "node": ">=14" + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "node_modules/typescript": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", + "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", "dev": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, "engines": { - "node": ">= 4" + "node": ">=12.20" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "node_modules/uglify-js": { + "version": "3.15.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.4.tgz", + "integrity": "sha512-vMOPGDuvXecPs34V74qDKk4iJ/SN4vL3Ow/23ixafENYvtrNvtbcgUeugTcUGRGsOF/5fU8/NYSL5Hyb3l1OJA==", "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": ">=0.8.0" } }, - "node_modules/rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "dev": true - }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dev": true, "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/rlc-faucet-contract": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/rlc-faucet-contract/-/rlc-faucet-contract-1.0.10.tgz", - "integrity": "sha512-pGQyIMcLIUQraCTNIcA4B9FY1g2vJHB8qWg3qbwjA1YUj1490LStKDlA4YlPwPgO/a0NWg0UHD7R9ki3DMGACQ==" - }, - "node_modules/rlp": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.6.tgz", - "integrity": "sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg==", + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "dev": true, "dependencies": { - "bn.js": "^4.11.1" - }, - "bin": { - "rlp": "bin/rlp" + "buffer": "^5.2.1", + "through": "^2.3.8" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "node_modules/unbzip2-stream/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, "funding": [ { @@ -10014,6974 +9083,2977 @@ } ], "dependencies": { - "queue-microtask": "^1.2.2" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/safe-array-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", - "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 4.0.0" } }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "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" - } - ] - }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "node_modules/utf-8-validate": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.5.tgz", + "integrity": "sha512-+pnxRYsS/axEpkrrEpzYfNZGXp0IjC/9RIxwM5gntY4Koi8SHmUGSfxfWqxZdRxrtaoVstuOzUp/rbs3JSPELQ==", "dev": true, + "hasInstallScript": true, + "optional": true, + "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node-gyp-build": "^4.2.0" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "node_modules/utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", "dev": true }, - "node_modules/sc-istanbul": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz", - "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==", - "dev": true, - "dependencies": { - "abbrev": "1.0.x", - "async": "1.x", - "escodegen": "1.8.x", - "esprima": "2.7.x", - "glob": "^5.0.15", - "handlebars": "^4.0.1", - "js-yaml": "3.x", - "mkdirp": "0.5.x", - "nopt": "3.x", - "once": "1.x", - "resolve": "1.1.x", - "supports-color": "^3.1.0", - "which": "^1.1.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "istanbul": "lib/cli.js" - } - }, - "node_modules/sc-istanbul/node_modules/async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "node_modules/sc-istanbul/node_modules/glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "node_modules/web3-utils": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz", + "integrity": "sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA==", "dev": true, "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereumjs-util": "^7.1.0", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" }, "engines": { - "node": "*" + "node": ">=8.0.0" } }, - "node_modules/sc-istanbul/node_modules/resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", + "node_modules/web3-utils/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", "dev": true }, - "node_modules/scrypt-js": { + "node_modules/webidl-conversions": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", "dev": true }, - "node_modules/secp256k1": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", - "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", "dev": true, - "hasInstallScript": true, "dependencies": { - "elliptic": "^6.5.2", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, - "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, "bin": { - "semver": "bin/semver" + "which": "bin/which" } }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dev": true, "dependencies": { - "randombytes": "^2.1.0" + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true, - "peer": true - }, - "node_modules/set-function-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", - "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", + "node_modules/which-typed-array": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", + "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", "dev": true, "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "node_modules/sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/sha1": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", - "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "node_modules/workerpool": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "dev": true + }, + "node_modules/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, - "peer": true, "dependencies": { - "charenc": ">= 0.0.1", - "crypt": ">= 0.0.1" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": "*" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "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==", + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "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==", + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" + "color-name": "~1.1.4" }, "engines": { - "node": ">=4" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=7.0.0" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, - "peer": true - }, - "node_modules/slash": { + "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "node_modules/wrap-ansi/node_modules/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, - "peer": true, "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "node": ">=8" } }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/wrap-ansi/node_modules/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, - "peer": true, "dependencies": { - "color-convert": "^2.0.1" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true, + "engines": { + "node": ">=8.3.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/slice-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "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/yaml": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "dev": true, + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", "dev": true, - "peer": true, "dependencies": { - "color-name": "~1.1.4" + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=10" } }, - "node_modules/slice-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "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, - "peer": true + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/yargs-unparser/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "dev": true, - "peer": true, "engines": { "node": ">=8" } }, - "node_modules/sol2uml": { - "version": "2.5.22", - "resolved": "https://registry.npmjs.org/sol2uml/-/sol2uml-2.5.22.tgz", - "integrity": "sha512-0Hy2dNwVUKUCRnqkl82oGlW2ygngvFwonSRiqUTA8K6Li0E8ly6tU1jzwfx4863cinwpskOwXCnghP+g3A96Ug==", + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, - "license": "MIT", "dependencies": { - "@aduh95/viz.js": "^3.7.0", - "@solidity-parser/parser": "^0.20.1", - "axios": "^1.10.0", - "axios-debug-log": "^1.0.0", - "cli-color": "^2.0.4", - "commander": "^12.1.0", - "convert-svg-to-png": "^0.6.4", - "debug": "^4.4.1", - "diff-match-patch": "^1.0.5", - "ethers": "^5.8.0", - "js-graph-algorithms": "^1.0.18", - "klaw": "^4.1.0" - }, - "bin": { - "sol2uml": "lib/sol2uml.js" + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" } }, - "node_modules/sol2uml/node_modules/@ethersproject/abi": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz", - "integrity": "sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==", + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/address": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/constants": "^5.8.0", - "@ethersproject/hash": "^5.8.0", - "@ethersproject/keccak256": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/strings": "^5.8.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/sol2uml/node_modules/@ethersproject/abstract-provider": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz", - "integrity": "sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==", + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], "license": "MIT", - "dependencies": { - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/networks": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/transactions": "^5.8.0", - "@ethersproject/web": "^5.8.0" + "funding": { + "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/sol2uml/node_modules/@ethersproject/abstract-signer": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz", - "integrity": "sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==", + "node_modules/zx": { + "version": "8.1.6", + "resolved": "https://registry.npmjs.org/zx/-/zx-8.1.6.tgz", + "integrity": "sha512-SYAriWG+i2CFqMOJcF8QayI8wprlMYQsrmP6tFD7rSPnDLcImNSW7n/8crOYvNVrB2EFgz8LAQk23U1+Y7WrKA==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abstract-provider": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0" + "bin": { + "zx": "build/cli.js" + }, + "engines": { + "node": ">= 12.17.0" + }, + "optionalDependencies": { + "@types/fs-extra": ">=11", + "@types/node": ">=20" } + } + }, + "dependencies": { + "@aduh95/viz.js": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@aduh95/viz.js/-/viz.js-3.7.0.tgz", + "integrity": "sha512-20Pk2Z98fbPLkECcrZSJszKos/OgtvJJR3NcbVfgCJ6EQjDNzW2P1BKqImOz3tJ952dvO2DWEhcLhQ1Wz1e9ng==", + "dev": true }, - "node_modules/sol2uml/node_modules/@ethersproject/address": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.8.0.tgz", - "integrity": "sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==", + "@amxx/factory": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@amxx/factory/-/factory-1.0.0.tgz", + "integrity": "sha512-GXos8f4vKWPcphVyF2RU+/4rGvlov2idZSPNzXyIEmkzwLuxa+waTOUjHCvN7cmG0vXM7tyjawXUN1fdgiLvxA==", + "dev": true + }, + "@esbuild/aix-ppc64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.11.tgz", + "integrity": "sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/keccak256": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/rlp": "^5.8.0" - } + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/base64": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.8.0.tgz", - "integrity": "sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==", + "@esbuild/android-arm": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.11.tgz", + "integrity": "sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0" - } + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/basex": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.8.0.tgz", - "integrity": "sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q==", + "@esbuild/android-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz", + "integrity": "sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/properties": "^5.8.0" - } + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/bignumber": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.8.0.tgz", - "integrity": "sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==", + "@esbuild/android-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.11.tgz", + "integrity": "sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "bn.js": "^5.2.1" - } + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/bytes": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz", - "integrity": "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==", + "@esbuild/darwin-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz", + "integrity": "sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/logger": "^5.8.0" - } + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/constants": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz", - "integrity": "sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==", + "@esbuild/darwin-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz", + "integrity": "sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bignumber": "^5.8.0" - } + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/contracts": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.8.0.tgz", - "integrity": "sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ==", + "@esbuild/freebsd-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz", + "integrity": "sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abi": "^5.8.0", - "@ethersproject/abstract-provider": "^5.8.0", - "@ethersproject/abstract-signer": "^5.8.0", - "@ethersproject/address": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/constants": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/transactions": "^5.8.0" - } + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/hash": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.8.0.tgz", - "integrity": "sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==", + "@esbuild/freebsd-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz", + "integrity": "sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abstract-signer": "^5.8.0", - "@ethersproject/address": "^5.8.0", - "@ethersproject/base64": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/keccak256": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/strings": "^5.8.0" - } + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/hdnode": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.8.0.tgz", - "integrity": "sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA==", + "@esbuild/linux-arm": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz", + "integrity": "sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abstract-signer": "^5.8.0", - "@ethersproject/basex": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/pbkdf2": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/sha2": "^5.8.0", - "@ethersproject/signing-key": "^5.8.0", - "@ethersproject/strings": "^5.8.0", - "@ethersproject/transactions": "^5.8.0", - "@ethersproject/wordlists": "^5.8.0" - } + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/json-wallets": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.8.0.tgz", - "integrity": "sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w==", + "@esbuild/linux-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz", + "integrity": "sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abstract-signer": "^5.8.0", - "@ethersproject/address": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/hdnode": "^5.8.0", - "@ethersproject/keccak256": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/pbkdf2": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/random": "^5.8.0", - "@ethersproject/strings": "^5.8.0", - "@ethersproject/transactions": "^5.8.0", - "aes-js": "3.0.0", - "scrypt-js": "3.0.1" - } + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/keccak256": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.8.0.tgz", - "integrity": "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==", + "@esbuild/linux-ia32": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz", + "integrity": "sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "js-sha3": "0.8.0" - } + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/logger": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz", - "integrity": "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==", + "@esbuild/linux-loong64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz", + "integrity": "sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT" + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/networks": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz", - "integrity": "sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==", + "@esbuild/linux-mips64el": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz", + "integrity": "sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/logger": "^5.8.0" - } + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/pbkdf2": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.8.0.tgz", - "integrity": "sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg==", + "@esbuild/linux-ppc64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz", + "integrity": "sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/sha2": "^5.8.0" - } + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/properties": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz", - "integrity": "sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==", + "@esbuild/linux-riscv64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz", + "integrity": "sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/logger": "^5.8.0" - } + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/providers": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.8.0.tgz", - "integrity": "sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw==", + "@esbuild/linux-s390x": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz", + "integrity": "sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abstract-provider": "^5.8.0", - "@ethersproject/abstract-signer": "^5.8.0", - "@ethersproject/address": "^5.8.0", - "@ethersproject/base64": "^5.8.0", - "@ethersproject/basex": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/constants": "^5.8.0", - "@ethersproject/hash": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/networks": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/random": "^5.8.0", - "@ethersproject/rlp": "^5.8.0", - "@ethersproject/sha2": "^5.8.0", - "@ethersproject/strings": "^5.8.0", - "@ethersproject/transactions": "^5.8.0", - "@ethersproject/web": "^5.8.0", - "bech32": "1.1.4", - "ws": "8.18.0" - } + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/random": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.8.0.tgz", - "integrity": "sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A==", + "@esbuild/linux-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz", + "integrity": "sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0" - } + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/rlp": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.8.0.tgz", - "integrity": "sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==", + "@esbuild/netbsd-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.11.tgz", + "integrity": "sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0" - } + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/sha2": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.8.0.tgz", - "integrity": "sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==", + "@esbuild/netbsd-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz", + "integrity": "sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "hash.js": "1.1.7" - } + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/signing-key": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.8.0.tgz", - "integrity": "sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==", + "@esbuild/openbsd-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.11.tgz", + "integrity": "sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "bn.js": "^5.2.1", - "elliptic": "6.6.1", - "hash.js": "1.1.7" - } + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/solidity": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.8.0.tgz", - "integrity": "sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA==", + "@esbuild/openbsd-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz", + "integrity": "sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/keccak256": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/sha2": "^5.8.0", - "@ethersproject/strings": "^5.8.0" - } + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/strings": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.8.0.tgz", - "integrity": "sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==", + "@esbuild/openharmony-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.11.tgz", + "integrity": "sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/constants": "^5.8.0", - "@ethersproject/logger": "^5.8.0" - } + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/transactions": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.8.0.tgz", - "integrity": "sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==", + "@esbuild/sunos-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz", + "integrity": "sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/address": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/constants": "^5.8.0", - "@ethersproject/keccak256": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/rlp": "^5.8.0", - "@ethersproject/signing-key": "^5.8.0" - } + "optional": true }, - "node_modules/sol2uml/node_modules/@ethersproject/units": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.8.0.tgz", - "integrity": "sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ==", + "@esbuild/win32-arm64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz", + "integrity": "sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/constants": "^5.8.0", - "@ethersproject/logger": "^5.8.0" + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz", + "integrity": "sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz", + "integrity": "sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==", + "dev": true, + "optional": true + }, + "@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "dev": true, + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, - "node_modules/sol2uml/node_modules/@ethersproject/wallet": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.8.0.tgz", - "integrity": "sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA==", + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abstract-provider": "^5.8.0", - "@ethersproject/abstract-signer": "^5.8.0", - "@ethersproject/address": "^5.8.0", - "@ethersproject/bignumber": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/hash": "^5.8.0", - "@ethersproject/hdnode": "^5.8.0", - "@ethersproject/json-wallets": "^5.8.0", - "@ethersproject/keccak256": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/random": "^5.8.0", - "@ethersproject/signing-key": "^5.8.0", - "@ethersproject/transactions": "^5.8.0", - "@ethersproject/wordlists": "^5.8.0" + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" } }, - "node_modules/sol2uml/node_modules/@ethersproject/web": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.8.0.tgz", - "integrity": "sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==", + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/base64": "^5.8.0", - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/strings": "^5.8.0" + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" } }, - "node_modules/sol2uml/node_modules/@ethersproject/wordlists": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.8.0.tgz", - "integrity": "sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg==", + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.8.0", - "@ethersproject/hash": "^5.8.0", - "@ethersproject/logger": "^5.8.0", - "@ethersproject/properties": "^5.8.0", - "@ethersproject/strings": "^5.8.0" + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" } }, - "node_modules/sol2uml/node_modules/@solidity-parser/parser": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.20.2.tgz", - "integrity": "sha512-rbu0bzwNvMcwAjH86hiEAcOeRI2EeK8zCkHDrFykh/Al8mvJeFmjy3UrE7GYQjNwOgbGUUtCn5/k8CB8zIu7QA==", + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", "dev": true, - "license": "MIT" + "requires": { + "@ethersproject/bytes": "^5.7.0" + } }, - "node_modules/sol2uml/node_modules/bn.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", - "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", + "@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", "dev": true, - "license": "MIT" + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } }, - "node_modules/sol2uml/node_modules/elliptic": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", - "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", "dev": true, - "license": "MIT", + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + }, "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + } } }, - "node_modules/sol2uml/node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", - "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", "dev": true, - "license": "MIT" - }, - "node_modules/sol2uml/node_modules/ethers": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz", - "integrity": "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abi": "5.8.0", - "@ethersproject/abstract-provider": "5.8.0", - "@ethersproject/abstract-signer": "5.8.0", - "@ethersproject/address": "5.8.0", - "@ethersproject/base64": "5.8.0", - "@ethersproject/basex": "5.8.0", - "@ethersproject/bignumber": "5.8.0", - "@ethersproject/bytes": "5.8.0", - "@ethersproject/constants": "5.8.0", - "@ethersproject/contracts": "5.8.0", - "@ethersproject/hash": "5.8.0", - "@ethersproject/hdnode": "5.8.0", - "@ethersproject/json-wallets": "5.8.0", - "@ethersproject/keccak256": "5.8.0", - "@ethersproject/logger": "5.8.0", - "@ethersproject/networks": "5.8.0", - "@ethersproject/pbkdf2": "5.8.0", - "@ethersproject/properties": "5.8.0", - "@ethersproject/providers": "5.8.0", - "@ethersproject/random": "5.8.0", - "@ethersproject/rlp": "5.8.0", - "@ethersproject/sha2": "5.8.0", - "@ethersproject/signing-key": "5.8.0", - "@ethersproject/solidity": "5.8.0", - "@ethersproject/strings": "5.8.0", - "@ethersproject/transactions": "5.8.0", - "@ethersproject/units": "5.8.0", - "@ethersproject/wallet": "5.8.0", - "@ethersproject/web": "5.8.0", - "@ethersproject/wordlists": "5.8.0" + "requires": { + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/sol2uml/node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/sol2uml/node_modules/klaw": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-4.1.0.tgz", - "integrity": "sha512-1zGZ9MF9H22UnkpVeuaGKOjfA2t6WrfdrJmGjy16ykcjnKQDmHVX+KI477rpbGevz/5FD4MC3xf1oxylBgcaQw==", + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", "dev": true, - "engines": { - "node": ">=14.14.0" + "requires": { + "@ethersproject/bignumber": "^5.7.0" } }, - "node_modules/sol2uml/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", "dev": true, - "license": "MIT", - "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 - } + "requires": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" } }, - "node_modules/solc": { - "version": "0.8.26", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.26.tgz", - "integrity": "sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g==", + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", "dev": true, - "dependencies": { - "command-exists": "^1.2.8", - "commander": "^8.1.0", - "follow-redirects": "^1.12.1", - "js-sha3": "0.8.0", - "memorystream": "^0.3.1", - "semver": "^5.5.0", - "tmp": "0.0.33" - }, - "bin": { - "solcjs": "solc.js" - }, - "engines": { - "node": ">=10.0.0" + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, - "node_modules/solc/node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", "dev": true, - "engines": { - "node": ">= 12" + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" } }, - "node_modules/solc/node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true - }, - "node_modules/solidity-ast": { - "version": "0.4.52", - "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.52.tgz", - "integrity": "sha512-iOya9BSiB9jhM8Vf40n8lGELGzwrUc57rl5BhfNtJ5cvAaMvRcNlHeAMNvqJJyjoUnczqRbHqdivEqK89du3Cw==", + "@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", "dev": true, - "dependencies": { - "array.prototype.findlast": "^1.2.2" + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" } }, - "node_modules/solidity-coverage": { - "version": "0.8.14", - "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.14.tgz", - "integrity": "sha512-ItAAObe5GaEOp20kXC2BZRnph+9P7Rtoqg2mQc2SXGEHgSDF2wWd1Wxz3ntzQWXkbCtIIGdJT918HG00cObwbA==", + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", "dev": true, - "dependencies": { - "@ethersproject/abi": "^5.0.9", - "@solidity-parser/parser": "^0.19.0", - "chalk": "^2.4.2", - "death": "^1.1.0", - "difflib": "^0.2.4", - "fs-extra": "^8.1.0", - "ghost-testrpc": "^0.0.2", - "global-modules": "^2.0.0", - "globby": "^10.0.1", - "jsonschema": "^1.2.4", - "lodash": "^4.17.21", - "mocha": "^10.2.0", - "node-emoji": "^1.10.0", - "pify": "^4.0.1", - "recursive-readdir": "^2.2.2", - "sc-istanbul": "^0.4.5", - "semver": "^7.3.4", - "shelljs": "^0.8.3", - "web3-utils": "^1.3.6" - }, - "bin": { - "solidity-coverage": "plugins/bin.js" + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" }, - "peerDependencies": { - "hardhat": "^2.11.0" + "dependencies": { + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + } } }, - "node_modules/solidity-coverage/node_modules/@solidity-parser/parser": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.19.0.tgz", - "integrity": "sha512-RV16k/qIxW/wWc+mLzV3ARyKUaMUTBy9tOLMzFhtNSKYeTAanQ3a5MudJKf/8arIFnA2L27SNjarQKmFg0w/jA==", + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", "dev": true }, - "node_modules/solidity-coverage/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" + "requires": { + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/solidity-coverage/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" } }, - "node_modules/solidity-coverage/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "engines": { - "node": ">=6" + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "dev": true, + "requires": { + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/solidity-coverage/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" } }, - "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", - "integrity": "sha512-f/I5G2iJgU1h0XrrjRD0hHMr7C10u276vYvm//rw1TzFcYQ4xTOyAoi9oNAHRU0JU4mY9eTuxdVc2zahdMuhaQ==", + "@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", "dev": true, - "dependencies": { - "handlebars": "^4.7.7", - "solidity-ast": "^0.4.38" - }, - "peerDependencies": { - "hardhat": "^2.8.0" + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/solstruct": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/solstruct/-/solstruct-0.1.0.tgz", - "integrity": "sha512-7XiFF2g3R08tsfhhZfKbKheNC0A5lsdAxk5R2HVPzT/kwenTh8AUzmQoc10xw+zXO813KRRLK3t65KqgUE2T4w==" - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", "dev": true, - "engines": { - "node": ">=0.10.0" + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" } }, - "node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", "dev": true, - "peer": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + }, "dependencies": { - "readable-stream": "^3.0.0" + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + } } }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "node_modules/sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", "dev": true, - "peer": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, - "node_modules/stacktrace-parser": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", - "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", "dev": true, - "dependencies": { - "type-fest": "^0.7.1" - }, - "engines": { - "node": ">=6" + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/stacktrace-parser/node_modules/type-fest": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", - "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", "dev": true, - "engines": { - "node": ">=8" + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" } }, - "node_modules/stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", + "@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", "dev": true, - "engines": { - "node": ">=10.0.0" + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, - "node_modules/string-argv": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", - "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", "dev": true, - "engines": { - "node": ">=0.6.19" + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, - "node_modules/string-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", - "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", - "dev": true, - "peer": true + "@iexec/interface": { + "version": "3.0.35-8", + "resolved": "https://registry.npmjs.org/@iexec/interface/-/interface-3.0.35-8.tgz", + "integrity": "sha512-JkO9bpfpTBCOtJz/TEPzFTLlgamv7fll8RUpwC+8P6UWlGGwCe/IvgAeUZzIJ/syXaAhC0KZ7/03BEiee3f8fg==" }, - "node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "peer": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" + "@iexec/solidity": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@iexec/solidity/-/solidity-0.1.1.tgz", + "integrity": "sha512-XLCihhVxsA77Ug9tVnz0uiUAzVdpZGlkSzfoUTLUfYDxUr+iwXJ6zvsBKomnAvvLsRJ0lb4qiBmSMpGtZ9am4w==", + "requires": { + "@openzeppelin/contracts": "3.2.0", + "solstruct": "0.1.0" }, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@openzeppelin/contracts": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.2.0.tgz", + "integrity": "sha512-bUOmkSoPkjnUyMiKo6RYnb0VHBk5D9KKDAgNLzF41aqAM3TeE0yGdFF5dVRcV60pZdJLlyFT/jjXIZCWyyEzAQ==" + } } }, - "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==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "@mudgen/diamond-1": { + "version": "git+ssh://git@github.com/mudgen/diamond-1-hardhat.git#3da037b378195b4108b977cf2014600eeddbf67d", + "from": "@mudgen/diamond-1@github:mudgen/diamond-1-hardhat#3da037b" }, - "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==", + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" } }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "peer": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" } }, - "node_modules/strip-hex-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", - "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", + "@nomicfoundation/edr": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.12.0-next.10.tgz", + "integrity": "sha512-D10VX2FO9faYhy3T+z5mx3M/cnQ1BQ9vayuunm9aQOwmqsB9G2Ozvlb41+ooXEqmNpnpxxXuD8zst6v7HydjLg==", "dev": true, - "dependencies": { - "is-hex-prefixed": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" + "requires": { + "@nomicfoundation/edr-darwin-arm64": "0.12.0-next.10", + "@nomicfoundation/edr-darwin-x64": "0.12.0-next.10", + "@nomicfoundation/edr-linux-arm64-gnu": "0.12.0-next.10", + "@nomicfoundation/edr-linux-arm64-musl": "0.12.0-next.10", + "@nomicfoundation/edr-linux-x64-gnu": "0.12.0-next.10", + "@nomicfoundation/edr-linux-x64-musl": "0.12.0-next.10", + "@nomicfoundation/edr-win32-x64-msvc": "0.12.0-next.10" } }, - "node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.10.0" - } + "@nomicfoundation/edr-darwin-arm64": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.12.0-next.10.tgz", + "integrity": "sha512-LYXaU0Pk7zA4iAHMdvZ9Gs5QaScs9n5IpclWBNVevSHnL1/uJiFLDF4FYE/NonvaCST6Rd0E4MS3pJltsrBQmA==", + "dev": true }, - "node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dev": true, - "dependencies": { - "has-flag": "^1.0.0" - }, - "engines": { - "node": ">=0.8.0" - } + "@nomicfoundation/edr-darwin-x64": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.12.0-next.10.tgz", + "integrity": "sha512-GtcBqSRhtjOZn6MaT9AReQS/75CY0KG/7IPURGMyjY8lxGtx6WdkzLSP7d7Jvc/WMinXZVs0jCuucfjZg/etQw==", + "dev": true }, - "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" - }, - "engines": { - "node": ">=8.0.0" - } + "@nomicfoundation/edr-linux-arm64-gnu": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.12.0-next.10.tgz", + "integrity": "sha512-EtnYfNdKfn7Dd06/zCFwjBaiI0iPiJIy8GvwJx9oiIzcmIzKnY4ZJrsRfriAK2TBzAk8nmm8Z7r4lIzOqpBUkQ==", + "dev": true }, - "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" - } + "@nomicfoundation/edr-linux-arm64-musl": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.12.0-next.10.tgz", + "integrity": "sha512-ZkKdzMy6WpSEt3+pnJteg8dX/ovnUCL95dm4+cyvySRkUCCGbp0kgQ7RlGkC7X/z/BZpaKsCjVgbEJgMFlF8sg==", + "dev": true }, - "node_modules/table": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", - "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", - "dev": true, - "peer": true, - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } + "@nomicfoundation/edr-linux-x64-gnu": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.12.0-next.10.tgz", + "integrity": "sha512-I4eaN/ChGPxuJfycjYbUV7SmltxAGNSBJNVxmLj4+eKN30fXo+6fL2X0HdKo3dqkYq3iM/G1j9FXbxZ3ZaK/SQ==", + "dev": true }, - "node_modules/table-layout": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", - "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", - "dev": true, - "peer": true, - "dependencies": { - "array-back": "^4.0.1", - "deep-extend": "~0.6.0", - "typical": "^5.2.0", - "wordwrapjs": "^4.0.0" - }, - "engines": { - "node": ">=8.0.0" - } + "@nomicfoundation/edr-linux-x64-musl": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.12.0-next.10.tgz", + "integrity": "sha512-ruovF/WCs61If5uVBYMYns40ayW6EhdORAbQ5cUEgxN2iaQhUZ6AQNlRFCgIESOiBqDRrQZQIdJC/6pgbFzuCg==", + "dev": true }, - "node_modules/table-layout/node_modules/array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } + "@nomicfoundation/edr-win32-x64-msvc": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.12.0-next.10.tgz", + "integrity": "sha512-5hlqjWIx5bdY7xNdrV9W+0BMbNgkwF/Am/J4Rof6J40Ht/NkKwhzs4XuGujBKCqKVKfvbqKlaexyX1qIPhS8Ag==", + "dev": true }, - "node_modules/table-layout/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "@nomicfoundation/hardhat-errors": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-errors/-/hardhat-errors-3.0.3.tgz", + "integrity": "sha512-qvVIyNE5yXFdwCD7G74fb3j+p5PjYSej/K2mhOuJBhxdGwzARpyoJbcDZrjkNyabytlt95iniZLHHWM9jvVXEA==", "dev": true, - "peer": true, - "engines": { - "node": ">=8" + "requires": { + "@nomicfoundation/hardhat-utils": "^3.0.1" } }, - "node_modules/table/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "@nomicfoundation/hardhat-utils": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-utils/-/hardhat-utils-3.0.4.tgz", + "integrity": "sha512-ZExEZ0ym/oIJoXg1HmrOgIKg0hnkS16bDa5UeRbMCH/cVwcatDYKAmwQwLBhoB2JK8nPjDlYmHxYvjL65QQ1Xw==", "dev": true, - "peer": true, - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "requires": { + "@streamparser/json-node": "^0.0.22", + "debug": "^4.3.2", + "env-paths": "^2.2.0", + "ethereum-cryptography": "^2.2.1", + "fast-equals": "^5.0.1", + "json-stream-stringify": "^3.1.6", + "rfdc": "^1.3.1", + "undici": "^6.16.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "dependencies": { + "@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "dev": true, + "requires": { + "@noble/hashes": "1.4.0" + } + }, + "@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true + }, + "ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "dev": true, + "requires": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, + "undici": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.22.0.tgz", + "integrity": "sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw==", + "dev": true + } } }, - "node_modules/table/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "@nomicfoundation/hardhat-zod-utils": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-zod-utils/-/hardhat-zod-utils-3.0.1.tgz", + "integrity": "sha512-I6/pyYiS9p2lLkzQuedr1ScMocH+ew8l233xTi+LP92gjEiviJDxselpkzgU01MUM0t6BPpfP8yMO958LDEJVg==", "dev": true, - "peer": true, - "engines": { - "node": ">=8" + "requires": { + "@nomicfoundation/hardhat-errors": "^3.0.0", + "@nomicfoundation/hardhat-utils": "^3.0.2" } }, - "node_modules/table/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "@nomicfoundation/slang": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/slang/-/slang-0.17.0.tgz", + "integrity": "sha512-1GlkGRcGpVnjFw9Z1vvDKOKo2mzparFt7qrl2pDxWp+jrVtlvej98yCMX52pVyrYE7ZeOSZFnx/DtsSgoukStQ==", "dev": true, - "peer": true, - "engines": { - "node": ">=8" + "requires": { + "@nomicfoundation/slang-darwin-arm64": "0.17.0", + "@nomicfoundation/slang-darwin-x64": "0.17.0", + "@nomicfoundation/slang-linux-arm64-gnu": "0.17.0", + "@nomicfoundation/slang-linux-arm64-musl": "0.17.0", + "@nomicfoundation/slang-linux-x64-gnu": "0.17.0", + "@nomicfoundation/slang-linux-x64-musl": "0.17.0", + "@nomicfoundation/slang-win32-arm64-msvc": "0.17.0", + "@nomicfoundation/slang-win32-ia32-msvc": "0.17.0", + "@nomicfoundation/slang-win32-x64-msvc": "0.17.0" } }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "peer": true + "@nomicfoundation/slang-darwin-arm64": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/slang-darwin-arm64/-/slang-darwin-arm64-0.17.0.tgz", + "integrity": "sha512-O0q94EUtoWy9A5kOTOa9/khtxXDYnLqmuda9pQELurSiwbQEVCPQL8kb34VbOW+ifdre66JM/05Xw9JWhIZ9sA==", + "dev": true }, - "node_modules/table/node_modules/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, - "peer": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } + "@nomicfoundation/slang-darwin-x64": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/slang-darwin-x64/-/slang-darwin-x64-0.17.0.tgz", + "integrity": "sha512-IaDbHzvT08sBK2HyGzonWhq1uu8IxdjmTqAWHr25Oh/PYnamdi8u4qchZXXYKz/DHLoYN3vIpBXoqLQIomhD/g==", + "dev": true }, - "node_modules/table/node_modules/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, - "peer": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } + "@nomicfoundation/slang-linux-arm64-gnu": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/slang-linux-arm64-gnu/-/slang-linux-arm64-gnu-0.17.0.tgz", + "integrity": "sha512-Lj4anvOsQZxs1SycG8VyT2Rl2oqIhyLSUCgGepTt3CiJ/bM+8r8bLJIgh8vKkki4BWz49YsYIgaJB2IPv8FFTw==", + "dev": true }, - "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dev": true, - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } + "@nomicfoundation/slang-linux-arm64-musl": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/slang-linux-arm64-musl/-/slang-linux-arm64-musl-0.17.0.tgz", + "integrity": "sha512-/xkTCa9d5SIWUBQE3BmLqDFfJRr4yUBwbl4ynPiGUpRXrD69cs6pWKkwjwz/FdBpXqVo36I+zY95qzoTj/YhOA==", + "dev": true }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } + "@nomicfoundation/slang-linux-x64-gnu": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/slang-linux-x64-gnu/-/slang-linux-x64-gnu-0.17.0.tgz", + "integrity": "sha512-oe5IO5vntOqYvTd67deCHPIWuSuWm6aYtT2/0Kqz2/VLtGz4ClEulBSRwfnNzBVtw2nksWipE1w8BzhImI7Syg==", + "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" - } + "@nomicfoundation/slang-linux-x64-musl": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/slang-linux-x64-musl/-/slang-linux-x64-musl-0.17.0.tgz", + "integrity": "sha512-PpYCI5K/kgLAMXaPY0V4VST5gCDprEOh7z/47tbI8kJQumI5odjsj/Cs8MpTo7/uRH6flKYbVNgUzcocWVYrAQ==", + "dev": true }, - "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 + "@nomicfoundation/slang-win32-arm64-msvc": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/slang-win32-arm64-msvc/-/slang-win32-arm64-msvc-0.17.0.tgz", + "integrity": "sha512-u/Mkf7OjokdBilP7QOJj6QYJU4/mjkbKnTX21wLyCIzeVWS7yafRPYpBycKIBj2pRRZ6ceAY5EqRpb0aiCq+0Q==", + "dev": true }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "@nomicfoundation/slang-win32-ia32-msvc": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/slang-win32-ia32-msvc/-/slang-win32-ia32-msvc-0.17.0.tgz", + "integrity": "sha512-XJBVQfNnZQUv0tP2JSJ573S+pmgrLWgqSZOGaMllnB/TL1gRci4Z7dYRJUF2s82GlRJE+FHSI2Ro6JISKmlXCg==", "dev": true }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "peer": true, - "dependencies": { - "readable-stream": "3" - } + "@nomicfoundation/slang-win32-x64-msvc": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/slang-win32-x64-msvc/-/slang-win32-x64-msvc-0.17.0.tgz", + "integrity": "sha512-zPGsAeiTfqfPNYHD8BfrahQmYzA78ZraoHKTGraq/1xwJwzBK4bu/NtvVA4pJjBV+B4L6DCxVhSbpn40q26JQA==", + "dev": true }, - "node_modules/timers-ext": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz", - "integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==", + "@nomicfoundation/solidity-analyzer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", + "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", "dev": true, - "license": "ISC", - "dependencies": { - "es5-ext": "^0.10.64", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.12" + "requires": { + "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.1", + "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.1", + "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1" } }, - "node_modules/tinyglobby": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz", - "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==", + "@nomicfoundation/solidity-analyzer-darwin-arm64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz", + "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==", "dev": true, - "dependencies": { - "fdir": "^6.4.2", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - } + "optional": true }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.4.3", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", - "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", + "@nomicfoundation/solidity-analyzer-darwin-x64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz", + "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==", "dev": true, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } + "optional": true }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "@nomicfoundation/solidity-analyzer-freebsd-x64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz", + "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==", "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/tinyurl": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/tinyurl/-/tinyurl-1.1.7.tgz", - "integrity": "sha512-NCnyDkBTByS/pLH/Vrx/DPL8EciAUDoAvruaM/WnQLfX6Uame3D1nuWNy2Z9CXw7rcsok0tjuonRLolhmyz5rg==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dev": true + "optional": true }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz", + "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==", "dev": true, - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } + "optional": true }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz", + "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==", "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } + "optional": true }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz", + "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==", "dev": true, - "peer": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } + "optional": true }, - "node_modules/tough-cookie/node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "@nomicfoundation/solidity-analyzer-linux-x64-musl": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz", + "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==", "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true + "optional": true }, - "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", - "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==", + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz", + "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==", "dev": true, - "peer": true, - "dependencies": { - "chalk": "^4.1.0", - "command-line-args": "^5.1.1", - "command-line-usage": "^6.1.0", - "string-format": "^2.0.0" - }, - "bin": { - "write-markdown": "dist/write-markdown.js" - } + "optional": true }, - "node_modules/ts-command-line-args/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz", + "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==", "dev": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } + "optional": true }, - "node_modules/ts-command-line-args/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz", + "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==", "dev": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } + "optional": true }, - "node_modules/ts-command-line-args/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } + "@openzeppelin/contracts": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.4.0.tgz", + "integrity": "sha512-eCYgWnLg6WO+X52I16TZt8uEjbtdkgLC0SUX/xnAksjjrQI4Xfn4iBRoI5j55dmlOhDv1Y7BoR3cU7e3WWhC6A==" }, - "node_modules/ts-command-line-args/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "@openzeppelin/upgrades-core": { + "version": "1.37.1", + "resolved": "https://registry.npmjs.org/@openzeppelin/upgrades-core/-/upgrades-core-1.37.1.tgz", + "integrity": "sha512-dMQPDoMn1OUZXsCHT1thnAmkZ14v0FNlst5Ej8MIfujOv0k74kUok5XeuNF42fYewnNUYMkkz3PhXU1OIwSeyg==", "dev": true, - "peer": true - }, - "node_modules/ts-command-line-args/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ts-command-line-args/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "dependencies": { - "has-flag": "^4.0.0" + "requires": { + "@nomicfoundation/slang": "^0.17.0", + "cbor": "^9.0.0", + "chalk": "^4.1.0", + "compare-versions": "^6.0.0", + "debug": "^4.1.1", + "ethereumjs-util": "^7.0.3", + "minimatch": "^9.0.5", + "minimist": "^1.2.7", + "proper-lockfile": "^4.1.1", + "solidity-ast": "^0.4.51" }, - "engines": { - "node": ">=8" + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "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, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "cbor": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.1.tgz", + "integrity": "sha512-/TQOWyamDxvVIv+DY9cOLNuABkoyz8K/F3QE56539pGVYohx0+MEA1f4lChFTX79dBTBS7R1PF6ovH7G+VtBfQ==", + "dev": true, + "requires": { + "nofilter": "^3.1.0" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, - "node_modules/ts-essentials": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", - "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", - "dev": true, - "peer": true, - "peerDependencies": { - "typescript": ">=3.7.0" - } + "@scure/base": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.8.tgz", + "integrity": "sha512-6CyAclxj3Nb0XT7GHK6K4zK6k2xJm6E4Ft0Ohjt4WgegiFUHEtFb2CGzmPmGBwoIhrLsqNLYfLr04Y1GePrzZg==", + "dev": true }, - "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", "dev": true, - "peer": true, - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" + "requires": { + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true + "dependencies": { + "@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "dev": true, + "requires": { + "@noble/hashes": "1.4.0" + } }, - "@swc/wasm": { - "optional": true + "@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true } } }, - "node_modules/ts-node/node_modules/acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", + "@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", "dev": true, - "peer": true, - "bin": { - "acorn": "bin/acorn" + "requires": { + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" }, - "engines": { - "node": ">=0.4.0" + "dependencies": { + "@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true + } } }, - "node_modules/ts-node/node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "@sentry/core": { + "version": "9.46.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-9.46.0.tgz", + "integrity": "sha512-it7JMFqxVproAgEtbLgCVBYtQ9fIb+Bu0JD+cEplTN/Ukpe6GaolyYib5geZqslVxhp2sQgT+58aGvfd/k0N8Q==", + "dev": true + }, + "@streamparser/json": { + "version": "0.0.22", + "resolved": "https://registry.npmjs.org/@streamparser/json/-/json-0.0.22.tgz", + "integrity": "sha512-b6gTSBjJ8G8SuO3Gbbj+zXbVx8NSs1EbpbMKpzGLWMdkR+98McH9bEjSz3+0mPJf68c5nxa3CrJHp5EQNXM6zQ==", + "dev": true + }, + "@streamparser/json-node": { + "version": "0.0.22", + "resolved": "https://registry.npmjs.org/@streamparser/json-node/-/json-node-0.0.22.tgz", + "integrity": "sha512-sJT2ptNRwqB1lIsQrQlCoWk5rF4tif9wDh+7yluAGijJamAhrHGYpFB/Zg3hJeceoZypi74ftXk8DHzwYpbZSg==", "dev": true, - "peer": true, - "engines": { - "node": ">=0.3.1" + "requires": { + "@streamparser/json": "^0.0.22" } }, - "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "@types/debug": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", + "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", "dev": true, - "peer": true + "requires": { + "@types/ms": "*" + } }, - "node_modules/tsort": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", - "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", - "dev": true + "@types/fs-extra": { + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz", + "integrity": "sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==", + "dev": true, + "optional": true, + "requires": { + "@types/jsonfile": "*", + "@types/node": "*" + } }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", "dev": true, - "peer": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" + "requires": { + "@types/minimatch": "*", + "@types/node": "*" } }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "@types/jsonfile": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz", + "integrity": "sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==", "dev": true, - "peer": true + "optional": true, + "requires": { + "@types/node": "*" + } }, - "node_modules/tweetnacl-util": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", - "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "@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/type": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", - "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", - "dev": true, - "license": "ISC" + "@types/ms": { + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", + "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "dev": true }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "@types/node": { + "version": "22.13.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.1.tgz", + "integrity": "sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==", "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" + "requires": { + "undici-types": "~6.20.0" } }, - "node_modules/type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "@types/pbkdf2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", "dev": true, - "peer": true, - "engines": { - "node": ">=4" + "requires": { + "@types/node": "*" } }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "@types/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "requires": { + "@types/node": "*" } }, - "node_modules/typechain": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz", - "integrity": "sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==", - "dev": true, - "peer": true, - "dependencies": { - "@types/prettier": "^2.1.1", - "debug": "^4.3.1", - "fs-extra": "^7.0.0", - "glob": "7.1.7", - "js-sha3": "^0.8.0", - "lodash": "^4.17.15", - "mkdirp": "^1.0.4", - "prettier": "^2.3.1", - "ts-command-line-args": "^2.2.0", - "ts-essentials": "^7.0.1" - }, - "bin": { - "typechain": "dist/cli/cli.js" - }, - "peerDependencies": { - "typescript": ">=4.3.0" + "@types/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*" } }, - "node_modules/typechain/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "peer": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" + "@uniswap/lib": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@uniswap/lib/-/lib-1.1.1.tgz", + "integrity": "sha512-2yK7sLpKIT91TiS5sewHtOa7YuM8IuBXVl4GZv2jZFys4D2sY7K5vZh6MqD25TPA95Od+0YzCVq6cTF2IKrOmg==" + }, + "@uniswap/v2-core": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@uniswap/v2-core/-/v2-core-1.0.0.tgz", + "integrity": "sha512-BJiXrBGnN8mti7saW49MXwxDBRFiWemGetE58q8zgfnPPzQKq55ADltEILqOt6VFZ22kVeVKbF8gVd8aY3l7pA==" + }, + "@uniswap/v2-periphery": { + "version": "1.1.0-beta.0", + "resolved": "https://registry.npmjs.org/@uniswap/v2-periphery/-/v2-periphery-1.1.0-beta.0.tgz", + "integrity": "sha512-6dkwAMKza8nzqYiXEr2D86dgW3TTavUvCR0w2Tu33bAbM8Ah43LKAzH7oKKPRT5VJQaMi1jtkGs1E8JPor1n5g==", + "requires": { + "@uniswap/lib": "1.1.1", + "@uniswap/v2-core": "1.0.0" } }, - "node_modules/typechain/node_modules/glob": { - "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", + "abbrev": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", + "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", + "dev": true + }, + "adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true + }, + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dev": true, - "peer": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "requires": { + "debug": "4" } }, - "node_modules/typechain/node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", "dev": true, - "peer": true + "optional": true }, - "node_modules/typechain/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "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, - "peer": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "requires": { + "color-convert": "^1.9.0" } }, - "node_modules/typechain/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, - "peer": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, - "node_modules/typechain/node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, - "peer": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "requires": { + "sprintf-js": "~1.0.2" } }, - "node_modules/typed-array-buffer": { + "array-buffer-byte-length": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", - "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", "dev": true, - "dependencies": { + "requires": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" + "is-array-buffer": "^3.0.1" } }, - "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", - "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", - "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", + "array.prototype.findlast": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.3.tgz", + "integrity": "sha512-kcBubumjciBg4JKp5KTKtI7ec7tRefPk88yjkWJwaVKYd9QfTaxcsOxoMNKd7iBr447zCfDV0z1kOF47umv42g==", "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", + "requires": { "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" } }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", - "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", "dev": true, - "dependencies": { + "requires": { + "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" } }, - "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 + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true }, - "node_modules/typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, + "axios": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz", + "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==", "dev": true, - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "requires": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.4", + "proxy-from-env": "^1.1.0" }, - "engines": { - "node": ">=12.20" + "dependencies": { + "form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + } + } } }, - "node_modules/typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "axios-debug-log": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/axios-debug-log/-/axios-debug-log-1.0.0.tgz", + "integrity": "sha512-ZjMaEBEij9w+Vbk2Uc3XflchTT7j9rZdYD/snN+XQ5FRDq1QjZNhh0Izb3KSyarU5vTkiCvJyg1xDiQBHZZB9w==", "dev": true, - "peer": true, - "engines": { - "node": ">=8" + "requires": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0" } }, - "node_modules/uglify-js": { - "version": "3.15.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.4.tgz", - "integrity": "sha512-vMOPGDuvXecPs34V74qDKk4iJ/SN4vL3Ow/23ixafENYvtrNvtbcgUeugTcUGRGsOF/5fU8/NYSL5Hyb3l1OJA==", + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base-x": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", + "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", "dev": true, - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" + "requires": { + "safe-buffer": "^5.0.1" } }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", + "dev": true + }, + "bent": { + "version": "7.3.12", + "resolved": "https://registry.npmjs.org/bent/-/bent-7.3.12.tgz", + "integrity": "sha512-T3yrKnVGB63zRuoco/7Ybl7BwwGZR0lceoVG5XmQyMIH9s19SV5m+a8qam4if0zQuAmOQTyPTPmsQBdAorGK3w==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "requires": { + "bytesish": "^0.4.1", + "caseless": "~0.12.0", + "is-stream": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + } } }, - "node_modules/unbzip2-stream": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", - "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + }, "dependencies": { - "buffer": "^5.2.1", - "through": "^2.3.8" + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + } } }, - "node_modules/unbzip2-stream/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "blakejs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.1.tgz", + "integrity": "sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "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.1.13" + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/undici": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.0.tgz", - "integrity": "sha512-fR9RXCc+6Dxav4P9VV/sp5w3eFiSdOjJYsbtWfd4s5L5C4ogyuVpdKIVHeW0vV1MloM65/f7W45nR9ZxwVdyiA==", + "braces": { + "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": { - "busboy": "^1.6.0" - }, - "engines": { - "node": ">=14.0" + "requires": { + "fill-range": "^7.1.1" } }, - "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", "dev": true }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "dev": true, - "engines": { - "node": ">= 4.0.0" + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", "dev": true, - "engines": { - "node": ">= 0.8" + "requires": { + "base-x": "^3.0.2" } }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", "dev": true, - "peer": true, - "dependencies": { - "punycode": "^2.1.0" + "requires": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" } }, - "node_modules/utf-8-validate": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.5.tgz", - "integrity": "sha512-+pnxRYsS/axEpkrrEpzYfNZGXp0IjC/9RIxwM5gntY4Koi8SHmUGSfxfWqxZdRxrtaoVstuOzUp/rbs3JSPELQ==", + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "bufferutil": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.3.tgz", + "integrity": "sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw==", "dev": true, - "hasInstallScript": true, "optional": true, "peer": true, - "dependencies": { + "requires": { "node-gyp-build": "^4.2.0" } }, - "node_modules/utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", - "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", + "bytesish": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/bytesish/-/bytesish-0.4.4.tgz", + "integrity": "sha512-i4uu6M4zuMUiyfZN4RU2+i9+peJh//pXhd9x1oSe1LBkZ3LEbCoygu8W0bXTukU1Jme2txKuotpCZRaC3FLxcQ==", "dev": true }, - "node_modules/util-deprecate": { + "call-bind": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "node_modules/uuid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dev": true, - "peer": true + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "peer": true - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "peer": true, - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/web3-utils": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz", - "integrity": "sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA==", + "call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, - "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" - }, - "engines": { - "node": ">=8.0.0" + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" } }, - "node_modules/web3-utils/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "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": { - "isexe": "^2.0.0" + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", - "dev": true, "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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, + "requires": { + "has-flag": "^3.0.0" + } + } } }, - "node_modules/which-typed-array": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.11.tgz", - "integrity": "sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==", + "cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "requires": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" } }, - "node_modules/widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", "dev": true, - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" + "requires": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" } }, - "node_modules/widest-line/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, - "engines": { - "node": ">=8" + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" } }, - "node_modules/widest-line/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true }, - "node_modules/widest-line/node_modules/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==", + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "node_modules/widest-line/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "cli-color": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz", + "integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==", "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.64", + "es6-iterator": "^2.0.3", + "memoizee": "^0.4.15", + "timers-ext": "^0.1.7" } }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "dev": true, - "engines": { - "node": ">=0.10.0" + "requires": { + "restore-cursor": "^5.0.0" } }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true - }, - "node_modules/wordwrapjs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", - "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", "dev": true, - "peer": true, - "dependencies": { - "reduce-flatten": "^2.0.0", - "typical": "^5.2.0" + "requires": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/wordwrapjs/node_modules/typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/workerpool": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", - "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", - "dev": true - }, - "node_modules/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/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true + }, + "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 + }, + "emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true + }, + "slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "requires": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + } + }, + "string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "requires": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + } + }, + "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, + "requires": { + "ansi-regex": "^6.0.1" + } + } } }, - "node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "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.4" - }, - "engines": { - "node": ">=7.0.0" + "requires": { + "color-name": "1.1.3" } }, - "node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/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" - } + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" + "requires": { + "delayed-stream": "~1.0.0" } }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true }, - "node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true, - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xmlhttprequest": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.4.0" - } + "compare-versions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz", + "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==", + "dev": true }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, - "node_modules/yaml": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", - "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "convert-svg-core": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/convert-svg-core/-/convert-svg-core-0.6.4.tgz", + "integrity": "sha512-8mS0n7otc1lljTte4z7nDhihEakKCRq4w5ivMnIGeOZuD/OV/eDZNNEgGLV1ET3p+rMbnrZnX4lAcsf14WzD5w==", "dev": true, - "bin": { - "yaml": "bin.mjs" + "requires": { + "chalk": "^4.1.2", + "cheerio": "^1.0.0-rc.11", + "commander": "^9.2.0", + "file-url": "^3.0.0", + "get-stdin": "^8.0.0", + "glob": "^8.0.1", + "lodash.omit": "^4.5.0", + "lodash.pick": "^4.4.0", + "pollock": "^0.2.0", + "puppeteer": "^13.7.0", + "tmp": "^0.2.1" }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "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/yargs-unparser/node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "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, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true + }, + "glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + }, + "dependencies": { + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + } } }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "convert-svg-to-png": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/convert-svg-to-png/-/convert-svg-to-png-0.6.4.tgz", + "integrity": "sha512-zHNTuVedkyuhMl+f+HMm2L7+TKDYCKFAqAmDqUr0dN7/xtgYe76PPAydjlFzeLbzEpGtEfhaA15q+ejpLaVo3g==", "dev": true, - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" + "requires": { + "convert-svg-core": "^0.6.4" } }, - "node_modules/yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, - "peer": true, - "engines": { - "node": ">=6" + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" } }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, - "node_modules/zx": { - "version": "8.1.6", - "resolved": "https://registry.npmjs.org/zx/-/zx-8.1.6.tgz", - "integrity": "sha512-SYAriWG+i2CFqMOJcF8QayI8wprlMYQsrmP6tFD7rSPnDLcImNSW7n/8crOYvNVrB2EFgz8LAQk23U1+Y7WrKA==", + "createx": { + "version": "git+ssh://git@github.com/pcaversaccio/createx.git#cbac803268835138f86a69bfe01fcf05a50e0447", + "from": "createx@github:pcaversaccio/createx#v1.0.0" + }, + "cross-fetch": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", "dev": true, - "bin": { - "zx": "build/cli.js" - }, - "engines": { - "node": ">= 12.17.0" - }, - "optionalDependencies": { - "@types/fs-extra": ">=11", - "@types/node": ">=20" + "requires": { + "node-fetch": "2.6.7" } - } - }, - "dependencies": { - "@adraffy/ens-normalize": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", - "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", - "dev": true, - "peer": true - }, - "@aduh95/viz.js": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@aduh95/viz.js/-/viz.js-3.7.0.tgz", - "integrity": "sha512-20Pk2Z98fbPLkECcrZSJszKos/OgtvJJR3NcbVfgCJ6EQjDNzW2P1BKqImOz3tJ952dvO2DWEhcLhQ1Wz1e9ng==", - "dev": true - }, - "@amxx/factory": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@amxx/factory/-/factory-1.0.0.tgz", - "integrity": "sha512-GXos8f4vKWPcphVyF2RU+/4rGvlov2idZSPNzXyIEmkzwLuxa+waTOUjHCvN7cmG0vXM7tyjawXUN1fdgiLvxA==", - "dev": true }, - "@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "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, - "peer": true, "requires": { - "@jridgewell/trace-mapping": "0.3.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "dependencies": { - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "peer": true, "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "isexe": "^2.0.0" } } } }, - "@ethersproject/abi": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", - "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dev": true, "requires": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" } }, - "@ethersproject/abstract-provider": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", - "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", "dev": true, "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0" + "es5-ext": "^0.10.64", + "type": "^2.7.2" } }, - "@ethersproject/abstract-signer": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", - "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "death": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", + "integrity": "sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg=", + "dev": true + }, + "debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "dev": true, "requires": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0" + "ms": "^2.1.3" } }, - "@ethersproject/address": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "define-data-property": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", + "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", "dev": true, "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/rlp": "^5.7.0" + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" } }, - "@ethersproject/base64": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", - "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "define-properties": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", + "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.7.0" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" } }, - "@ethersproject/basex": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", - "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "devtools-protocol": { + "version": "0.0.981744", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", + "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==", + "dev": true + }, + "diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "dev": true + }, + "diff-match-patch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", + "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", + "dev": true + }, + "difflib": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", + "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/properties": "^5.7.0" + "heap": ">= 0.2.0" } }, - "@ethersproject/bignumber": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "bn.js": "^5.2.1" + "path-type": "^4.0.0" }, "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true } } }, - "@ethersproject/bytes": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, "requires": { - "@ethersproject/logger": "^5.7.0" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" } }, - "@ethersproject/constants": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", - "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, "requires": { - "@ethersproject/bignumber": "^5.7.0" + "domelementtype": "^2.3.0" } }, - "@ethersproject/contracts": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", - "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dev": true, "requires": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" } }, - "@ethersproject/hash": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", - "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "dotenv": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", + "dev": true + }, + "dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, "requires": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" } }, - "@ethersproject/hdnode": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, "requires": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" } }, - "@ethersproject/json-wallets": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", - "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", - "dev": true, - "requires": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "aes-js": "3.0.0", - "scrypt-js": "3.0.1" + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "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==", + "dev": true, + "optional": true, + "peer": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } } }, - "@ethersproject/keccak256": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", - "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.7.0", - "js-sha3": "0.8.0" + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" }, "dependencies": { - "js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true } } }, - "@ethersproject/logger": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true }, - "@ethersproject/networks": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", - "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true + }, + "es-abstract": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", + "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", "dev": true, "requires": { - "@ethersproject/logger": "^5.7.0" + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.1", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.11" } }, - "@ethersproject/pbkdf2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", - "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true + }, + "es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/sha2": "^5.7.0" + "es-errors": "^1.3.0" } }, - "@ethersproject/properties": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", - "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, "requires": { - "@ethersproject/logger": "^5.7.0" + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" } }, - "@ethersproject/providers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", - "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", "dev": true, "requires": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0", - "bech32": "1.1.4", - "ws": "7.4.6" + "has": "^1.0.3" } }, - "@ethersproject/random": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", - "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" } }, - "@ethersproject/rlp": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" } }, - "@ethersproject/sha2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", - "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "hash.js": "1.1.7" + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" } }, - "@ethersproject/signing-key": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", - "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "bn.js": "^5.2.1", - "elliptic": "6.5.4", - "hash.js": "1.1.7" - }, - "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true - } - } - }, - "@ethersproject/solidity": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", - "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", - "dev": true, - "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "@ethersproject/strings": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", - "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/transactions": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", - "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", - "dev": true, - "requires": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0" - } - }, - "@ethersproject/units": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", - "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", - "dev": true, - "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "@ethersproject/wallet": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", - "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", - "dev": true, - "requires": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/json-wallets": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "@ethersproject/web": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", - "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", - "dev": true, - "requires": { - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "@ethersproject/wordlists": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", - "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "@iexec/interface": { - "version": "3.0.35-8", - "resolved": "https://registry.npmjs.org/@iexec/interface/-/interface-3.0.35-8.tgz", - "integrity": "sha512-JkO9bpfpTBCOtJz/TEPzFTLlgamv7fll8RUpwC+8P6UWlGGwCe/IvgAeUZzIJ/syXaAhC0KZ7/03BEiee3f8fg==" - }, - "@iexec/solidity": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@iexec/solidity/-/solidity-0.1.1.tgz", - "integrity": "sha512-XLCihhVxsA77Ug9tVnz0uiUAzVdpZGlkSzfoUTLUfYDxUr+iwXJ6zvsBKomnAvvLsRJ0lb4qiBmSMpGtZ9am4w==", - "requires": { - "@openzeppelin/contracts": "3.2.0", - "solstruct": "0.1.0" - }, - "dependencies": { - "@openzeppelin/contracts": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.2.0.tgz", - "integrity": "sha512-bUOmkSoPkjnUyMiKo6RYnb0VHBk5D9KKDAgNLzF41aqAM3TeE0yGdFF5dVRcV60pZdJLlyFT/jjXIZCWyyEzAQ==" - } - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "peer": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true, - "peer": true - }, - "@mudgen/diamond-1": { - "version": "git+ssh://git@github.com/mudgen/diamond-1-hardhat.git#3da037b378195b4108b977cf2014600eeddbf67d", - "from": "@mudgen/diamond-1@github:mudgen/diamond-1-hardhat#3da037b" - }, - "@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", - "dev": true, - "peer": true, - "requires": { - "@noble/hashes": "1.3.2" - } - }, - "@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, - "peer": true - }, - "@noble/secp256k1": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", - "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "d": "^1.0.2", + "ext": "^1.7.0" } }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", "dev": true, "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" } }, - "@nomicfoundation/edr": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.7.0.tgz", - "integrity": "sha512-+Zyu7TE47TGNcPhOfWLPA/zISs32WDMXrhSWdWYyPHDVn/Uux5TVuOeScKb0BR/R8EJ+leR8COUF/EGxvDOVKg==", - "dev": true, - "requires": { - "@nomicfoundation/edr-darwin-arm64": "0.7.0", - "@nomicfoundation/edr-darwin-x64": "0.7.0", - "@nomicfoundation/edr-linux-arm64-gnu": "0.7.0", - "@nomicfoundation/edr-linux-arm64-musl": "0.7.0", - "@nomicfoundation/edr-linux-x64-gnu": "0.7.0", - "@nomicfoundation/edr-linux-x64-musl": "0.7.0", - "@nomicfoundation/edr-win32-x64-msvc": "0.7.0" + "esbuild": { + "version": "0.25.11", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.11.tgz", + "integrity": "sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==", + "dev": true, + "requires": { + "@esbuild/aix-ppc64": "0.25.11", + "@esbuild/android-arm": "0.25.11", + "@esbuild/android-arm64": "0.25.11", + "@esbuild/android-x64": "0.25.11", + "@esbuild/darwin-arm64": "0.25.11", + "@esbuild/darwin-x64": "0.25.11", + "@esbuild/freebsd-arm64": "0.25.11", + "@esbuild/freebsd-x64": "0.25.11", + "@esbuild/linux-arm": "0.25.11", + "@esbuild/linux-arm64": "0.25.11", + "@esbuild/linux-ia32": "0.25.11", + "@esbuild/linux-loong64": "0.25.11", + "@esbuild/linux-mips64el": "0.25.11", + "@esbuild/linux-ppc64": "0.25.11", + "@esbuild/linux-riscv64": "0.25.11", + "@esbuild/linux-s390x": "0.25.11", + "@esbuild/linux-x64": "0.25.11", + "@esbuild/netbsd-arm64": "0.25.11", + "@esbuild/netbsd-x64": "0.25.11", + "@esbuild/openbsd-arm64": "0.25.11", + "@esbuild/openbsd-x64": "0.25.11", + "@esbuild/openharmony-arm64": "0.25.11", + "@esbuild/sunos-x64": "0.25.11", + "@esbuild/win32-arm64": "0.25.11", + "@esbuild/win32-ia32": "0.25.11", + "@esbuild/win32-x64": "0.25.11" } }, - "@nomicfoundation/edr-darwin-arm64": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.7.0.tgz", - "integrity": "sha512-vAH20oh4GaSB/iQFTRcoO8jLc0CLd9XuLY9I7vtcqZWAiM4U1J4Y8cu67PWmtxbvUQOqXR7S6FtAr8/AlWm14g==", - "dev": true - }, - "@nomicfoundation/edr-darwin-x64": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.7.0.tgz", - "integrity": "sha512-WHDdIrPvLlgXQr2eKypBM5xOZAwdxhDAEQIvEMQL8tEEm2qYW2bliUlssBPrs8E3bdivFbe1HizImslMAfU3+g==", - "dev": true - }, - "@nomicfoundation/edr-linux-arm64-gnu": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.7.0.tgz", - "integrity": "sha512-WXpJB54ukz1no7gxCPXVEw9pgl/9UZ/WO3l1ctyv/T7vOygjqA4SUd6kppTs6MNXAuTiisPtvJ/fmvHiMBLrsw==", - "dev": true - }, - "@nomicfoundation/edr-linux-arm64-musl": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.7.0.tgz", - "integrity": "sha512-1iZYOcEgc+zJI7JQrlAFziuy9sBz1WgnIx3HIIu0J7lBRZ/AXeHHgATb+4InqxtEx9O3W8A0s7f11SyFqJL4Aw==", - "dev": true - }, - "@nomicfoundation/edr-linux-x64-gnu": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.7.0.tgz", - "integrity": "sha512-wSjC94WcR5MM8sg9w3OsAmT6+bbmChJw6uJKoXR3qscps/jdhjzJWzfgT0XGRq3XMUfimyafW2RWOyfX3ouhrQ==", - "dev": true - }, - "@nomicfoundation/edr-linux-x64-musl": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.7.0.tgz", - "integrity": "sha512-Us22+AZ7wkG1mZwxqE4S4ZcuwkEA5VrUiBOJSvKHGOgy6vFvB/Euh5Lkp4GovwjrtiXuvyGO2UmtkzymZKDxZw==", - "dev": true - }, - "@nomicfoundation/edr-win32-x64-msvc": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.7.0.tgz", - "integrity": "sha512-HAry0heTsWkzReVtjHwoIq3BgFCvXpVhJ5qPmTnegZGsr/KxqvMmHyDMifzKao4bycU8yrpTSyOiAJt27RWjzQ==", + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true }, - "@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, - "requires": { - "@nomicfoundation/ethereumjs-util": "9.0.4" - } - }, - "@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==", + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, - "@nomicfoundation/ethereumjs-tx": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.4.tgz", - "integrity": "sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-common": "4.0.4", - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "ethereum-cryptography": "0.1.3" - } - }, - "@nomicfoundation/ethereumjs-util": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.4.tgz", - "integrity": "sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==", - "dev": true, - "requires": { - "@nomicfoundation/ethereumjs-rlp": "5.0.4", - "ethereum-cryptography": "0.1.3" - } - }, - "@nomicfoundation/hardhat-chai-matchers": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.8.tgz", - "integrity": "sha512-Z5PiCXH4xhNLASROlSUOADfhfpfhYO6D7Hn9xp8PddmHey0jq704cr6kfU8TRrQ4PUZbpfsZadPj+pCfZdjPIg==", - "dev": true, - "peer": true, - "requires": { - "@types/chai-as-promised": "^7.1.3", - "chai-as-promised": "^7.1.1", - "deep-eql": "^4.0.1", - "ordinal": "^1.0.3" - } - }, - "@nomicfoundation/hardhat-ethers": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.8.tgz", - "integrity": "sha512-zhOZ4hdRORls31DTOqg+GmEZM0ujly8GGIuRY7t7szEk2zW/arY1qDug/py8AEktT00v5K+b6RvbVog+va51IA==", - "dev": true, - "peer": true, - "requires": { - "debug": "^4.1.1", - "lodash.isequal": "^4.5.0" - } - }, - "@nomicfoundation/hardhat-ignition": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition/-/hardhat-ignition-0.15.9.tgz", - "integrity": "sha512-lSWqhaDOBt6gsqMadkRLvH6HdoFV1v8/bx7z+12cghaOloVwwn48CPoTH2iXXnkqilPGw8rdH5eVTE6UM+2v6Q==", + "escodegen": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", + "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", "dev": true, - "peer": true, "requires": { - "@nomicfoundation/ignition-core": "^0.15.9", - "@nomicfoundation/ignition-ui": "^0.15.9", - "chalk": "^4.0.0", - "debug": "^4.3.2", - "fs-extra": "^10.0.0", - "json5": "^2.2.3", - "prompts": "^2.4.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@nomicfoundation/hardhat-ignition-ethers": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition-ethers/-/hardhat-ignition-ethers-0.15.9.tgz", - "integrity": "sha512-9PwwgLv3z2ec3B26mK0IjiFezHFFBcBcs1qKaRu8SanARE4b7RvrfiLIy8ZXE7HaxgPt32kSsQzehhzAwAIj1Q==", - "dev": true, - "peer": true, - "requires": {} - }, - "@nomicfoundation/hardhat-network-helpers": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-1.0.11.tgz", - "integrity": "sha512-uGPL7QSKvxrHRU69dx8jzoBvuztlLCtyFsbgfXIwIjnO3dqZRz2GNMHJoO3C3dIiUNM6jdNF4AUnoQKDscdYrA==", - "dev": true, - "peer": true, - "requires": { - "ethereumjs-util": "^7.1.4" - } - }, - "@nomicfoundation/hardhat-toolbox": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-5.0.0.tgz", - "integrity": "sha512-FnUtUC5PsakCbwiVNsqlXVIWG5JIb5CEZoSXbJUsEBun22Bivx2jhF1/q9iQbzuaGpJKFQyOhemPB2+XlEE6pQ==", - "dev": true, - "requires": {} - }, - "@nomicfoundation/hardhat-verify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.12.tgz", - "integrity": "sha512-Lg3Nu7DCXASQRVI/YysjuAX2z8jwOCbS0w5tz2HalWGSTZThqA0v9N0v0psHbKNqzPJa8bNOeapIVSziyJTnAg==", - "dev": true, - "peer": true, - "requires": { - "@ethersproject/abi": "^5.1.2", - "@ethersproject/address": "^5.0.2", - "cbor": "^8.1.0", - "debug": "^4.1.1", - "lodash.clonedeep": "^4.5.0", - "picocolors": "^1.1.0", - "semver": "^6.3.0", - "table": "^6.8.0", - "undici": "^5.14.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "peer": true - } - } - }, - "@nomicfoundation/ignition-core": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-core/-/ignition-core-0.15.9.tgz", - "integrity": "sha512-X8W+7UP/UQPorpHUnGvA1OdsEr/edGi8tDpNwEqzaLm83FMZVbRWdOsr3vNICHN2XMzNY/xIm18Cx7xGKL2PQw==", - "dev": true, - "peer": true, - "requires": { - "@ethersproject/address": "5.6.1", - "@nomicfoundation/solidity-analyzer": "^0.1.1", - "cbor": "^9.0.0", - "debug": "^4.3.2", - "ethers": "^6.7.0", - "fs-extra": "^10.0.0", - "immer": "10.0.2", - "lodash": "4.17.21", - "ndjson": "2.0.0" - }, - "dependencies": { - "@ethersproject/address": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.1.tgz", - "integrity": "sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==", - "dev": true, - "peer": true, - "requires": { - "@ethersproject/bignumber": "^5.6.2", - "@ethersproject/bytes": "^5.6.1", - "@ethersproject/keccak256": "^5.6.1", - "@ethersproject/logger": "^5.6.0", - "@ethersproject/rlp": "^5.6.1" - } - }, - "cbor": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.2.tgz", - "integrity": "sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==", - "dev": true, - "peer": true, - "requires": { - "nofilter": "^3.1.0" - } - } - } - }, - "@nomicfoundation/ignition-ui": { - "version": "0.15.9", - "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-ui/-/ignition-ui-0.15.9.tgz", - "integrity": "sha512-8lzbT7gpJ5PoowPQDQilkwdyqBviUKDMoHp/5rhgnwG1bDslnCS+Lxuo6s9R2akWu9LtEL14dNyqQb6WsURTag==", - "dev": true, - "peer": true - }, - "@nomicfoundation/slang": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/slang/-/slang-0.17.0.tgz", - "integrity": "sha512-1GlkGRcGpVnjFw9Z1vvDKOKo2mzparFt7qrl2pDxWp+jrVtlvej98yCMX52pVyrYE7ZeOSZFnx/DtsSgoukStQ==", - "dev": true, - "requires": { - "@nomicfoundation/slang-darwin-arm64": "0.17.0", - "@nomicfoundation/slang-darwin-x64": "0.17.0", - "@nomicfoundation/slang-linux-arm64-gnu": "0.17.0", - "@nomicfoundation/slang-linux-arm64-musl": "0.17.0", - "@nomicfoundation/slang-linux-x64-gnu": "0.17.0", - "@nomicfoundation/slang-linux-x64-musl": "0.17.0", - "@nomicfoundation/slang-win32-arm64-msvc": "0.17.0", - "@nomicfoundation/slang-win32-ia32-msvc": "0.17.0", - "@nomicfoundation/slang-win32-x64-msvc": "0.17.0" - } - }, - "@nomicfoundation/slang-darwin-arm64": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/slang-darwin-arm64/-/slang-darwin-arm64-0.17.0.tgz", - "integrity": "sha512-O0q94EUtoWy9A5kOTOa9/khtxXDYnLqmuda9pQELurSiwbQEVCPQL8kb34VbOW+ifdre66JM/05Xw9JWhIZ9sA==", - "dev": true - }, - "@nomicfoundation/slang-darwin-x64": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/slang-darwin-x64/-/slang-darwin-x64-0.17.0.tgz", - "integrity": "sha512-IaDbHzvT08sBK2HyGzonWhq1uu8IxdjmTqAWHr25Oh/PYnamdi8u4qchZXXYKz/DHLoYN3vIpBXoqLQIomhD/g==", - "dev": true - }, - "@nomicfoundation/slang-linux-arm64-gnu": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/slang-linux-arm64-gnu/-/slang-linux-arm64-gnu-0.17.0.tgz", - "integrity": "sha512-Lj4anvOsQZxs1SycG8VyT2Rl2oqIhyLSUCgGepTt3CiJ/bM+8r8bLJIgh8vKkki4BWz49YsYIgaJB2IPv8FFTw==", - "dev": true - }, - "@nomicfoundation/slang-linux-arm64-musl": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/slang-linux-arm64-musl/-/slang-linux-arm64-musl-0.17.0.tgz", - "integrity": "sha512-/xkTCa9d5SIWUBQE3BmLqDFfJRr4yUBwbl4ynPiGUpRXrD69cs6pWKkwjwz/FdBpXqVo36I+zY95qzoTj/YhOA==", - "dev": true - }, - "@nomicfoundation/slang-linux-x64-gnu": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/slang-linux-x64-gnu/-/slang-linux-x64-gnu-0.17.0.tgz", - "integrity": "sha512-oe5IO5vntOqYvTd67deCHPIWuSuWm6aYtT2/0Kqz2/VLtGz4ClEulBSRwfnNzBVtw2nksWipE1w8BzhImI7Syg==", - "dev": true - }, - "@nomicfoundation/slang-linux-x64-musl": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/slang-linux-x64-musl/-/slang-linux-x64-musl-0.17.0.tgz", - "integrity": "sha512-PpYCI5K/kgLAMXaPY0V4VST5gCDprEOh7z/47tbI8kJQumI5odjsj/Cs8MpTo7/uRH6flKYbVNgUzcocWVYrAQ==", - "dev": true - }, - "@nomicfoundation/slang-win32-arm64-msvc": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/slang-win32-arm64-msvc/-/slang-win32-arm64-msvc-0.17.0.tgz", - "integrity": "sha512-u/Mkf7OjokdBilP7QOJj6QYJU4/mjkbKnTX21wLyCIzeVWS7yafRPYpBycKIBj2pRRZ6ceAY5EqRpb0aiCq+0Q==", - "dev": true - }, - "@nomicfoundation/slang-win32-ia32-msvc": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/slang-win32-ia32-msvc/-/slang-win32-ia32-msvc-0.17.0.tgz", - "integrity": "sha512-XJBVQfNnZQUv0tP2JSJ573S+pmgrLWgqSZOGaMllnB/TL1gRci4Z7dYRJUF2s82GlRJE+FHSI2Ro6JISKmlXCg==", - "dev": true - }, - "@nomicfoundation/slang-win32-x64-msvc": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/slang-win32-x64-msvc/-/slang-win32-x64-msvc-0.17.0.tgz", - "integrity": "sha512-zPGsAeiTfqfPNYHD8BfrahQmYzA78ZraoHKTGraq/1xwJwzBK4bu/NtvVA4pJjBV+B4L6DCxVhSbpn40q26JQA==", - "dev": true - }, - "@nomicfoundation/solidity-analyzer": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", - "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", - "dev": true, - "requires": { - "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.1", - "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.1", - "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.1", - "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.1", - "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1" - } - }, - "@nomicfoundation/solidity-analyzer-darwin-arm64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz", - "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-darwin-x64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz", - "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-freebsd-x64": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz", - "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz", - "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-linux-arm64-musl": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz", - "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-linux-x64-gnu": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz", - "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-linux-x64-musl": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz", - "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz", - "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz", - "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==", - "dev": true, - "optional": true - }, - "@nomicfoundation/solidity-analyzer-win32-x64-msvc": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz", - "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==", - "dev": true, - "optional": true - }, - "@openzeppelin/contracts": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.4.0.tgz", - "integrity": "sha512-eCYgWnLg6WO+X52I16TZt8uEjbtdkgLC0SUX/xnAksjjrQI4Xfn4iBRoI5j55dmlOhDv1Y7BoR3cU7e3WWhC6A==" - }, - "@openzeppelin/upgrades-core": { - "version": "1.37.1", - "resolved": "https://registry.npmjs.org/@openzeppelin/upgrades-core/-/upgrades-core-1.37.1.tgz", - "integrity": "sha512-dMQPDoMn1OUZXsCHT1thnAmkZ14v0FNlst5Ej8MIfujOv0k74kUok5XeuNF42fYewnNUYMkkz3PhXU1OIwSeyg==", - "dev": true, - "requires": { - "@nomicfoundation/slang": "^0.17.0", - "cbor": "^9.0.0", - "chalk": "^4.1.0", - "compare-versions": "^6.0.0", - "debug": "^4.1.1", - "ethereumjs-util": "^7.0.3", - "minimatch": "^9.0.5", - "minimist": "^1.2.7", - "proper-lockfile": "^4.1.1", - "solidity-ast": "^0.4.51" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "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, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "cbor": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-9.0.1.tgz", - "integrity": "sha512-/TQOWyamDxvVIv+DY9cOLNuABkoyz8K/F3QE56539pGVYohx0+MEA1f4lChFTX79dBTBS7R1PF6ovH7G+VtBfQ==", - "dev": true, - "requires": { - "nofilter": "^3.1.0" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@scure/base": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.8.tgz", - "integrity": "sha512-6CyAclxj3Nb0XT7GHK6K4zK6k2xJm6E4Ft0Ohjt4WgegiFUHEtFb2CGzmPmGBwoIhrLsqNLYfLr04Y1GePrzZg==", - "dev": true - }, - "@sentry/core": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", - "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", - "dev": true, - "requires": { - "@sentry/hub": "5.30.0", - "@sentry/minimal": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@sentry/hub": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", - "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", - "dev": true, - "requires": { - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@sentry/minimal": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", - "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", - "dev": true, - "requires": { - "@sentry/hub": "5.30.0", - "@sentry/types": "5.30.0", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@sentry/node": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", - "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", - "dev": true, - "requires": { - "@sentry/core": "5.30.0", - "@sentry/hub": "5.30.0", - "@sentry/tracing": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "cookie": "^0.4.1", - "https-proxy-agent": "^5.0.0", - "lru_map": "^0.3.3", - "tslib": "^1.9.3" - }, - "dependencies": { - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@sentry/tracing": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", - "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", - "dev": true, - "requires": { - "@sentry/hub": "5.30.0", - "@sentry/minimal": "5.30.0", - "@sentry/types": "5.30.0", - "@sentry/utils": "5.30.0", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@sentry/types": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", - "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", - "dev": true - }, - "@sentry/utils": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", - "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", - "dev": true, - "requires": { - "@sentry/types": "5.30.0", - "tslib": "^1.9.3" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@solidity-parser/parser": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.14.1.tgz", - "integrity": "sha512-eLjj2L6AuQjBB6s/ibwCAc0DwrR5Ge+ys+wgWo+bviU7fV2nTMQhU63CGaDKXg9iTmMxwhkyoggdIR7ZGRfMgw==", - "dev": true, - "peer": true, - "requires": { - "antlr4ts": "^0.5.0-alpha.4" - } - }, - "@tsconfig/node10": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", - "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true, - "peer": true - }, - "@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "peer": true - }, - "@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "peer": true - }, - "@tsconfig/node16": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", - "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true, - "peer": true - }, - "@typechain/ethers-v6": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz", - "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==", - "dev": true, - "peer": true, - "requires": { - "lodash": "^4.17.15", - "ts-essentials": "^7.0.1" - } - }, - "@typechain/hardhat": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-9.1.0.tgz", - "integrity": "sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==", - "dev": true, - "peer": true, - "requires": { - "fs-extra": "^9.1.0" - }, - "dependencies": { - "fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dev": true, - "peer": true, - "requires": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "peer": true - } - } - }, - "@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/chai": { - "version": "4.3.20", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.20.tgz", - "integrity": "sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==", - "dev": true, - "peer": true - }, - "@types/chai-as-promised": { - "version": "7.1.8", - "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz", - "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==", - "dev": true, - "peer": true, - "requires": { - "@types/chai": "*" - } - }, - "@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, - "requires": { - "@types/node": "*" - } - }, - "@types/debug": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", - "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", - "dev": true, - "requires": { - "@types/ms": "*" - } - }, - "@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, - "requires": { - "@types/node": "*" - } - }, - "@types/fs-extra": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz", - "integrity": "sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==", - "dev": true, - "optional": true, - "requires": { - "@types/jsonfile": "*", - "@types/node": "*" - } - }, - "@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/jsonfile": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz", - "integrity": "sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==", - "dev": true, - "optional": true, - "requires": { - "@types/node": "*" - } - }, - "@types/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", - "dev": true - }, - "@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 - }, - "@types/mocha": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.1.tgz", - "integrity": "sha512-/fvYntiO1GeICvqbQ3doGDIP97vWmvFt83GKguJ6prmQM2iXZfFcq6YE8KteFyRtX2/h5Hf91BYvPodJKFYv5Q==", - "dev": true, - "peer": true - }, - "@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", - "dev": true - }, - "@types/node": { - "version": "22.13.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.1.tgz", - "integrity": "sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==", - "dev": true, - "requires": { - "undici-types": "~6.20.0" - } - }, - "@types/pbkdf2": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", - "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/prettier": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", - "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", - "dev": true, - "peer": true - }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true - }, - "@types/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==", - "dev": true, - "optional": true, - "requires": { - "@types/node": "*" - } - }, - "@uniswap/lib": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@uniswap/lib/-/lib-1.1.1.tgz", - "integrity": "sha512-2yK7sLpKIT91TiS5sewHtOa7YuM8IuBXVl4GZv2jZFys4D2sY7K5vZh6MqD25TPA95Od+0YzCVq6cTF2IKrOmg==" - }, - "@uniswap/v2-core": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@uniswap/v2-core/-/v2-core-1.0.0.tgz", - "integrity": "sha512-BJiXrBGnN8mti7saW49MXwxDBRFiWemGetE58q8zgfnPPzQKq55ADltEILqOt6VFZ22kVeVKbF8gVd8aY3l7pA==" - }, - "@uniswap/v2-periphery": { - "version": "1.1.0-beta.0", - "resolved": "https://registry.npmjs.org/@uniswap/v2-periphery/-/v2-periphery-1.1.0-beta.0.tgz", - "integrity": "sha512-6dkwAMKza8nzqYiXEr2D86dgW3TTavUvCR0w2Tu33bAbM8Ah43LKAzH7oKKPRT5VJQaMi1jtkGs1E8JPor1n5g==", - "requires": { - "@uniswap/lib": "1.1.1", - "@uniswap/v2-core": "1.0.0" - } - }, - "abbrev": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", - "dev": true - }, - "acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "peer": true - }, - "adm-zip": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", - "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", - "dev": true - }, - "aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=", - "dev": true - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - } - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "peer": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true, - "optional": true - }, - "ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "requires": { - "string-width": "^4.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "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, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "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, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "peer": true - }, - "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, - "requires": { - "color-convert": "^1.9.0" - } - }, - "antlr4ts": { - "version": "0.5.0-alpha.4", - "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", - "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==", - "dev": true, - "peer": true - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "peer": true - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true, - "peer": true - }, - "array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "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, - "peer": true - }, - "array.prototype.findlast": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.3.tgz", - "integrity": "sha512-kcBubumjciBg4JKp5KTKtI7ec7tRefPk88yjkWJwaVKYd9QfTaxcsOxoMNKd7iBr447zCfDV0z1kOF47umv42g==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0", - "get-intrinsic": "^1.2.1" - } - }, - "array.prototype.reduce": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", - "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", - "dev": true, - "peer": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4", - "es-array-method-boxes-properly": "^1.0.0", - "is-string": "^1.0.7" - } - }, - "arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", - "dev": true, - "requires": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" - } - }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", - "dev": true, - "peer": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "peer": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true, - "peer": true - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "dev": true, - "peer": true - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "peer": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "dev": true, - "peer": true - }, - "available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true, - "peer": true - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true, - "peer": true - }, - "axios": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.11.0.tgz", - "integrity": "sha512-1Lx3WLFQWm3ooKDYZD1eXmoGO9fxYQjrycfHFC8P0sCfQVXyROp0p9PFWBehewBOdCwHc+f/b8I0fMto5eSfwA==", - "dev": true, - "requires": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.4", - "proxy-from-env": "^1.1.0" - }, - "dependencies": { - "form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - } - } - } - }, - "axios-debug-log": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/axios-debug-log/-/axios-debug-log-1.0.0.tgz", - "integrity": "sha512-ZjMaEBEij9w+Vbk2Uc3XflchTT7j9rZdYD/snN+XQ5FRDq1QjZNhh0Izb3KSyarU5vTkiCvJyg1xDiQBHZZB9w==", - "dev": true, - "requires": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base-x": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", - "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "peer": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", - "dev": true - }, - "bent": { - "version": "7.3.12", - "resolved": "https://registry.npmjs.org/bent/-/bent-7.3.12.tgz", - "integrity": "sha512-T3yrKnVGB63zRuoco/7Ybl7BwwGZR0lceoVG5XmQyMIH9s19SV5m+a8qam4if0zQuAmOQTyPTPmsQBdAorGK3w==", - "dev": true, - "requires": { - "bytesish": "^0.4.1", - "caseless": "~0.12.0", - "is-stream": "^2.0.0" - }, - "dependencies": { - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - } - } - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - } - } - }, - "blakejs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.1.tgz", - "integrity": "sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg==", - "dev": true - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "boxen": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", - "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", - "dev": true, - "requires": { - "ansi-align": "^3.0.0", - "camelcase": "^6.2.0", - "chalk": "^4.1.0", - "cli-boxes": "^2.2.1", - "string-width": "^4.2.2", - "type-fest": "^0.20.2", - "widest-line": "^3.1.0", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "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, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "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, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - } - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "requires": { - "fill-range": "^7.1.1" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", - "dev": true, - "requires": { - "base-x": "^3.0.2" - } - }, - "bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "dev": true, - "requires": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "bufferutil": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/bufferutil/-/bufferutil-4.0.3.tgz", - "integrity": "sha512-yEYTwGndELGvfXsImMBLop58eaGW+YdONi1fNjTINSY98tmMmFijBG6WXgdkfuLNt4imzQNtIE+eBp1PVpMCSw==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "node-gyp-build": "^4.2.0" - } - }, - "busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "dev": true, - "requires": { - "streamsearch": "^1.1.0" - } - }, - "bytesish": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/bytesish/-/bytesish-0.4.4.tgz", - "integrity": "sha512-i4uu6M4zuMUiyfZN4RU2+i9+peJh//pXhd9x1oSe1LBkZ3LEbCoygu8W0bXTukU1Jme2txKuotpCZRaC3FLxcQ==", - "dev": true - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "requires": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - } - }, - "camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "cbor": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", - "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", - "dev": true, - "peer": true, - "requires": { - "nofilter": "^3.1.0" - } - }, - "chai": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", - "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", - "dev": true, - "peer": true, - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.1.0" - } - }, - "chai-as-promised": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz", - "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==", - "dev": true, - "peer": true, - "requires": { - "check-error": "^1.0.2" - } - }, - "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, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "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, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", - "dev": true, - "peer": true - }, - "check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "dev": true, - "peer": true, - "requires": { - "get-func-name": "^2.0.2" - } - }, - "cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", - "dev": true, - "requires": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" - } - }, - "cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - } - }, - "chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "requires": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "fsevents": "~2.3.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", - "dev": true - }, - "cli-color": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/cli-color/-/cli-color-2.0.4.tgz", - "integrity": "sha512-zlnpg0jNcibNrO7GG9IeHH7maWFeCz+Ja1wx/7tZNU5ASSSSZ+/qZciM0/LHCYxSdqv5h2sdbQ/PXYdOuetXvA==", - "dev": true, - "requires": { - "d": "^1.0.1", - "es5-ext": "^0.10.64", - "es6-iterator": "^2.0.3", - "memoizee": "^0.4.15", - "timers-ext": "^0.1.7" - } - }, - "cli-cursor": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", - "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", - "dev": true, - "requires": { - "restore-cursor": "^5.0.0" - } - }, - "cli-table3": { - "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, - "requires": { - "colors": "^1.1.2", - "object-assign": "^4.1.0", - "string-width": "^2.1.1" - }, - "dependencies": { - "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 - }, - "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 - }, - "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, - "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "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, - "requires": { - "ansi-regex": "^3.0.0" - } - } - } - }, - "cli-truncate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", - "dev": true, - "requires": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true - }, - "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 - }, - "emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true - }, - "slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, - "requires": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - } - }, - "string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "requires": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - } - }, - "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, - "requires": { - "ansi-regex": "^6.0.1" - } - } - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", - "dev": true, - "peer": true - }, - "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, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "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 - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "command-exists": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", - "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", - "dev": true - }, - "command-line-args": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", - "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", - "dev": true, - "peer": true, - "requires": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - } - }, - "command-line-usage": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", - "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", - "dev": true, - "peer": true, - "requires": { - "array-back": "^4.0.2", - "chalk": "^2.4.2", - "table-layout": "^1.0.2", - "typical": "^5.2.0" - }, - "dependencies": { - "array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "dev": true, - "peer": true - }, - "typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true, - "peer": true - } - } - }, - "commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "dev": true - }, - "compare-versions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-6.1.0.tgz", - "integrity": "sha512-LNZQXhqUvqUTotpZ00qLSaify3b4VFD588aRr8MKFw4CMUr98ytzCW5wDH5qx/DEY5kCDXcbcRuCqL0szEf2tg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "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, - "peer": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - }, - "dependencies": { - "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, - "requires": { - "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" - } - }, - "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 - }, - "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, - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "convert-svg-core": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/convert-svg-core/-/convert-svg-core-0.6.4.tgz", - "integrity": "sha512-8mS0n7otc1lljTte4z7nDhihEakKCRq4w5ivMnIGeOZuD/OV/eDZNNEgGLV1ET3p+rMbnrZnX4lAcsf14WzD5w==", - "dev": true, - "requires": { - "chalk": "^4.1.2", - "cheerio": "^1.0.0-rc.11", - "commander": "^9.2.0", - "file-url": "^3.0.0", - "get-stdin": "^8.0.0", - "glob": "^8.0.1", - "lodash.omit": "^4.5.0", - "lodash.pick": "^4.4.0", - "pollock": "^0.2.0", - "puppeteer": "^13.7.0", - "tmp": "^0.2.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "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, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", - "dev": true - }, - "glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - } - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "requires": { - "rimraf": "^3.0.0" - } - } - } - }, - "convert-svg-to-png": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/convert-svg-to-png/-/convert-svg-to-png-0.6.4.tgz", - "integrity": "sha512-zHNTuVedkyuhMl+f+HMm2L7+TKDYCKFAqAmDqUr0dN7/xtgYe76PPAydjlFzeLbzEpGtEfhaA15q+ejpLaVo3g==", - "dev": true, - "requires": { - "convert-svg-core": "^0.6.4" - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true, - "peer": true - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "peer": true - }, - "createx": { - "version": "git+ssh://git@github.com/pcaversaccio/createx.git#cbac803268835138f86a69bfe01fcf05a50e0447", - "from": "createx@github:pcaversaccio/createx#v1.0.0" - }, - "cross-fetch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", - "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", - "dev": true, - "requires": { - "node-fetch": "2.6.7" - } - }, - "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, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "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 - }, - "css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "d": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", - "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", - "dev": true, - "requires": { - "es5-ext": "^0.10.64", - "type": "^2.7.2" - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "peer": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "death": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", - "integrity": "sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg=", - "dev": true - }, - "debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "dev": true, - "requires": { - "ms": "^2.1.3" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "peer": true - }, - "deep-eql": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", - "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", - "dev": true, - "peer": true, - "requires": { - "type-detect": "^4.0.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "peer": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", - "dev": true, - "requires": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - } - }, - "define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "devtools-protocol": { - "version": "0.0.981744", - "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.981744.tgz", - "integrity": "sha512-0cuGS8+jhR67Fy7qG3i3Pc7Aw494sb9yG9QgpG97SFVWwolgYjlhJg7n+UaHxOQT30d1TYu/EYe9k01ivLErIg==", - "dev": true - }, - "diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "dev": true - }, - "diff-match-patch": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/diff-match-patch/-/diff-match-patch-1.0.5.tgz", - "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", - "dev": true - }, - "difflib": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", - "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", - "dev": true, - "requires": { - "heap": ">= 0.2.0" - } - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - }, - "dependencies": { - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - } - } - }, - "dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "dev": true, - "requires": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dev": true, - "requires": { - "domelementtype": "^2.3.0" - } - }, - "domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", - "dev": true, - "requires": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - } - }, - "dotenv": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", - "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", - "dev": true - }, - "dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "requires": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "peer": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "encode-utf8": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", - "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==", - "dev": true - }, - "encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "iconv-lite": "^0.6.2" - }, - "dependencies": { - "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==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - } - } - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - }, - "dependencies": { - "ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true - } - } - }, - "entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true - }, - "env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true - }, - "environment": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", - "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", - "dev": true - }, - "es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", - "dev": true, - "requires": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" - } - }, - "es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "dev": true, - "peer": true - }, - "es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true - }, - "es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true - }, - "es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, - "requires": { - "es-errors": "^1.3.0" - } - }, - "es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "requires": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - } - }, - "es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "es5-ext": { - "version": "0.10.64", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", - "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", - "dev": true, - "requires": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "esniff": "^2.0.1", - "next-tick": "^1.1.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-symbol": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", - "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", - "dev": true, - "requires": { - "d": "^1.0.2", - "ext": "^1.7.0" - } - }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escodegen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", - "dev": true, - "requires": { - "esprima": "^2.7.1", - "estraverse": "^1.9.1", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.2.0" - }, - "dependencies": { - "estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", - "dev": true - }, - "source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", - "dev": true, - "optional": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "esniff": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", - "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", - "dev": true, - "requires": { - "d": "^1.0.1", - "es5-ext": "^0.10.62", - "event-emitter": "^0.3.5", - "type": "^2.7.2" - } - }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "eth-gas-reporter": { - "version": "0.2.25", - "resolved": "https://registry.npmjs.org/eth-gas-reporter/-/eth-gas-reporter-0.2.25.tgz", - "integrity": "sha512-1fRgyE4xUB8SoqLgN3eDfpDfwEfRxh2Sz1b7wzFbyQA+9TekMmvSjjoRu9SKcSVyK+vLkLIsVbJDsTWjw195OQ==", - "dev": true, - "peer": true, - "requires": { - "@ethersproject/abi": "^5.0.0-beta.146", - "@solidity-parser/parser": "^0.14.0", - "cli-table3": "^0.5.0", - "colors": "1.4.0", - "ethereum-cryptography": "^1.0.3", - "ethers": "^4.0.40", - "fs-readdir-recursive": "^1.1.0", - "lodash": "^4.17.14", - "markdown-table": "^1.1.3", - "mocha": "^7.1.1", - "req-cwd": "^2.0.0", - "request": "^2.88.0", - "request-promise-native": "^1.0.5", - "sha1": "^1.1.1", - "sync-request": "^6.0.0" + "esprima": "^2.7.1", + "estraverse": "^1.9.1", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.2.0" }, "dependencies": { - "@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, - "peer": true - }, - "@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, - "peer": true, - "requires": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" - } - }, - "@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", - "dev": true, - "peer": true, - "requires": { - "@noble/hashes": "~1.2.0", - "@scure/base": "~1.1.0" - } - }, - "ansi-colors": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", - "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", - "dev": true, - "peer": true - }, - "ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "dev": true, - "peer": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "peer": true - }, - "chokidar": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", - "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", - "dev": true, - "peer": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.1.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.2.0" - } - }, - "cliui": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "peer": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "peer": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "debug": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", - "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", - "dev": true, - "peer": true, - "requires": { - "ms": "^2.1.1" - } - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "dev": true, - "peer": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true, - "peer": true - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "peer": true - }, - "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, - "requires": { - "@noble/hashes": "1.2.0", - "@noble/secp256k1": "1.7.1", - "@scure/bip32": "1.1.5", - "@scure/bip39": "1.1.1" - } - }, - "ethers": { - "version": "4.0.49", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.49.tgz", - "integrity": "sha512-kPltTvWiyu+OktYy1IStSO16i2e7cS9D9OxZ81q2UUaiNPVrm/RTcbxamCXF9VUSKzJIdJV68EAIhTEVBalRWg==", - "dev": true, - "peer": true, - "requires": { - "aes-js": "3.0.0", - "bn.js": "^4.11.9", - "elliptic": "6.5.4", - "hash.js": "1.1.3", - "js-sha3": "0.5.7", - "scrypt-js": "2.0.4", - "setimmediate": "1.0.4", - "uuid": "2.0.1", - "xmlhttprequest": "1.8.0" - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "peer": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "flat": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", - "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", - "dev": true, - "peer": true, - "requires": { - "is-buffer": "~2.0.3" - } + "estraverse": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", + "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", + "dev": true }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "source-map": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", + "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", "dev": true, "optional": true, - "peer": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "peer": true - }, - "glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, - "peer": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "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, - "peer": true - }, - "hash.js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz", - "integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==", - "dev": true, - "peer": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.0" - } - }, - "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 - }, - "js-yaml": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", - "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", - "dev": true, - "peer": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "peer": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dev": true, - "peer": true, - "requires": { - "chalk": "^2.4.2" - } - }, - "mocha": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", - "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", - "dev": true, - "peer": true, - "requires": { - "ansi-colors": "3.2.3", - "browser-stdout": "1.3.1", - "chokidar": "3.3.0", - "debug": "3.2.6", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "find-up": "3.0.0", - "glob": "7.1.3", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "3.13.1", - "log-symbols": "3.0.0", - "minimatch": "3.0.4", - "mkdirp": "0.5.5", - "ms": "2.1.1", - "node-environment-flags": "1.0.6", - "object.assign": "4.1.0", - "strip-json-comments": "2.0.1", - "supports-color": "6.0.0", - "which": "1.3.1", - "wide-align": "1.1.3", - "yargs": "13.3.2", - "yargs-parser": "13.1.2", - "yargs-unparser": "1.6.0" - } - }, - "ms": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", - "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", - "dev": true, - "peer": true - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "peer": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "peer": true, - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "peer": true - }, - "readdirp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", - "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", - "dev": true, - "peer": true, - "requires": { - "picomatch": "^2.0.4" - } - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true, - "peer": true - }, - "scrypt-js": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", - "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==", - "dev": true, - "peer": true - }, - "setimmediate": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha512-/TjEmXQVEzdod/FFskf3o7oOAsGhHf2j1dZqRFbDzq4F3mvvxflIIi4Hd3bLQE9y/CpwqfSQam5JakI/mi3Pog==", - "dev": true, - "peer": true - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "peer": true, - "requires": { - "ansi-regex": "^4.1.0" - } - }, - "supports-color": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", - "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "which-module": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", - "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", - "dev": true, - "peer": true - }, - "wide-align": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", - "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", - "dev": true, - "peer": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "peer": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true, - "peer": true - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "peer": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "peer": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - } - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "peer": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - }, - "yargs-unparser": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", - "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", - "dev": true, - "peer": true, "requires": { - "flat": "^4.1.0", - "lodash": "^4.17.15", - "yargs": "^13.3.0" + "amdefine": ">=0.0.4" } } } }, + "esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", + "dev": true, + "requires": { + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, "ethereum-bloom-filters": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", @@ -17022,33 +12094,6 @@ "setimmediate": "^1.0.5" } }, - "ethereumjs-abi": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", - "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", - "dev": true, - "requires": { - "bn.js": "^4.11.8", - "ethereumjs-util": "^6.0.0" - }, - "dependencies": { - "ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", - "dev": true, - "requires": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" - } - } - } - }, "ethereumjs-util": { "version": "7.1.5", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", @@ -17079,56 +12124,6 @@ } } }, - "ethers": { - "version": "6.13.5", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.5.tgz", - "integrity": "sha512-+knKNieu5EKRThQJWwqaJ10a6HE9sSehGeqWN65//wE7j47ZpFhKAnHB/JJFibwwg61I/koxaPsXbXpD/skNOQ==", - "dev": true, - "peer": true, - "requires": { - "@adraffy/ens-normalize": "1.10.1", - "@noble/curves": "1.2.0", - "@noble/hashes": "1.3.2", - "@types/node": "22.7.5", - "aes-js": "4.0.0-beta.5", - "tslib": "2.7.0", - "ws": "8.17.1" - }, - "dependencies": { - "@types/node": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", - "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", - "dev": true, - "peer": true, - "requires": { - "undici-types": "~6.19.2" - } - }, - "aes-js": { - "version": "4.0.0-beta.5", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", - "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", - "dev": true, - "peer": true - }, - "undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "dev": true, - "peer": true - }, - "ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "dev": true, - "peer": true, - "requires": {} - } - } - }, "ethjs-unit": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", @@ -17147,16 +12142,6 @@ } } }, - "ethjs-util": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", - "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", - "dev": true, - "requires": { - "is-hex-prefixed": "1.0.0", - "strip-hex-prefix": "1.0.0" - } - }, "event-emitter": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", @@ -17223,13 +12208,6 @@ "type": "^2.7.2" } }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true, - "peer": true - }, "extract-zip": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", @@ -17253,19 +12231,11 @@ } } }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true, - "peer": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true, - "peer": true + "fast-equals": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/fast-equals/-/fast-equals-5.3.2.tgz", + "integrity": "sha512-6rxyATwPCkaFIL3JLqw8qXqMpIZ942pTX/tbQFkRsDGblS8tNGtlUauA/+mt6RUfqn/4MoEr+WDkYoIQbibWuQ==", + "dev": true }, "fast-glob": { "version": "3.3.1", @@ -17280,26 +12250,12 @@ "micromatch": "^4.0.4" } }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "peer": true - }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", "dev": true }, - "fast-uri": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", - "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", - "dev": true, - "peer": true - }, "fastq": { "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", @@ -17333,16 +12289,6 @@ "to-regex-range": "^5.0.1" } }, - "find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "dev": true, - "peer": true, - "requires": { - "array-back": "^3.0.1" - } - }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -17412,31 +12358,6 @@ "is-callable": "^1.1.3" } }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true, - "peer": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "peer": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "fp-ts": { - "version": "1.19.3", - "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", - "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", - "dev": true - }, "fs-constants": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", @@ -17462,13 +12383,6 @@ } } }, - "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 - }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -17476,9 +12390,9 @@ "dev": true }, "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, "optional": true }, @@ -17512,13 +12426,6 @@ "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", "dev": true }, - "get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", - "dev": true, - "peer": true - }, "get-intrinsic": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", @@ -17537,13 +12444,6 @@ "math-intrinsics": "^1.1.0" } }, - "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 - }, "get-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", @@ -17570,14 +12470,13 @@ "get-intrinsic": "^1.1.1" } }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "get-tsconfig": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz", + "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==", "dev": true, - "peer": true, "requires": { - "assert-plus": "^1.0.0" + "resolve-pkg-maps": "^1.0.0" } }, "ghost-testrpc": { @@ -17676,13 +12575,6 @@ "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", "dev": true }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "dev": true, - "peer": true - }, "handlebars": { "version": "4.7.7", "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", @@ -17704,129 +12596,52 @@ } } }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true, - "peer": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "hardhat": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-3.0.10.tgz", + "integrity": "sha512-y9vZfK7NqdJQaIyBL7tZHh57rHzdm6vymJK2XatFY49fWi55QC8dn7C6R3JkpYH6eJ/lOolC06UBy/mhzNyO+g==", "dev": true, - "peer": true, "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "hardhat": { - "version": "2.22.18", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.22.18.tgz", - "integrity": "sha512-2+kUz39gvMo56s75cfLBhiFedkQf+gXdrwCcz4R/5wW0oBdwiyfj2q9BIkMoaA0WIGYYMU2I1Cc4ucTunhfjzw==", - "dev": true, - "requires": { - "@ethersproject/abi": "^5.1.2", - "@metamask/eth-sig-util": "^4.0.0", - "@nomicfoundation/edr": "^0.7.0", - "@nomicfoundation/ethereumjs-common": "4.0.4", - "@nomicfoundation/ethereumjs-tx": "5.0.4", - "@nomicfoundation/ethereumjs-util": "9.0.4", - "@nomicfoundation/solidity-analyzer": "^0.1.0", - "@sentry/node": "^5.18.1", - "@types/bn.js": "^5.1.0", - "@types/lru-cache": "^5.1.0", + "@nomicfoundation/edr": "0.12.0-next.10", + "@nomicfoundation/hardhat-errors": "^3.0.3", + "@nomicfoundation/hardhat-utils": "^3.0.4", + "@nomicfoundation/hardhat-zod-utils": "^3.0.1", + "@nomicfoundation/solidity-analyzer": "^0.1.1", + "@sentry/core": "^9.4.0", "adm-zip": "^0.4.16", - "aggregate-error": "^3.0.0", - "ansi-escapes": "^4.3.0", - "boxen": "^5.1.2", - "chokidar": "^4.0.0", - "ci-info": "^2.0.0", - "debug": "^4.1.1", + "chalk": "^5.3.0", + "chokidar": "^4.0.3", + "debug": "^4.3.2", "enquirer": "^2.3.0", - "env-paths": "^2.2.0", - "ethereum-cryptography": "^1.0.3", - "ethereumjs-abi": "^0.6.8", - "find-up": "^5.0.0", - "fp-ts": "1.19.3", - "fs-extra": "^7.0.1", - "immutable": "^4.0.0-rc.12", - "io-ts": "1.10.4", - "json-stream-stringify": "^3.1.4", - "keccak": "^3.0.2", - "lodash": "^4.17.11", - "mnemonist": "^0.38.0", - "mocha": "^10.0.0", - "p-map": "^4.0.0", - "picocolors": "^1.1.0", - "raw-body": "^2.4.1", - "resolve": "1.17.0", - "semver": "^6.3.0", - "solc": "0.8.26", - "source-map-support": "^0.5.13", - "stacktrace-parser": "^0.1.10", - "tinyglobby": "^0.2.6", - "tsort": "0.0.1", - "undici": "^5.14.0", - "uuid": "^8.3.2", - "ws": "^7.4.6" - }, - "dependencies": { - "@metamask/eth-sig-util": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", - "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", + "ethereum-cryptography": "^2.2.1", + "micro-eth-signer": "^0.14.0", + "p-map": "^7.0.2", + "resolve.exports": "^2.0.3", + "semver": "^7.6.3", + "tsx": "^4.19.3", + "ws": "^8.18.0", + "zod": "^3.23.8" + }, + "dependencies": { + "@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", "dev": true, "requires": { - "ethereumjs-abi": "^0.6.8", - "ethereumjs-util": "^6.2.1", - "ethjs-util": "^0.1.6", - "tweetnacl": "^1.0.3", - "tweetnacl-util": "^0.15.1" + "@noble/hashes": "1.4.0" } }, "@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==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", "dev": true }, - "@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, - "requires": { - "@noble/hashes": "~1.2.0", - "@noble/secp256k1": "~1.7.0", - "@scure/base": "~1.1.0" - } - }, - "@scure/bip39": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", - "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", - "dev": true, - "requires": { - "@noble/hashes": "~1.2.0", - "@scure/base": "~1.1.0" - } - }, - "@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true }, "chokidar": { @@ -17838,116 +12653,16 @@ "readdirp": "^4.0.1" } }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, "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, - "requires": { - "@noble/hashes": "1.2.0", - "@noble/secp256k1": "1.7.1", - "@scure/bip32": "1.1.5", - "@scure/bip39": "1.1.1" - } - }, - "ethereumjs-util": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", - "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", - "dev": true, - "requires": { - "@types/bn.js": "^4.11.3", - "bn.js": "^4.11.0", - "create-hash": "^1.1.2", - "elliptic": "^6.5.2", - "ethereum-cryptography": "^0.1.3", - "ethjs-util": "0.1.6", - "rlp": "^2.2.3" - }, - "dependencies": { - "@types/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "dev": true, - "requires": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" - } - } - } - }, - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", "dev": true, "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" } }, "readdirp": { @@ -17956,50 +12671,18 @@ "integrity": "sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==", "dev": true }, - "resolve": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", - "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - }, - "tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true + "ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "dev": true, + "requires": {} } } }, @@ -18167,18 +12850,6 @@ } } }, - "hardhat-gas-reporter": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/hardhat-gas-reporter/-/hardhat-gas-reporter-1.0.9.tgz", - "integrity": "sha512-INN26G3EW43adGKBNzYWOlI3+rlLnasXTwW79YNnUhXPDa+yHESgt639dJEs37gCjhkbNKcRRJnomXEuMFBXJg==", - "dev": true, - "peer": true, - "requires": { - "array-uniq": "1.0.3", - "eth-gas-reporter": "^0.2.25", - "sha1": "^1.1.1" - } - }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -18295,50 +12966,6 @@ "entities": "^4.4.0" } }, - "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, - "requires": { - "caseless": "^0.12.0", - "concat-stream": "^1.6.2", - "http-response-object": "^3.0.1", - "parse-cache-control": "^1.0.1" - } - }, - "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, - "requires": { - "@types/node": "^10.0.3" - }, - "dependencies": { - "@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 - } - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "peer": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, "https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -18361,15 +12988,6 @@ "integrity": "sha512-sqbjZKK7kf44hfdE94EoX8MZNk0n7HeW37O4YrVGCF4wzgQjp+akPAkfUK5LZ6KuR/6sqeAVuXHji+RzQgOn5A==", "dev": true }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, "ieee754": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", @@ -18382,31 +13000,12 @@ "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true }, - "immer": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.2.tgz", - "integrity": "sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA==", - "dev": true, - "peer": true - }, - "immutable": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", - "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", - "dev": true - }, "imul": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/imul/-/imul-1.0.1.tgz", "integrity": "sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==", "dev": true }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", @@ -18443,17 +13042,8 @@ "interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true - }, - "io-ts": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", - "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", - "dev": true, - "requires": { - "fp-ts": "^1.0.0" - } + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true }, "is-array-buffer": { "version": "3.0.2", @@ -18494,13 +13084,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-buffer": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", - "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", - "dev": true, - "peer": true - }, "is-callable": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", @@ -18528,16 +13111,6 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "peer": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", @@ -18626,13 +13199,6 @@ "which-typed-array": "^1.1.11" } }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true, - "peer": true - }, "is-unicode-supported": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", @@ -18648,39 +13214,18 @@ "call-bind": "^1.0.2" } }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true, - "peer": true - }, "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true, - "peer": true - }, "js-graph-algorithms": { "version": "1.0.18", "resolved": "https://registry.npmjs.org/js-graph-algorithms/-/js-graph-algorithms-1.0.18.tgz", "integrity": "sha512-Gu1wtWzXBzGeye/j9BuyplGHscwqKRZodp/0M1vyBc19RJpblSwKGu099KwwaTx9cRIV+Qupk8xUMfEiGfFqSA==", "dev": true }, - "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=", - "dev": true, - "peer": true - }, "js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", @@ -18699,47 +13244,12 @@ } } }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true, - "peer": true - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true, - "peer": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "peer": true - }, "json-stream-stringify": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/json-stream-stringify/-/json-stream-stringify-3.1.6.tgz", "integrity": "sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==", "dev": true }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true, - "peer": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "peer": true - }, "jsonfile": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", @@ -18764,19 +13274,6 @@ "integrity": "sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw==", "dev": true }, - "jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dev": true, - "peer": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, "keccak": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz", @@ -18794,13 +13291,6 @@ "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "peer": true - }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -18938,27 +13428,6 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "dev": true, - "peer": true - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "dev": true, - "peer": true - }, - "lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", - "dev": true, - "peer": true - }, "lodash.omit": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", @@ -18971,13 +13440,6 @@ "integrity": "sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q==", "dev": true }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true, - "peer": true - }, "log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -19131,22 +13593,6 @@ } } }, - "loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", - "dev": true, - "peer": true, - "requires": { - "get-func-name": "^2.0.1" - } - }, - "lru_map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", - "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", - "dev": true - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -19165,20 +13611,6 @@ "es5-ext": "~0.10.2" } }, - "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, - "peer": true - }, - "markdown-table": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-1.1.3.tgz", - "integrity": "sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==", - "dev": true, - "peer": true - }, "match-all": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/match-all/-/match-all-1.2.6.tgz", @@ -19218,12 +13650,6 @@ "timers-ext": "^0.1.7" } }, - "memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "dev": true - }, "merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -19236,6 +13662,51 @@ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true }, + "micro-eth-signer": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/micro-eth-signer/-/micro-eth-signer-0.14.0.tgz", + "integrity": "sha512-5PLLzHiVYPWClEvZIXXFu5yutzpadb73rnQCpUqIHu3No3coFuWQNfE5tkBQJ7djuLYl6aRLaS0MgWJYGoqiBw==", + "dev": true, + "requires": { + "@noble/curves": "~1.8.1", + "@noble/hashes": "~1.7.1", + "micro-packed": "~0.7.2" + }, + "dependencies": { + "@noble/curves": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.8.2.tgz", + "integrity": "sha512-vnI7V6lFNe0tLAuJMu+2sX+FcL14TaCWy1qiczg1VwRmPrpQCdq5ESXQMqUc2tluRNf6irBXrWbl1mGN8uaU/g==", + "dev": true, + "requires": { + "@noble/hashes": "1.7.2" + } + }, + "@noble/hashes": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz", + "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==", + "dev": true + } + } + }, + "micro-packed": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/micro-packed/-/micro-packed-0.7.3.tgz", + "integrity": "sha512-2Milxs+WNC00TRlem41oRswvw31146GiSaoCT7s3Xi2gMUglW5QBeqlQaZeHr5tJx9nm3i57LNXPqxOOaWtTYg==", + "dev": true, + "requires": { + "@scure/base": "~1.2.5" + }, + "dependencies": { + "@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", + "dev": true + } + } + }, "micromatch": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", @@ -19315,15 +13786,6 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "dev": true }, - "mnemonist": { - "version": "0.38.5", - "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", - "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", - "dev": true, - "requires": { - "obliterator": "^2.0.0" - } - }, "mocha": { "version": "10.7.3", "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.3.tgz", @@ -19526,20 +13988,6 @@ "imul": "^1.0.0" } }, - "ndjson": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-2.0.0.tgz", - "integrity": "sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==", - "dev": true, - "peer": true, - "requires": { - "json-stringify-safe": "^5.0.1", - "minimist": "^1.2.5", - "readable-stream": "^3.6.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - } - }, "neo-async": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", @@ -19567,17 +14015,6 @@ "lodash": "^4.17.21" } }, - "node-environment-flags": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", - "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", - "dev": true, - "peer": true, - "requires": { - "object.getownpropertydescriptors": "^2.0.3", - "semver": "^5.7.0" - } - }, "node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -19640,13 +14077,6 @@ "boolbase": "^1.0.0" } }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", - "dev": true, - "peer": true - }, "number-to-bn": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", @@ -19665,20 +14095,6 @@ } } }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true, - "peer": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true, - "peer": true - }, "object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -19703,26 +14119,6 @@ "object-keys": "^1.1.1" } }, - "object.getownpropertydescriptors": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.6.tgz", - "integrity": "sha512-lq+61g26E/BgHv0ZTFgRvi7NMEPuAxLkFU7rukXjc/AlwH4Am5xXVnIXy3un1bg/JPbXHrixRkK1itUzzPiIjQ==", - "dev": true, - "peer": true, - "requires": { - "array.prototype.reduce": "^1.0.5", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.21.2", - "safe-array-concat": "^1.0.0" - } - }, - "obliterator": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", - "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", - "dev": true - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -19755,19 +14151,6 @@ "word-wrap": "~1.2.3" } }, - "ordinal": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/ordinal/-/ordinal-1.0.3.tgz", - "integrity": "sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==", - "dev": true, - "peer": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true - }, "p-limit": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", @@ -19787,13 +14170,10 @@ } }, "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", + "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", + "dev": true }, "p-try": { "version": "2.2.0", @@ -19801,13 +14181,6 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, - "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 - }, "parse5": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", @@ -19851,13 +14224,6 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "dev": true, - "peer": true - }, "pbkdf2": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", @@ -19877,19 +14243,6 @@ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true, - "peer": true - }, - "picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true - }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -19957,40 +14310,12 @@ } } }, - "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 - }, "progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, - "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, - "requires": { - "asap": "~2.0.6" - } - }, - "prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "peer": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, "proper-lockfile": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", @@ -20008,13 +14333,6 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "dev": true }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true, - "peer": true - }, "puml-for-markdown": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/puml-for-markdown/-/puml-for-markdown-1.2.1.tgz", @@ -20049,13 +14367,6 @@ "once": "^1.3.1" } }, - "punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", - "dev": true, - "peer": true - }, "puppeteer": { "version": "13.7.0", "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-13.7.0.tgz", @@ -20128,13 +14439,6 @@ } } }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true, - "peer": true - }, "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -20176,130 +14480,27 @@ "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "dev": true, "requires": { - "resolve": "^1.1.6" - } - }, - "recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", - "dev": true, - "requires": { - "minimatch": "3.0.4" - } - }, - "reduce-flatten": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", - "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", - "dev": true, - "peer": true - }, - "regexp.prototype.flags": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", - "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - } - }, - "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, - "requires": { - "req-from": "^2.0.0" - } - }, - "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, - "requires": { - "resolve-from": "^3.0.0" - }, - "dependencies": { - "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 - } - } - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "peer": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true, - "peer": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true, - "peer": true - } + "resolve": "^1.1.6" } }, - "request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "recursive-readdir": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", + "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", "dev": true, - "peer": true, "requires": { - "lodash": "^4.17.19" + "minimatch": "3.0.4" } }, - "request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "regexp.prototype.flags": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dev": true, - "peer": true, "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" } }, "require-directory": { @@ -20308,13 +14509,6 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "peer": true - }, "resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", @@ -20325,6 +14519,18 @@ "path-parse": "^1.0.6" } }, + "resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true + }, + "resolve.exports": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", + "dev": true + }, "restore-cursor": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", @@ -20444,7 +14650,9 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "sc-istanbul": { "version": "0.4.6", @@ -20512,12 +14720,6 @@ "node-gyp-build": "^4.2.0" } }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, "serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -20527,13 +14729,6 @@ "randombytes": "^2.1.0" } }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true, - "peer": true - }, "set-function-name": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", @@ -20561,17 +14756,6 @@ "safe-buffer": "^5.0.1" } }, - "sha1": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/sha1/-/sha1-1.1.1.tgz", - "integrity": "sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==", - "dev": true, - "peer": true, - "requires": { - "charenc": ">= 0.0.1", - "crypt": ">= 0.0.1" - } - }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -20615,67 +14799,12 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true, - "peer": true - }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "peer": true - } - } - }, "sol2uml": { "version": "2.5.22", "resolved": "https://registry.npmjs.org/sol2uml/-/sol2uml-2.5.22.tgz", @@ -21191,35 +15320,6 @@ } } }, - "solc": { - "version": "0.8.26", - "resolved": "https://registry.npmjs.org/solc/-/solc-0.8.26.tgz", - "integrity": "sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g==", - "dev": true, - "requires": { - "command-exists": "^1.2.8", - "commander": "^8.1.0", - "follow-redirects": "^1.12.1", - "js-sha3": "0.8.0", - "memorystream": "^0.3.1", - "semver": "^5.5.0", - "tmp": "0.0.33" - }, - "dependencies": { - "commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "dev": true - }, - "js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true - } - } - }, "solidity-ast": { "version": "0.4.52", "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.52.tgz", @@ -21314,88 +15414,12 @@ "resolved": "https://registry.npmjs.org/solstruct/-/solstruct-0.1.0.tgz", "integrity": "sha512-7XiFF2g3R08tsfhhZfKbKheNC0A5lsdAxk5R2HVPzT/kwenTh8AUzmQoc10xw+zXO813KRRLK3t65KqgUE2T4w==" }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "dev": true, - "peer": true, - "requires": { - "readable-stream": "^3.0.0" - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, - "peer": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stacktrace-parser": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", - "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", - "dev": true, - "requires": { - "type-fest": "^0.7.1" - }, - "dependencies": { - "type-fest": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", - "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", - "dev": true - } - } - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", - "dev": true, - "peer": true - }, - "streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "dev": true - }, "string_decoder": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", @@ -21411,25 +15435,6 @@ "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true }, - "string-format": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", - "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", - "dev": true, - "peer": true - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "peer": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, "string.prototype.trim": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", @@ -21463,16 +15468,6 @@ "es-abstract": "^1.22.1" } }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "peer": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, "strip-final-newline": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", @@ -21488,13 +15483,6 @@ "is-hex-prefixed": "1.0.0" } }, - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", - "dev": true, - "peer": true - }, "supports-color": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", @@ -21504,129 +15492,6 @@ "has-flag": "^1.0.0" } }, - "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, - "requires": { - "http-response-object": "^3.0.1", - "sync-rpc": "^1.2.1", - "then-request": "^6.0.0" - } - }, - "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, - "requires": { - "get-port": "^3.1.0" - } - }, - "table": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", - "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", - "dev": true, - "peer": true, - "requires": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "dependencies": { - "ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "dev": true, - "peer": true, - "requires": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "peer": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "peer": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true, - "peer": true - }, - "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, - "peer": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "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, - "peer": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, - "table-layout": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", - "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", - "dev": true, - "peer": true, - "requires": { - "array-back": "^4.0.1", - "deep-extend": "~0.6.0", - "typical": "^5.2.0", - "wordwrapjs": "^4.0.0" - }, - "dependencies": { - "array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", - "dev": true, - "peer": true - }, - "typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true, - "peer": true - } - } - }, "tar-fs": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", @@ -21652,84 +15517,20 @@ "readable-stream": "^3.1.1" } }, - "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, - "requires": { - "@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" - }, - "dependencies": { - "@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 - } - } - }, "through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, - "through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "dev": true, - "peer": true, - "requires": { - "readable-stream": "3" - } - }, "timers-ext": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz", - "integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==", - "dev": true, - "requires": { - "es5-ext": "^0.10.64", - "next-tick": "^1.1.0" - } - }, - "tinyglobby": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz", - "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==", + "integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==", "dev": true, "requires": { - "fdir": "^6.4.2", - "picomatch": "^4.0.2" - }, - "dependencies": { - "fdir": { - "version": "6.4.3", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", - "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", - "dev": true, - "requires": {} - }, - "picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true - } + "es5-ext": "^0.10.64", + "next-tick": "^1.1.0" } }, "tinyurl": { @@ -21738,15 +15539,6 @@ "integrity": "sha512-NCnyDkBTByS/pLH/Vrx/DPL8EciAUDoAvruaM/WnQLfX6Uame3D1nuWNy2Z9CXw7rcsok0tjuonRLolhmyz5rg==", "dev": true }, - "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.2" - } - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -21756,184 +15548,23 @@ "is-number": "^7.0.0" } }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "peer": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "dependencies": { - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "peer": true - } - } - }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", "dev": true }, - "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", - "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==", - "dev": true, - "peer": true, - "requires": { - "chalk": "^4.1.0", - "command-line-args": "^5.1.1", - "command-line-usage": "^6.1.0", - "string-format": "^2.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "peer": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "peer": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "peer": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "peer": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "peer": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "peer": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "ts-essentials": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", - "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", - "dev": true, - "peer": true, - "requires": {} - }, - "ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", - "dev": true, - "peer": true, - "requires": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "dependencies": { - "acorn": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz", - "integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==", - "dev": true, - "peer": true - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "peer": true - } - } - }, - "tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", - "dev": true, - "peer": true - }, - "tsort": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", - "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "tsx": { + "version": "4.20.6", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz", + "integrity": "sha512-ytQKuwgmrrkDTFP4LjR0ToE2nqgy886GpvRSpU0JAnrdBYppuY5rLkRUYPU1yCryb24SsKBTL/hlDQAEFVwtZg==", "dev": true, - "peer": true, "requires": { - "safe-buffer": "^5.0.1" + "esbuild": "~0.25.0", + "fsevents": "~2.3.3", + "get-tsconfig": "^4.7.5" } }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true, - "peer": true - }, - "tweetnacl-util": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", - "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", - "dev": true - }, "type": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", @@ -21949,98 +15580,6 @@ "prelude-ls": "~1.1.2" } }, - "type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "dev": true, - "peer": true - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "typechain": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz", - "integrity": "sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==", - "dev": true, - "peer": true, - "requires": { - "@types/prettier": "^2.1.1", - "debug": "^4.3.1", - "fs-extra": "^7.0.0", - "glob": "7.1.7", - "js-sha3": "^0.8.0", - "lodash": "^4.17.15", - "mkdirp": "^1.0.4", - "prettier": "^2.3.1", - "ts-command-line-args": "^2.2.0", - "ts-essentials": "^7.0.1" - }, - "dependencies": { - "fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", - "dev": true, - "peer": true, - "requires": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "peer": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true, - "peer": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "peer": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "peer": true - }, - "prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", - "dev": true, - "peer": true - } - } - }, "typed-array-buffer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", @@ -22088,13 +15627,6 @@ "is-typed-array": "^1.1.9" } }, - "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 - }, "typescript": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", @@ -22102,13 +15634,6 @@ "dev": true, "peer": true }, - "typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", - "dev": true, - "peer": true - }, "uglify-js": { "version": "3.15.4", "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.4.tgz", @@ -22150,15 +15675,6 @@ } } }, - "undici": { - "version": "5.22.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-5.22.0.tgz", - "integrity": "sha512-fR9RXCc+6Dxav4P9VV/sp5w3eFiSdOjJYsbtWfd4s5L5C4ogyuVpdKIVHeW0vV1MloM65/f7W45nR9ZxwVdyiA==", - "dev": true, - "requires": { - "busboy": "^1.6.0" - } - }, "undici-types": { "version": "6.20.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", @@ -22171,22 +15687,6 @@ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "peer": true, - "requires": { - "punycode": "^2.1.0" - } - }, "utf-8-validate": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/utf-8-validate/-/utf-8-validate-5.0.5.tgz", @@ -22210,32 +15710,6 @@ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "uuid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=", - "dev": true, - "peer": true - }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", - "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "peer": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "peer": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, "web3-utils": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz", @@ -22310,49 +15784,6 @@ "has-tostringtag": "^1.0.0" } }, - "widest-line": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", - "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", - "dev": true, - "requires": { - "string-width": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "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, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "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, - "requires": { - "ansi-regex": "^5.0.1" - } - } - } - }, "word-wrap": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", @@ -22365,26 +15796,6 @@ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", "dev": true }, - "wordwrapjs": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", - "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", - "dev": true, - "peer": true, - "requires": { - "reduce-flatten": "^2.0.0", - "typical": "^5.2.0" - }, - "dependencies": { - "typical": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", - "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", - "dev": true, - "peer": true - } - } - }, "workerpool": { "version": "6.5.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", @@ -22473,13 +15884,6 @@ "dev": true, "requires": {} }, - "xmlhttprequest": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz", - "integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw=", - "dev": true, - "peer": true - }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -22528,19 +15932,18 @@ "fd-slicer": "~1.1.0" } }, - "yn": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", - "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "peer": true - }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true }, + "zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "dev": true + }, "zx": { "version": "8.1.6", "resolved": "https://registry.npmjs.org/zx/-/zx-8.1.6.tgz", diff --git a/package.json b/package.json index b5010681d..22570e790 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { "name": "@iexec/poco", "version": "6.1.0-rc.5", + "type": "module", "description": "iExec Proof of Contribution protocol smart contracts", "author": "iExec", "license": "Apache-2.0", @@ -61,10 +62,9 @@ }, "devDependencies": { "@amxx/factory": "^1.0.0", - "@nomicfoundation/hardhat-toolbox": "^5.0.0", "@openzeppelin/upgrades-core": "^1.37.1", "dotenv": "^16.5.0", - "hardhat": "^2.22.18", + "hardhat": "^3.0.10", "hardhat-dependency-compiler": "^1.2.1", "hardhat-deploy": "^0.11.43", "husky": "^9.1.6", diff --git a/scripts/tools/copy-deployments.ts b/scripts/tools/copy-deployments.ts index b1be029f4..cb1f215fb 100644 --- a/scripts/tools/copy-deployments.ts +++ b/scripts/tools/copy-deployments.ts @@ -65,8 +65,8 @@ export async function cleanupDeployments(networkName: string): Promise return false; } -// When script is run directly -if (require.main === module) { +// When script is run directly (ESM compatible check) +if (import.meta.url === `file://${process.argv[1]}`) { let sourceNetwork: string | undefined; if (process.argv.length > 2) { From 0b42e28d474d5e2345d77a8fee8a311e576680cd Mon Sep 17 00:00:00 2001 From: Le-Caignec Date: Wed, 5 Nov 2025 10:45:36 +0100 Subject: [PATCH 77/77] chore: update Hardhat configuration for version 3.0.10, re-enable dependency compiler and solidity docgen, and add new ABI exporter settings --- hardhat.config.old.ts | 129 +- hardhat.config.ts | 196 + package-lock.json | 8447 ++++++++++++++++++++++++----------------- package.json | 11 +- tsconfig.json | 1 + 5 files changed, 5174 insertions(+), 3610 deletions(-) diff --git a/hardhat.config.old.ts b/hardhat.config.old.ts index 20ed8e587..7183cd751 100644 --- a/hardhat.config.old.ts +++ b/hardhat.config.old.ts @@ -1,17 +1,18 @@ +import '@nomicfoundation/hardhat-toolbox'; import 'dotenv/config'; import * as fs from 'fs'; -// hardhat-deploy temporarily disabled - not compatible with Hardhat 3 yet -// import 'hardhat-deploy'; +import 'hardhat-abi-exporter'; +import 'hardhat-dependency-compiler'; +import 'hardhat-deploy'; import { HardhatUserConfig, task } from 'hardhat/config'; -import * as path from 'path'; -// solidity-docgen temporarily disabled - not compatible with Hardhat 3 yet -// import 'solidity-docgen'; +import { + HARDHAT_NETWORK_MNEMONIC, + defaultHardhatNetworkParams, + defaultLocalhostNetworkParams, +} from 'hardhat/internal/core/config/default-config'; +import 'solidity-docgen'; import { cleanupDeployments, copyDeployments } from './scripts/tools/copy-deployments'; import chainConfig from './utils/config'; -// Hardhat 3: internal imports may have changed, using defaults directly -const HARDHAT_NETWORK_MNEMONIC = 'test test test test test test test test test test test junk'; -const defaultHardhatNetworkParams = {}; -const defaultLocalhostNetworkParams = {}; const isNativeChainType = chainConfig.isNativeChain(); const isLocalFork = chainConfig.isLocalFork(); @@ -73,12 +74,6 @@ const v8Settings = { }; const config: HardhatUserConfig = { - paths: { - sources: './contracts', - tests: './test', - cache: './cache', - artifacts: './artifacts', - }, solidity: { compilers: [ { version: '0.8.21', settings: v8Settings }, // PoCo Boost @@ -102,7 +97,6 @@ const config: HardhatUserConfig = { }, networks: { hardhat: { - type: 'edr-simulated', // Hardhat 3: required network type accounts: { mnemonic: process.env.MNEMONIC || HARDHAT_NETWORK_MNEMONIC, }, @@ -135,7 +129,6 @@ const config: HardhatUserConfig = { }), }, 'external-hardhat': { - type: 'edr-simulated', // Hardhat 3: required network type ...defaultHardhatNetworkParams, ...defaultLocalhostNetworkParams, accounts: { @@ -156,7 +149,6 @@ const config: HardhatUserConfig = { }), }, 'dev-native': { - type: 'http', // Hardhat 3: required network type chainId: 65535, url: process.env.DEV_NODE || 'http://localhost:8545', accounts: { @@ -165,7 +157,6 @@ const config: HardhatUserConfig = { gasPrice: bellecourBaseConfig.gasPrice, // Get closer to Bellecour network }, 'dev-token': { - type: 'http', // Hardhat 3: required network type chainId: 65535, url: process.env.DEV_NODE || 'http://localhost:8545', accounts: { @@ -177,7 +168,6 @@ const config: HardhatUserConfig = { gasPrice: 8_000_000_000, // 8 Gwei }, arbitrum: { - type: 'http', // Hardhat 3: required network type url: process.env.ARBITRUM_RPC_URL || // Used in local development process.env.RPC_URL || // Defined in Github Actions environments @@ -186,7 +176,6 @@ const config: HardhatUserConfig = { ...arbitrumBaseConfig, }, arbitrumSepolia: { - type: 'http', // Hardhat 3: required network type url: process.env.ARBITRUM_SEPOLIA_RPC_URL || // Used in local development process.env.RPC_URL || // Defined in Github Actions environments @@ -195,7 +184,6 @@ const config: HardhatUserConfig = { ...arbitrumSepoliaBaseConfig, }, bellecour: { - type: 'http', // Hardhat 3: required network type chainId: 134, url: 'https://bellecour.iex.ec', accounts: _getPrivateKeys(), @@ -228,25 +216,23 @@ const config: HardhatUserConfig = { typechain: { outDir: 'typechain', }, - // dependencyCompiler temporarily disabled - not compatible with Hardhat 3 yet - // TODO: Re-enable when hardhat-dependency-compiler supports Hardhat 3 - // dependencyCompiler: { - // paths: [ - // 'rlc-faucet-contract/contracts/RLC.sol', - // // ERC-2535 Diamond - // '@mudgen/diamond-1/contracts/facets/DiamondCutFacet.sol', - // '@mudgen/diamond-1/contracts/facets/DiamondLoupeFacet.sol', - // '@mudgen/diamond-1/contracts/facets/OwnershipFacet.sol', - // '@mudgen/diamond-1/contracts/libraries/LibDiamond.sol', - // '@mudgen/diamond-1/contracts/upgradeInitializers/DiamondInit.sol', - // // Used as mock or fake in UTs - // '@openzeppelin/contracts/interfaces/IERC1271.sol', - // // Used in deployment - // '@amxx/factory/contracts/v6/GenericFactory.sol', - // 'createx/src/ICreateX.sol', - // ], - // keep: true, // Slither requires compiled dependencies - // }, + dependencyCompiler: { + paths: [ + 'rlc-faucet-contract/contracts/RLC.sol', + // ERC-2535 Diamond + '@mudgen/diamond-1/contracts/facets/DiamondCutFacet.sol', + '@mudgen/diamond-1/contracts/facets/DiamondLoupeFacet.sol', + '@mudgen/diamond-1/contracts/facets/OwnershipFacet.sol', + '@mudgen/diamond-1/contracts/libraries/LibDiamond.sol', + '@mudgen/diamond-1/contracts/upgradeInitializers/DiamondInit.sol', + // Used as mock or fake in UTs + '@openzeppelin/contracts/interfaces/IERC1271.sol', + // Used in deployment + '@amxx/factory/contracts/v6/GenericFactory.sol', + 'createx/src/ICreateX.sol', + ], + keep: true, // Slither requires compiled dependencies + }, docgen: { outputDir: 'docs/solidity', templates: 'docs/solidity/templates', @@ -265,6 +251,32 @@ const config: HardhatUserConfig = { ], }, mocha: { timeout: 300000 }, + abiExporter: [ + // ABIs of PoCo contracts for integration with other tools. + { + path: './abis/contracts', + format: 'json', + runOnCompile: true, + clear: true, + only: ['^contracts/'], + except: [ + // !!! Update package.json#files if this is modified. + // TODO reorganize utility contracts. + '^contracts/tools/testing/', + '^contracts/tools/diagrams/', + '^contracts/tools/TimelockController', + ], + rename: (sourceName, contractName) => + `${sourceName.replace('contracts/', '').replace('.sol', '')}`, + }, + // ABIs of all contracts in a human readable format for easier upgrade debugging. + { + path: './abis/human-readable-abis', + format: 'minimal', + runOnCompile: true, + clear: true, + }, + ], }; /** @@ -287,6 +299,10 @@ task('docgen').setAction(async (taskArgs, hre, runSuper) => { }); }); +/** + * Override `test` task to copy deployments of Arbitrum Sepolia if running tests on + * a forked Arbitrum Sepolia network and clean them up afterwards. + */ task('test').setAction(async (taskArgs: any, hre, runSuper) => { let deploymentsCopied = false; let networkName = ''; @@ -303,37 +319,6 @@ task('test').setAction(async (taskArgs: any, hre, runSuper) => { } }); -// Automatically update ABIs after compiling contracts. -task('compile').setAction(async (taskArgs: any, hre, runSuper) => { - await runSuper(taskArgs); - await hre.run('abis'); -}); - -task('abis', 'Generate contract ABIs').setAction(async (taskArgs, hre) => { - const abisDir = './abis'; - // Remove old ABIs folder if it exists. - if (fs.existsSync(abisDir)) { - fs.rmSync(abisDir, { recursive: true, force: true }); - } - fs.mkdirSync(abisDir); - const contracts = (await hre.artifacts.getAllFullyQualifiedNames()) - // Keep only "contracts/" folder - .filter((name) => name.startsWith('contracts/')) - // Remove non relevant contracts - // !!! Update package.json#files if this is updated. - .filter((name) => !name.startsWith('contracts/tools/testing')) - .filter((name) => !name.startsWith('contracts/tools/diagrams')) - .filter((name) => !name.startsWith('contracts/tools/TimelockController')); - for (const contractFile of contracts) { - const artifact = await hre.artifacts.readArtifact(contractFile); - const abiFileDir = `${abisDir}/${path.dirname(contractFile)}`; - const abiFile = `${abiFileDir}/${artifact.contractName}.json`; - fs.mkdirSync(abiFileDir, { recursive: true }); - fs.writeFileSync(abiFile, JSON.stringify(artifact.abi, null, 2)); - } - console.log(`Saved ${contracts.length} ABI files to ${abisDir} folder`); -}); - function _getPrivateKeys() { const ZERO_PRIVATE_KEY = '0x0000000000000000000000000000000000000000000000000000000000000000'; const deployerKey = process.env.DEPLOYER_PRIVATE_KEY || ZERO_PRIVATE_KEY; diff --git a/hardhat.config.ts b/hardhat.config.ts index 3eed4b871..169d61c98 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -1,4 +1,55 @@ +import '@nomicfoundation/hardhat-toolbox-mocha-ethers'; +import 'dotenv/config'; +import 'hardhat-deploy'; +// hardhat-dependency-compiler temporarily disabled - not compatible with Hardhat 3 yet +// import 'hardhat-dependency-compiler'; +// solidity-docgen temporarily disabled - not compatible with Hardhat 3 yet +// import 'solidity-docgen'; import type { HardhatUserConfig } from 'hardhat/config'; +import { task } from 'hardhat/config'; +import chainConfig from './utils/config'; + +// Hardhat 3: default mnemonic for hardhat network +const HARDHAT_NETWORK_MNEMONIC = 'test test test test test test test test test test test junk'; + +const isNativeChainType = chainConfig.isNativeChain(); +const isLocalFork = chainConfig.isLocalFork(); +const isArbitrumSepoliaFork = chainConfig.isArbitrumSepoliaFork(); +const isArbitrumFork = chainConfig.isArbitrumFork(); +const bellecourBlockscoutUrl = 'https://blockscout.bellecour.iex.ec'; + +/** + * @dev Native mode. As close as possible to the iExec Bellecour blockchain. + * @note Any fresh version of Hardhat uses for its default + * hardhat network a configuration from a recent Ethereum + * fork. EIPs brought by such recent fork are not necessarily + * supported by the iExec Bellecour blockchain. + */ +const bellecourBaseConfig = { + hardfork: 'berlin', // No EIP-1559 before London fork + gasPrice: 0, + blockGasLimit: 6_700_000, +}; + +// Arbitrum Sepolia specific configuration +const arbitrumSepoliaBaseConfig = { + chainId: 421614, + blockGasLimit: 32_000_000, +}; + +// Arbitrum specific configuration +const arbitrumBaseConfig = { + chainId: 42161, + // https://docs.arbitrum.io/build-decentralized-apps/arbitrum-vs-ethereum/block-numbers-and-time#block-gas-limit + blockGasLimit: 32_000_000, +}; + +function _getPrivateKeys() { + const ZERO_PRIVATE_KEY = '0x0000000000000000000000000000000000000000000000000000000000000000'; + const deployerKey = process.env.DEPLOYER_PRIVATE_KEY || ZERO_PRIVATE_KEY; + const adminKey = process.env.ADMIN_PRIVATE_KEY || ZERO_PRIVATE_KEY; + return [deployerKey, adminKey]; +} const config: HardhatUserConfig = { paths: { @@ -48,6 +99,151 @@ const config: HardhatUserConfig = { }, // RLC contracts ], }, + // @ts-expect-error - namedAccounts is provided by hardhat-deploy but types are not yet updated for Hardhat v3 + namedAccounts: { + deployer: { + default: 0, + bellecour: chainConfig.chains['134'].deployer, + arbitrum: chainConfig.chains['42161'].deployer, + arbitrumSepolia: chainConfig.chains['421614'].deployer, + }, + owner: { + default: 0, // TODO change this to 1 and update admin tests. + bellecour: chainConfig.chains['134'].owner, + arbitrum: chainConfig.chains['42161'].owner, + arbitrumSepolia: chainConfig.chains['421614'].owner, + }, + }, + networks: { + hardhat: { + type: 'edr-simulated', + accounts: { + mnemonic: process.env.MNEMONIC || HARDHAT_NETWORK_MNEMONIC, + }, + ...((isNativeChainType || isLocalFork) && bellecourBaseConfig), + ...(isLocalFork && { + forking: { + url: 'https://bellecour.iex.ec', + }, + chainId: 134, + }), + ...(isArbitrumSepoliaFork && { + forking: { + url: + process.env.ARBITRUM_SEPOLIA_RPC_URL || + 'https://sepolia-rollup.arbitrum.io/rpc', + blockNumber: process.env.ARBITRUM_SEPOLIA_BLOCK_NUMBER + ? parseInt(process.env.ARBITRUM_SEPOLIA_BLOCK_NUMBER) + : undefined, + }, + ...arbitrumSepoliaBaseConfig, + gasPrice: 100_000_000, // 0.1 Gwei + }), + ...(isArbitrumFork && { + forking: { + url: process.env.ARBITRUM_RPC_URL || 'https://arbitrum.gateway.tenderly.co', + }, + ...arbitrumBaseConfig, + gasPrice: 100_000_000, // 0.1 Gwei + }), + }, + 'external-hardhat': { + type: 'edr-simulated', + accounts: { + mnemonic: process.env.MNEMONIC || HARDHAT_NETWORK_MNEMONIC, + }, + ...((isNativeChainType || isLocalFork) && bellecourBaseConfig), + ...(isLocalFork && { + // Impersonation works automatically with forking in Hardhat v3 + chainId: 134, + }), + ...(isArbitrumSepoliaFork && { + // Impersonation works automatically with forking in Hardhat v3 + ...arbitrumSepoliaBaseConfig, + }), + ...(isArbitrumFork && { + // Impersonation works automatically with forking in Hardhat v3 + ...arbitrumBaseConfig, + }), + }, + 'dev-native': { + type: 'http', + chainId: 65535, + url: process.env.DEV_NODE || 'http://localhost:8545', + accounts: { + mnemonic: process.env.MNEMONIC || '', + }, + gasPrice: bellecourBaseConfig.gasPrice, // Get closer to Bellecour network + }, + 'dev-token': { + type: 'http', + chainId: 65535, + url: process.env.DEV_NODE || 'http://localhost:8545', + accounts: { + mnemonic: process.env.MNEMONIC || '', + }, + // When deploying on a blockchain with EIP-1559 enabled and + // force-sealing disabled, deployment gets stuck if gasPrice is + // not manually set. Other approaches might be considered here. + gasPrice: 8_000_000_000, // 8 Gwei + }, + arbitrum: { + type: 'http', + url: + process.env.ARBITRUM_RPC_URL || // Used in local development + process.env.RPC_URL || // Defined in Github Actions environments + 'https://arbitrum.gateway.tenderly.co', + accounts: _getPrivateKeys(), + ...arbitrumBaseConfig, + }, + arbitrumSepolia: { + type: 'http', + url: + process.env.ARBITRUM_SEPOLIA_RPC_URL || // Used in local development + process.env.RPC_URL || // Defined in Github Actions environments + 'https://sepolia-rollup.arbitrum.io/rpc', + accounts: _getPrivateKeys(), + ...arbitrumSepoliaBaseConfig, + }, + bellecour: { + type: 'http', + chainId: 134, + url: 'https://bellecour.iex.ec', + accounts: _getPrivateKeys(), + ...bellecourBaseConfig, + // verify configuration is in etherscan section below + }, + }, + etherscan: { + // Using Etherscan V2 API for unified multichain support + apiKey: process.env.EXPLORER_API_KEY || '', + customChains: [ + { + network: 'bellecour', + chainId: 134, + urls: { + apiURL: `${bellecourBlockscoutUrl}/api`, + browserURL: bellecourBlockscoutUrl, + }, + }, + ], + }, + sourcify: { + enabled: true, + }, + typechain: { + outDir: 'typechain', + }, + mocha: { timeout: 300000 }, }; +/** + * Override `test` task to copy deployments of Arbitrum Sepolia if running tests on + * a forked Arbitrum Sepolia network and clean them up afterwards. + * Uses Hardhat v3 task API with lazy-loaded action file. + */ +task('test', 'Run tests with deployment copying for forks').setAction( + () => import('./tasks/test.js'), +); + export default config; diff --git a/package-lock.json b/package-lock.json index 01625fd0f..f33c49645 100644 --- a/package-lock.json +++ b/package-lock.json @@ -19,11 +19,11 @@ }, "devDependencies": { "@amxx/factory": "^1.0.0", + "@nomicfoundation/hardhat-toolbox-mocha-ethers": "^3.0.0", "@openzeppelin/upgrades-core": "^1.37.1", "dotenv": "^16.5.0", "hardhat": "^3.0.10", - "hardhat-dependency-compiler": "^1.2.1", - "hardhat-deploy": "^0.11.43", + "hardhat-deploy": "^2.0.0-next.52", "husky": "^9.1.6", "lint-staged": "^15.2.10", "mocha": "^10.7.3", @@ -32,11 +32,17 @@ "prettier-plugin-solidity": "^1.4.1", "puml-for-markdown": "^1.2.1", "sol2uml": "^2.5.22", - "solidity-coverage": "^0.8.14", - "solidity-docgen": "^0.6.0-beta.36", "zx": "^8.1.6" } }, + "node_modules/@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/@aduh95/viz.js": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/@aduh95/viz.js/-/viz.js-3.7.0.tgz", @@ -491,10 +497,10 @@ "node": ">=18" } }, - "node_modules/@ethersproject/abi": { + "node_modules/@ethersproject/bignumber": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", - "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", "dev": true, "funding": [ { @@ -506,47 +512,24 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "bn.js": "^5.2.1" } }, - "node_modules/@ethersproject/abstract-provider": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", - "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "node_modules/@ethersproject/bignumber/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0" - } + "peer": true }, - "node_modules/@ethersproject/abstract-signer": { + "node_modules/@ethersproject/bytes": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", - "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", "dev": true, "funding": [ { @@ -558,18 +541,15 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0" + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/@ethersproject/address": { + "node_modules/@ethersproject/keccak256": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", "dev": true, "funding": [ { @@ -581,18 +561,16 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { - "@ethersproject/bignumber": "^5.7.0", "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/rlp": "^5.7.0" + "js-sha3": "0.8.0" } }, - "node_modules/@ethersproject/base64": { + "node_modules/@ethersproject/logger": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", - "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", "dev": true, "funding": [ { @@ -604,14 +582,12 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0" - } + "peer": true }, - "node_modules/@ethersproject/basex": { + "node_modules/@ethersproject/rlp": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", - "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", "dev": true, "funding": [ { @@ -623,756 +599,845 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "peer": true, "dependencies": { "@ethersproject/bytes": "^5.7.0", - "@ethersproject/properties": "^5.7.0" + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/@ethersproject/bignumber": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@iexec/interface": { + "version": "3.0.35-8", + "resolved": "https://registry.npmjs.org/@iexec/interface/-/interface-3.0.35-8.tgz", + "integrity": "sha512-JkO9bpfpTBCOtJz/TEPzFTLlgamv7fll8RUpwC+8P6UWlGGwCe/IvgAeUZzIJ/syXaAhC0KZ7/03BEiee3f8fg==" + }, + "node_modules/@iexec/solidity": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@iexec/solidity/-/solidity-0.1.1.tgz", + "integrity": "sha512-XLCihhVxsA77Ug9tVnz0uiUAzVdpZGlkSzfoUTLUfYDxUr+iwXJ6zvsBKomnAvvLsRJ0lb4qiBmSMpGtZ9am4w==", "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "bn.js": "^5.2.1" + "@openzeppelin/contracts": "3.2.0", + "solstruct": "0.1.0" } }, - "node_modules/@ethersproject/bignumber/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true + "node_modules/@iexec/solidity/node_modules/@openzeppelin/contracts": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.2.0.tgz", + "integrity": "sha512-bUOmkSoPkjnUyMiKo6RYnb0VHBk5D9KKDAgNLzF41aqAM3TeE0yGdFF5dVRcV60pZdJLlyFT/jjXIZCWyyEzAQ==" }, - "node_modules/@ethersproject/bytes": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "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, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "license": "ISC", + "peer": true, "dependencies": { - "@ethersproject/logger": "^5.7.0" + "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/@ethersproject/constants": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", - "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0" + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@ethersproject/contracts": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", - "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0" + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@ethersproject/hash": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", - "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "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, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } + "license": "MIT", + "peer": true }, - "node_modules/@ethersproject/hdnode": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "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, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "license": "MIT", + "peer": true, "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" + "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/@ethersproject/json-wallets": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", - "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "license": "MIT", + "peer": true, "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "aes-js": "3.0.0", - "scrypt-js": "3.0.1" + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@ethersproject/keccak256": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", - "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "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, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "license": "MIT", + "peer": true, "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "js-sha3": "0.8.0" + "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/@ethersproject/keccak256/node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true + "node_modules/@mudgen/diamond-1": { + "name": "contracts-starter", + "version": "1.0.0", + "resolved": "git+ssh://git@github.com/mudgen/diamond-1-hardhat.git#3da037b378195b4108b977cf2014600eeddbf67d", + "license": "MIT" }, - "node_modules/@ethersproject/logger": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "node_modules/@noble/ciphers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.2.1.tgz", + "integrity": "sha512-rONPWMC7PeExE077uLE4oqWrZ1IvAfz3oH9LibVAcVCopJiA9R62uavnbEzdkVmJYI6M6Zgkbeb07+tWjlq2XA==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ] + "license": "MIT", + "peer": true, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } }, - "node_modules/@ethersproject/networks": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", - "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "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, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "license": "MIT", + "peer": true, "dependencies": { - "@ethersproject/logger": "^5.7.0" + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@ethersproject/pbkdf2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", - "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "node_modules/@noble/curves/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, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/sha2": "^5.7.0" + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@ethersproject/properties": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", - "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "node_modules/@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/logger": "^5.7.0" + "license": "MIT", + "peer": true, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@ethersproject/providers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", - "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "node_modules/@nomicfoundation/edr": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.12.0-next.10.tgz", + "integrity": "sha512-D10VX2FO9faYhy3T+z5mx3M/cnQ1BQ9vayuunm9aQOwmqsB9G2Ozvlb41+ooXEqmNpnpxxXuD8zst6v7HydjLg==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "license": "MIT", "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0", - "bech32": "1.1.4", - "ws": "7.4.6" + "@nomicfoundation/edr-darwin-arm64": "0.12.0-next.10", + "@nomicfoundation/edr-darwin-x64": "0.12.0-next.10", + "@nomicfoundation/edr-linux-arm64-gnu": "0.12.0-next.10", + "@nomicfoundation/edr-linux-arm64-musl": "0.12.0-next.10", + "@nomicfoundation/edr-linux-x64-gnu": "0.12.0-next.10", + "@nomicfoundation/edr-linux-x64-musl": "0.12.0-next.10", + "@nomicfoundation/edr-win32-x64-msvc": "0.12.0-next.10" + }, + "engines": { + "node": ">= 20" } }, - "node_modules/@ethersproject/random": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", - "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "node_modules/@nomicfoundation/edr-darwin-arm64": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.12.0-next.10.tgz", + "integrity": "sha512-LYXaU0Pk7zA4iAHMdvZ9Gs5QaScs9n5IpclWBNVevSHnL1/uJiFLDF4FYE/NonvaCST6Rd0E4MS3pJltsrBQmA==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "license": "MIT", + "engines": { + "node": ">= 20" } }, - "node_modules/@ethersproject/rlp": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "node_modules/@nomicfoundation/edr-darwin-x64": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.12.0-next.10.tgz", + "integrity": "sha512-GtcBqSRhtjOZn6MaT9AReQS/75CY0KG/7IPURGMyjY8lxGtx6WdkzLSP7d7Jvc/WMinXZVs0jCuucfjZg/etQw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "license": "MIT", + "engines": { + "node": ">= 20" } }, - "node_modules/@ethersproject/sha2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", - "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "node_modules/@nomicfoundation/edr-linux-arm64-gnu": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.12.0-next.10.tgz", + "integrity": "sha512-EtnYfNdKfn7Dd06/zCFwjBaiI0iPiJIy8GvwJx9oiIzcmIzKnY4ZJrsRfriAK2TBzAk8nmm8Z7r4lIzOqpBUkQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "hash.js": "1.1.7" + "license": "MIT", + "engines": { + "node": ">= 20" } }, - "node_modules/@ethersproject/signing-key": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", - "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "node_modules/@nomicfoundation/edr-linux-arm64-musl": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.12.0-next.10.tgz", + "integrity": "sha512-ZkKdzMy6WpSEt3+pnJteg8dX/ovnUCL95dm4+cyvySRkUCCGbp0kgQ7RlGkC7X/z/BZpaKsCjVgbEJgMFlF8sg==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "bn.js": "^5.2.1", - "elliptic": "6.5.4", - "hash.js": "1.1.7" + "license": "MIT", + "engines": { + "node": ">= 20" } }, - "node_modules/@ethersproject/signing-key/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true + "node_modules/@nomicfoundation/edr-linux-x64-gnu": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.12.0-next.10.tgz", + "integrity": "sha512-I4eaN/ChGPxuJfycjYbUV7SmltxAGNSBJNVxmLj4+eKN30fXo+6fL2X0HdKo3dqkYq3iM/G1j9FXbxZ3ZaK/SQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 20" + } }, - "node_modules/@ethersproject/solidity": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", - "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "node_modules/@nomicfoundation/edr-linux-x64-musl": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.12.0-next.10.tgz", + "integrity": "sha512-ruovF/WCs61If5uVBYMYns40ayW6EhdORAbQ5cUEgxN2iaQhUZ6AQNlRFCgIESOiBqDRrQZQIdJC/6pgbFzuCg==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "license": "MIT", + "engines": { + "node": ">= 20" } }, - "node_modules/@ethersproject/strings": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", - "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "node_modules/@nomicfoundation/edr-win32-x64-msvc": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.12.0-next.10.tgz", + "integrity": "sha512-5hlqjWIx5bdY7xNdrV9W+0BMbNgkwF/Am/J4Rof6J40Ht/NkKwhzs4XuGujBKCqKVKfvbqKlaexyX1qIPhS8Ag==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "license": "MIT", + "engines": { + "node": ">= 20" } }, - "node_modules/@ethersproject/transactions": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", - "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "node_modules/@nomicfoundation/hardhat-errors": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-errors/-/hardhat-errors-3.0.3.tgz", + "integrity": "sha512-qvVIyNE5yXFdwCD7G74fb3j+p5PjYSej/K2mhOuJBhxdGwzARpyoJbcDZrjkNyabytlt95iniZLHHWM9jvVXEA==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "license": "MIT", "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0" + "@nomicfoundation/hardhat-utils": "^3.0.1" } }, - "node_modules/@ethersproject/units": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", - "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "node_modules/@nomicfoundation/hardhat-ethers": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-4.0.3.tgz", + "integrity": "sha512-DtYjmHtPM1BenmNm5ZMVn5fTGD4RdDPGE/ElpaLUjDGbkQnn4ytvhqnGsY+osLaWFvDxKfhdI8fyISg53bk8Qw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "license": "MIT", + "peer": true, "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@nomicfoundation/hardhat-errors": "^3.0.2", + "@nomicfoundation/hardhat-utils": "^3.0.5", + "debug": "^4.3.2", + "ethereum-cryptography": "^2.2.1", + "ethers": "^6.14.0" + }, + "peerDependencies": { + "hardhat": "^3.0.7" } }, - "node_modules/@ethersproject/wallet": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", - "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "node_modules/@nomicfoundation/hardhat-ethers-chai-matchers": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers-chai-matchers/-/hardhat-ethers-chai-matchers-3.0.1.tgz", + "integrity": "sha512-GRAZ5bewAiDdQfeuFlVQcuX4fcnJec7dicFyNsLT6Kz9KsY6goPcRqnK/PczWDS5mUx/ZkiRh6X1z4+tBzsYqQ==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "license": "MIT", + "peer": true, "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/json-wallets": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" + "@nomicfoundation/hardhat-errors": "^3.0.0", + "@nomicfoundation/hardhat-utils": "^3.0.5", + "@types/chai-as-promised": "^8.0.1", + "chai-as-promised": "^8.0.0", + "deep-eql": "^5.0.1" + }, + "peerDependencies": { + "@nomicfoundation/hardhat-ethers": "^4.0.0", + "chai": "^5.1.2", + "ethers": "^6.14.0", + "hardhat": "^3.0.0" } }, - "node_modules/@ethersproject/web": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", - "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "node_modules/@nomicfoundation/hardhat-ethers/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "license": "MIT", + "peer": true, "dependencies": { - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@ethersproject/wordlists": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", - "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "node_modules/@nomicfoundation/hardhat-ethers/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==", "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@iexec/interface": { - "version": "3.0.35-8", - "resolved": "https://registry.npmjs.org/@iexec/interface/-/interface-3.0.35-8.tgz", - "integrity": "sha512-JkO9bpfpTBCOtJz/TEPzFTLlgamv7fll8RUpwC+8P6UWlGGwCe/IvgAeUZzIJ/syXaAhC0KZ7/03BEiee3f8fg==" - }, - "node_modules/@iexec/solidity": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@iexec/solidity/-/solidity-0.1.1.tgz", - "integrity": "sha512-XLCihhVxsA77Ug9tVnz0uiUAzVdpZGlkSzfoUTLUfYDxUr+iwXJ6zvsBKomnAvvLsRJ0lb4qiBmSMpGtZ9am4w==", + "node_modules/@nomicfoundation/hardhat-ethers/node_modules/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "@openzeppelin/contracts": "3.2.0", - "solstruct": "0.1.0" + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" } }, - "node_modules/@iexec/solidity/node_modules/@openzeppelin/contracts": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.2.0.tgz", - "integrity": "sha512-bUOmkSoPkjnUyMiKo6RYnb0VHBk5D9KKDAgNLzF41aqAM3TeE0yGdFF5dVRcV60pZdJLlyFT/jjXIZCWyyEzAQ==" - }, - "node_modules/@mudgen/diamond-1": { - "name": "contracts-starter", - "version": "1.0.0", - "resolved": "git+ssh://git@github.com/mudgen/diamond-1-hardhat.git#3da037b378195b4108b977cf2014600eeddbf67d", - "license": "MIT" - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@nomicfoundation/hardhat-ignition": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition/-/hardhat-ignition-3.0.4.tgz", + "integrity": "sha512-wu2aFNpvm2jiEga3p+gyOqrSWbGYkMl+hcpcb10XU7QKyv8i0RdYnGkjznElrS2vyIF038zgQoGGTS3Da+2OJw==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@nomicfoundation/hardhat-errors": "^3.0.2", + "@nomicfoundation/hardhat-utils": "^3.0.5", + "@nomicfoundation/ignition-core": "^3.0.4", + "@nomicfoundation/ignition-ui": "^3.0.4", + "chalk": "^5.3.0", + "debug": "^4.3.2", + "json5": "^2.2.3", + "prompts": "^2.4.2" }, - "engines": { - "node": ">= 8" + "peerDependencies": { + "@nomicfoundation/hardhat-verify": "^3.0.0", + "hardhat": "^3.0.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@nomicfoundation/hardhat-ignition-ethers": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition-ethers/-/hardhat-ignition-ethers-3.0.4.tgz", + "integrity": "sha512-Us+/Z6c/E5c5yMOtgjSnRplNTJiTjPfviEKEbg+aouH2cSqQ11oO5G5/7IgBImCg5rXVgDfD2k0RwCnB9f+0gw==", "dev": true, - "engines": { - "node": ">= 8" + "license": "MIT", + "peer": true, + "dependencies": { + "@nomicfoundation/hardhat-errors": "^3.0.2" + }, + "peerDependencies": { + "@nomicfoundation/hardhat-ethers": "^4.0.0", + "@nomicfoundation/hardhat-ignition": "^3.0.2", + "@nomicfoundation/hardhat-verify": "^3.0.0", + "@nomicfoundation/ignition-core": "^3.0.2", + "ethers": "^6.14.0", + "hardhat": "^3.0.0" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@nomicfoundation/hardhat-ignition/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, + "license": "MIT", + "peer": true, "engines": { - "node": ">= 8" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@nomicfoundation/edr": { - "version": "0.12.0-next.10", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.12.0-next.10.tgz", - "integrity": "sha512-D10VX2FO9faYhy3T+z5mx3M/cnQ1BQ9vayuunm9aQOwmqsB9G2Ozvlb41+ooXEqmNpnpxxXuD8zst6v7HydjLg==", + "node_modules/@nomicfoundation/hardhat-keystore": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-keystore/-/hardhat-keystore-3.0.3.tgz", + "integrity": "sha512-rkwfdy/GsX/2SV49RGBvMsCuR+SYGJQGD3wcrS5m2Cyap5eQFEgKZbqpua6YQRA2raxRmVVH6antIIftgBFXAQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@nomicfoundation/edr-darwin-arm64": "0.12.0-next.10", - "@nomicfoundation/edr-darwin-x64": "0.12.0-next.10", - "@nomicfoundation/edr-linux-arm64-gnu": "0.12.0-next.10", - "@nomicfoundation/edr-linux-arm64-musl": "0.12.0-next.10", - "@nomicfoundation/edr-linux-x64-gnu": "0.12.0-next.10", - "@nomicfoundation/edr-linux-x64-musl": "0.12.0-next.10", - "@nomicfoundation/edr-win32-x64-msvc": "0.12.0-next.10" + "@noble/ciphers": "1.2.1", + "@noble/hashes": "1.7.1", + "@nomicfoundation/hardhat-errors": "^3.0.0", + "@nomicfoundation/hardhat-utils": "^3.0.5", + "@nomicfoundation/hardhat-zod-utils": "^3.0.0", + "chalk": "^5.3.0", + "debug": "^4.3.2", + "zod": "^3.23.8" }, - "engines": { - "node": ">= 20" + "peerDependencies": { + "hardhat": "^3.0.0" } }, - "node_modules/@nomicfoundation/edr-darwin-arm64": { - "version": "0.12.0-next.10", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.12.0-next.10.tgz", - "integrity": "sha512-LYXaU0Pk7zA4iAHMdvZ9Gs5QaScs9n5IpclWBNVevSHnL1/uJiFLDF4FYE/NonvaCST6Rd0E4MS3pJltsrBQmA==", + "node_modules/@nomicfoundation/hardhat-keystore/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, "license": "MIT", + "peer": true, "engines": { - "node": ">= 20" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@nomicfoundation/edr-darwin-x64": { - "version": "0.12.0-next.10", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.12.0-next.10.tgz", - "integrity": "sha512-GtcBqSRhtjOZn6MaT9AReQS/75CY0KG/7IPURGMyjY8lxGtx6WdkzLSP7d7Jvc/WMinXZVs0jCuucfjZg/etQw==", + "node_modules/@nomicfoundation/hardhat-mocha": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-mocha/-/hardhat-mocha-3.0.6.tgz", + "integrity": "sha512-r7Kl0k9wmWSjacI3llHC8s/ZTtWE4xuhOi/ypE3kk6lY+VJAJYphVwktLq+sfRNwUSsc85lPhLY98fZFY5VQsA==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 20" + "peer": true, + "dependencies": { + "@nomicfoundation/hardhat-errors": "^3.0.3", + "@nomicfoundation/hardhat-utils": "^3.0.5", + "@nomicfoundation/hardhat-zod-utils": "^3.0.0", + "chalk": "^5.3.0", + "hardhat": "^3.0.11", + "mocha": "^11.0.0", + "tsx": "^4.19.3", + "zod": "^3.23.8" } }, - "node_modules/@nomicfoundation/edr-linux-arm64-gnu": { - "version": "0.12.0-next.10", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.12.0-next.10.tgz", - "integrity": "sha512-EtnYfNdKfn7Dd06/zCFwjBaiI0iPiJIy8GvwJx9oiIzcmIzKnY4ZJrsRfriAK2TBzAk8nmm8Z7r4lIzOqpBUkQ==", + "node_modules/@nomicfoundation/hardhat-mocha/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 20" + "peer": true, + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@nomicfoundation/edr-linux-arm64-musl": { - "version": "0.12.0-next.10", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.12.0-next.10.tgz", - "integrity": "sha512-ZkKdzMy6WpSEt3+pnJteg8dX/ovnUCL95dm4+cyvySRkUCCGbp0kgQ7RlGkC7X/z/BZpaKsCjVgbEJgMFlF8sg==", + "node_modules/@nomicfoundation/hardhat-mocha/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==", "dev": true, "license": "MIT", + "peer": true, "engines": { - "node": ">= 20" + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@nomicfoundation/edr-linux-x64-gnu": { - "version": "0.12.0-next.10", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.12.0-next.10.tgz", - "integrity": "sha512-I4eaN/ChGPxuJfycjYbUV7SmltxAGNSBJNVxmLj4+eKN30fXo+6fL2X0HdKo3dqkYq3iM/G1j9FXbxZ3ZaK/SQ==", + "node_modules/@nomicfoundation/hardhat-mocha/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0", + "peer": true + }, + "node_modules/@nomicfoundation/hardhat-mocha/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 20" + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/@nomicfoundation/edr-linux-x64-musl": { - "version": "0.12.0-next.10", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.12.0-next.10.tgz", - "integrity": "sha512-ruovF/WCs61If5uVBYMYns40ayW6EhdORAbQ5cUEgxN2iaQhUZ6AQNlRFCgIESOiBqDRrQZQIdJC/6pgbFzuCg==", + "node_modules/@nomicfoundation/hardhat-mocha/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, "license": "MIT", + "peer": true, "engines": { - "node": ">= 20" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@nomicfoundation/edr-win32-x64-msvc": { - "version": "0.12.0-next.10", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.12.0-next.10.tgz", - "integrity": "sha512-5hlqjWIx5bdY7xNdrV9W+0BMbNgkwF/Am/J4Rof6J40Ht/NkKwhzs4XuGujBKCqKVKfvbqKlaexyX1qIPhS8Ag==", + "node_modules/@nomicfoundation/hardhat-mocha/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "license": "MIT", + "peer": true, + "dependencies": { + "readdirp": "^4.0.1" + }, "engines": { - "node": ">= 20" + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/@nomicfoundation/hardhat-errors": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-errors/-/hardhat-errors-3.0.3.tgz", - "integrity": "sha512-qvVIyNE5yXFdwCD7G74fb3j+p5PjYSej/K2mhOuJBhxdGwzARpyoJbcDZrjkNyabytlt95iniZLHHWM9jvVXEA==", + "node_modules/@nomicfoundation/hardhat-mocha/node_modules/diff": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/@nomicfoundation/hardhat-mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nomicfoundation/hardhat-mocha/node_modules/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@nomicfoundation/hardhat-utils": "^3.0.1" + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, + "node_modules/@nomicfoundation/hardhat-mocha/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nomicfoundation/hardhat-mocha/node_modules/hardhat": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-3.0.11.tgz", + "integrity": "sha512-XvUKHNWxyDUFLZFvO7eoza7MkCDCox6ONJNxgCLyxd4fJ7UWKPj+wVmDvpMWuwQFBA64/Mi49mgz2hPwoss9PA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@nomicfoundation/edr": "0.12.0-next.10", + "@nomicfoundation/hardhat-errors": "^3.0.3", + "@nomicfoundation/hardhat-utils": "^3.0.5", + "@nomicfoundation/hardhat-zod-utils": "^3.0.1", + "@nomicfoundation/solidity-analyzer": "^0.1.1", + "@sentry/core": "^9.4.0", + "adm-zip": "^0.4.16", + "chalk": "^5.3.0", + "chokidar": "^4.0.3", + "debug": "^4.3.2", + "enquirer": "^2.3.0", + "ethereum-cryptography": "^2.2.1", + "micro-eth-signer": "^0.14.0", + "p-map": "^7.0.2", + "resolve.exports": "^2.0.3", + "semver": "^7.6.3", + "tsx": "^4.19.3", + "ws": "^8.18.0", + "zod": "^3.23.8" + }, + "bin": { + "hardhat": "dist/src/cli.js" + } + }, + "node_modules/@nomicfoundation/hardhat-mocha/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nomicfoundation/hardhat-mocha/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@nomicfoundation/hardhat-mocha/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nomicfoundation/hardhat-mocha/node_modules/mocha": { + "version": "11.7.4", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.4.tgz", + "integrity": "sha512-1jYAaY8x0kAZ0XszLWu14pzsf4KV740Gld4HXkhNTXwcHx4AUEDkPzgEHg9CM5dVcW+zv036tjpsEbLraPJj4w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "browser-stdout": "^1.3.1", + "chokidar": "^4.0.1", + "debug": "^4.3.5", + "diff": "^7.0.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^10.4.5", + "he": "^1.2.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^9.0.5", + "ms": "^2.1.3", + "picocolors": "^1.1.1", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^9.2.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", + "yargs-unparser": "^2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@nomicfoundation/hardhat-mocha/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nomicfoundation/hardhat-mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@nomicfoundation/hardhat-mocha/node_modules/workerpool": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz", + "integrity": "sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==", + "dev": true, + "license": "Apache-2.0", + "peer": true + }, + "node_modules/@nomicfoundation/hardhat-network-helpers": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-3.0.2.tgz", + "integrity": "sha512-s5XyGSDB6lJ4cy7CiDwi0RdaBlAJcrYwwO+bersvXHFPcUPPu2fRux49yHPlundWKFjsCdV+zhluy+02B7PiRQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@nomicfoundation/hardhat-errors": "^3.0.0", + "@nomicfoundation/hardhat-utils": "^3.0.5" + }, + "peerDependencies": { + "hardhat": "^3.0.0" + } + }, + "node_modules/@nomicfoundation/hardhat-toolbox-mocha-ethers": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox-mocha-ethers/-/hardhat-toolbox-mocha-ethers-3.0.1.tgz", + "integrity": "sha512-CB4eMIjgCfz8psNhXclcKd49LiG1C0hGmehPfw0QRY1eq0vtbQdNKLxuudVB5F8/nKJjDD2epL3aKE3SFgy+nw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@nomicfoundation/hardhat-ethers": "^4.0.0", + "@nomicfoundation/hardhat-ethers-chai-matchers": "^3.0.0", + "@nomicfoundation/hardhat-ignition": "^3.0.0", + "@nomicfoundation/hardhat-ignition-ethers": "^3.0.0", + "@nomicfoundation/hardhat-keystore": "^3.0.0", + "@nomicfoundation/hardhat-mocha": "^3.0.0", + "@nomicfoundation/hardhat-network-helpers": "^3.0.0", + "@nomicfoundation/hardhat-typechain": "^3.0.0", + "@nomicfoundation/hardhat-verify": "^3.0.0", + "@nomicfoundation/ignition-core": "^3.0.0", + "chai": "^5.1.2", + "ethers": "^6.14.0", + "hardhat": "^3.0.0" + } + }, + "node_modules/@nomicfoundation/hardhat-typechain": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-typechain/-/hardhat-typechain-3.0.1.tgz", + "integrity": "sha512-TkeMQhf+/4gZLMIWLxzzyVruNuLz5xW5BZdu4Clic3HFqBJRG+U2fQGWxAknMMLGONhxiZaUipE0Z+JkOugrmg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@nomicfoundation/hardhat-errors": "^3.0.0", + "@nomicfoundation/hardhat-utils": "^3.0.5", + "@nomicfoundation/hardhat-zod-utils": "^3.0.0", + "@typechain/ethers-v6": "^0.5.0", + "debug": "^4.3.2", + "typechain": "^8.3.1", + "zod": "^3.23.8" + }, + "peerDependencies": { + "@nomicfoundation/hardhat-ethers": "^4.0.0", + "ethers": "^6.14.0", + "hardhat": "^3.0.0" } }, "node_modules/@nomicfoundation/hardhat-utils": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-utils/-/hardhat-utils-3.0.4.tgz", - "integrity": "sha512-ZExEZ0ym/oIJoXg1HmrOgIKg0hnkS16bDa5UeRbMCH/cVwcatDYKAmwQwLBhoB2JK8nPjDlYmHxYvjL65QQ1Xw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-utils/-/hardhat-utils-3.0.5.tgz", + "integrity": "sha512-5zkQSuSxkwK7fQxKswJ1GGc/3AuWBSmxA7GhczTPLx28dAXQnubRU8nA48SkCkKesJq5x4TROP+XheSE2VkLUA==", "dev": true, "license": "MIT", "dependencies": { @@ -1435,33 +1500,582 @@ "node": ">=18.17" } }, - "node_modules/@nomicfoundation/hardhat-zod-utils": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-zod-utils/-/hardhat-zod-utils-3.0.1.tgz", - "integrity": "sha512-I6/pyYiS9p2lLkzQuedr1ScMocH+ew8l233xTi+LP92gjEiviJDxselpkzgU01MUM0t6BPpfP8yMO958LDEJVg==", + "node_modules/@nomicfoundation/hardhat-verify": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-3.0.5.tgz", + "integrity": "sha512-C4j4wSxgMGjQJEBIquw6NUAd24K7JrHPS53sXPbVGpAcGsHkk61Im+SbXCwjE5PqBqiPV3SBptZgzlMg/Bxr9Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "@nomicfoundation/hardhat-errors": "^3.0.0", - "@nomicfoundation/hardhat-utils": "^3.0.2" + "@ethersproject/abi": "^5.8.0", + "@nomicfoundation/hardhat-errors": "^3.0.3", + "@nomicfoundation/hardhat-utils": "^3.0.5", + "@nomicfoundation/hardhat-zod-utils": "^3.0.0", + "cbor2": "^1.9.0", + "chalk": "^5.3.0", + "debug": "^4.3.2", + "semver": "^7.6.3", + "zod": "^3.23.8" }, "peerDependencies": { - "zod": "^3.23.8" + "hardhat": "^3.0.0" } }, - "node_modules/@nomicfoundation/slang": { - "version": "0.17.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/slang/-/slang-0.17.0.tgz", - "integrity": "sha512-1GlkGRcGpVnjFw9Z1vvDKOKo2mzparFt7qrl2pDxWp+jrVtlvej98yCMX52pVyrYE7ZeOSZFnx/DtsSgoukStQ==", + "node_modules/@nomicfoundation/hardhat-verify/node_modules/@ethersproject/abi": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz", + "integrity": "sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, "dependencies": { - "@nomicfoundation/slang-darwin-arm64": "0.17.0", - "@nomicfoundation/slang-darwin-x64": "0.17.0", - "@nomicfoundation/slang-linux-arm64-gnu": "0.17.0", - "@nomicfoundation/slang-linux-arm64-musl": "0.17.0", - "@nomicfoundation/slang-linux-x64-gnu": "0.17.0", - "@nomicfoundation/slang-linux-x64-musl": "0.17.0", - "@nomicfoundation/slang-win32-arm64-msvc": "0.17.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" + } + }, + "node_modules/@nomicfoundation/hardhat-verify/node_modules/@ethersproject/abstract-provider": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz", + "integrity": "sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/networks": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/web": "^5.8.0" + } + }, + "node_modules/@nomicfoundation/hardhat-verify/node_modules/@ethersproject/abstract-signer": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz", + "integrity": "sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0" + } + }, + "node_modules/@nomicfoundation/hardhat-verify/node_modules/@ethersproject/address": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.8.0.tgz", + "integrity": "sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/rlp": "^5.8.0" + } + }, + "node_modules/@nomicfoundation/hardhat-verify/node_modules/@ethersproject/base64": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.8.0.tgz", + "integrity": "sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.8.0" + } + }, + "node_modules/@nomicfoundation/hardhat-verify/node_modules/@ethersproject/bignumber": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.8.0.tgz", + "integrity": "sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@nomicfoundation/hardhat-verify/node_modules/@ethersproject/bytes": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz", + "integrity": "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/logger": "^5.8.0" + } + }, + "node_modules/@nomicfoundation/hardhat-verify/node_modules/@ethersproject/constants": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz", + "integrity": "sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bignumber": "^5.8.0" + } + }, + "node_modules/@nomicfoundation/hardhat-verify/node_modules/@ethersproject/hash": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.8.0.tgz", + "integrity": "sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/base64": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" + } + }, + "node_modules/@nomicfoundation/hardhat-verify/node_modules/@ethersproject/keccak256": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.8.0.tgz", + "integrity": "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@nomicfoundation/hardhat-verify/node_modules/@ethersproject/logger": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz", + "integrity": "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true + }, + "node_modules/@nomicfoundation/hardhat-verify/node_modules/@ethersproject/networks": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz", + "integrity": "sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/logger": "^5.8.0" + } + }, + "node_modules/@nomicfoundation/hardhat-verify/node_modules/@ethersproject/properties": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz", + "integrity": "sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/logger": "^5.8.0" + } + }, + "node_modules/@nomicfoundation/hardhat-verify/node_modules/@ethersproject/rlp": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.8.0.tgz", + "integrity": "sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0" + } + }, + "node_modules/@nomicfoundation/hardhat-verify/node_modules/@ethersproject/signing-key": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.8.0.tgz", + "integrity": "sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "bn.js": "^5.2.1", + "elliptic": "6.6.1", + "hash.js": "1.1.7" + } + }, + "node_modules/@nomicfoundation/hardhat-verify/node_modules/@ethersproject/strings": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.8.0.tgz", + "integrity": "sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0" + } + }, + "node_modules/@nomicfoundation/hardhat-verify/node_modules/@ethersproject/transactions": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.8.0.tgz", + "integrity": "sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/rlp": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0" + } + }, + "node_modules/@nomicfoundation/hardhat-verify/node_modules/@ethersproject/web": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.8.0.tgz", + "integrity": "sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/base64": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" + } + }, + "node_modules/@nomicfoundation/hardhat-verify/node_modules/bn.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@nomicfoundation/hardhat-verify/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@nomicfoundation/hardhat-verify/node_modules/elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/@nomicfoundation/hardhat-verify/node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@nomicfoundation/hardhat-zod-utils": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-zod-utils/-/hardhat-zod-utils-3.0.1.tgz", + "integrity": "sha512-I6/pyYiS9p2lLkzQuedr1ScMocH+ew8l233xTi+LP92gjEiviJDxselpkzgU01MUM0t6BPpfP8yMO958LDEJVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nomicfoundation/hardhat-errors": "^3.0.0", + "@nomicfoundation/hardhat-utils": "^3.0.2" + }, + "peerDependencies": { + "zod": "^3.23.8" + } + }, + "node_modules/@nomicfoundation/ignition-core": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-core/-/ignition-core-3.0.4.tgz", + "integrity": "sha512-RCgCnZIhOgcdQZtYXAe9OUvAAjEMzRXYKfNMzER0TosYznx3xZlwV/haxColrswVFWCg8WiNVRDz+VfaTMXIrw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/address": "5.6.1", + "@nomicfoundation/hardhat-errors": "^3.0.2", + "@nomicfoundation/hardhat-utils": "^3.0.5", + "@nomicfoundation/solidity-analyzer": "^0.1.1", + "cbor2": "^1.9.0", + "debug": "^4.3.2", + "ethers": "^6.14.0", + "immer": "10.0.2", + "lodash-es": "4.17.21", + "ndjson": "2.0.0" + } + }, + "node_modules/@nomicfoundation/ignition-core/node_modules/@ethersproject/address": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.1.tgz", + "integrity": "sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/rlp": "^5.6.1" + } + }, + "node_modules/@nomicfoundation/ignition-ui": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-ui/-/ignition-ui-3.0.4.tgz", + "integrity": "sha512-CDohzyQiwblGg5iSYVS0U0ZQE8RRIUmZgi1XqVY/DpYszHN0IboMw7MyRqi5jP/w1CLvB1Fb+xkgEbxwB543jw==", + "dev": true, + "peer": true + }, + "node_modules/@nomicfoundation/slang": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/slang/-/slang-0.17.0.tgz", + "integrity": "sha512-1GlkGRcGpVnjFw9Z1vvDKOKo2mzparFt7qrl2pDxWp+jrVtlvej98yCMX52pVyrYE7ZeOSZFnx/DtsSgoukStQ==", + "dev": true, + "dependencies": { + "@nomicfoundation/slang-darwin-arm64": "0.17.0", + "@nomicfoundation/slang-darwin-x64": "0.17.0", + "@nomicfoundation/slang-linux-arm64-gnu": "0.17.0", + "@nomicfoundation/slang-linux-arm64-musl": "0.17.0", + "@nomicfoundation/slang-linux-x64-gnu": "0.17.0", + "@nomicfoundation/slang-linux-x64-musl": "0.17.0", + "@nomicfoundation/slang-win32-arm64-msvc": "0.17.0", "@nomicfoundation/slang-win32-ia32-msvc": "0.17.0", "@nomicfoundation/slang-win32-x64-msvc": "0.17.0" }, @@ -1864,6 +2478,18 @@ "node": ">=8" } }, + "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, + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=14" + } + }, "node_modules/@scure/base": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.8.tgz", @@ -1968,15 +2594,72 @@ "@streamparser/json": "^0.0.22" } }, + "node_modules/@typechain/ethers-v6": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz", + "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" + }, + "peerDependencies": { + "ethers": "6.x", + "typechain": "^8.3.2", + "typescript": ">=4.7.0" + } + }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/chai-as-promised": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-8.0.2.tgz", + "integrity": "sha512-meQ1wDr1K5KRCSvG2lX7n7/5wf70BeptTKst0axGvnN6zqaVpRqegoIbugiAPSqOW9K9aL8gDVrm7a2LXOtn2Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/chai": "*" + } + }, "node_modules/@types/debug": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", - "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/ms": "*" } }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/figlet": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@types/figlet/-/figlet-1.7.0.tgz", + "integrity": "sha512-KwrT7p/8Eo3Op/HBSIwGXOsTZKYiM9NpWRBJ5sVjWP/SmlS+oxxRvJht/FNAtliJvja44N3ul1yATgohnVBV0Q==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/@types/fs-extra": { "version": "11.0.4", "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz", @@ -1988,16 +2671,6 @@ "@types/node": "*" } }, - "node_modules/@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "dependencies": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, "node_modules/@types/jsonfile": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz", @@ -2008,12 +2681,6 @@ "@types/node": "*" } }, - "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/ms": { "version": "0.7.31", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", @@ -2038,11 +2705,25 @@ "@types/node": "*" } }, - "node_modules/@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/prompts": { + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/@types/prompts/-/prompts-2.4.9.tgz", + "integrity": "sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/node": "*", + "kleur": "^3.0.3" + } }, "node_modules/@types/secp256k1": { "version": "4.0.3", @@ -2091,11 +2772,28 @@ "node": ">=10" } }, - "node_modules/abbrev": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", - "dev": true + "node_modules/abitype": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.1.1.tgz", + "integrity": "sha512-Loe5/6tAgsBukY95eGaPSDmQHIjRZYQq8PB1MpsNccDIK8WiV+Uw6WzaIXipvaxTEL2yEB0OpEaQv3gs8pkS9Q==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/wevm" + }, + "peerDependencies": { + "typescript": ">=5.0.4", + "zod": "^3.22.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "zod": { + "optional": true + } + } }, "node_modules/adm-zip": { "version": "0.4.16", @@ -2124,14 +2822,14 @@ "node": ">= 6.0.0" } }, - "node_modules/amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, - "optional": true, + "license": "MIT", "engines": { - "node": ">=0.4.2" + "node": ">=8" } }, "node_modules/ansi-styles": { @@ -2139,6 +2837,7 @@ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, + "peer": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -2159,13 +2858,15 @@ "node": ">= 8" } }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" } }, "node_modules/array-buffer-byte-length": { @@ -2181,15 +2882,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/array.prototype.findlast": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.3.tgz", @@ -2230,6 +2922,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=12" + } + }, "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -2568,11 +3271,55 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, + "node_modules/cbor2": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/cbor2/-/cbor2-1.12.0.tgz", + "integrity": "sha512-3Cco8XQhi27DogSp9Ri6LYNZLi/TBY/JVnDe+mj06NkBjW/ZYOtekaEU4wZ4xcRMNrFkDv8KNtOAqHyDfz3lYg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18.7" + } + }, + "node_modules/chai": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/chai-as-promised": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-8.0.2.tgz", + "integrity": "sha512-1GadL+sEJVLzDjcawPM4kjfnL+p/9vrxiEUonowKOAzvVg0PixJUdtuDzdkDeQhK3zfOE76GqGkZIQ7/Adcrqw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "check-error": "^2.1.1" + }, + "peerDependencies": { + "chai": ">= 2.1.2 < 7" + } + }, "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, + "peer": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -2587,6 +3334,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, + "peer": true, "engines": { "node": ">=4" } @@ -2596,6 +3344,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -2603,6 +3352,25 @@ "node": ">=4" } }, + "node_modules/change-case": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", + "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 16" + } + }, "node_modules/cheerio": { "version": "1.0.0-rc.12", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", @@ -2822,11 +3590,28 @@ "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "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, + "peer": true, "dependencies": { "color-name": "1.1.3" } @@ -2835,7 +3620,8 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "dev": true, + "peer": true }, "node_modules/colorette": { "version": "2.0.20", @@ -2855,6 +3641,62 @@ "node": ">= 0.8" } }, + "node_modules/command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/command-line-usage": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/command-line-usage/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/command-line-usage/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, "node_modules/commander": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", @@ -3163,10 +4005,11 @@ } }, "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==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -3233,16 +4076,10 @@ "node": ">=0.12" } }, - "node_modules/death": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", - "integrity": "sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg=", - "dev": true - }, "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { @@ -3257,11 +4094,27 @@ } } }, - "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=4.0.0" + } }, "node_modules/define-data-property": { "version": "1.1.0", @@ -3323,39 +4176,6 @@ "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", "dev": true }, - "node_modules/difflib": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", - "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", - "dev": true, - "dependencies": { - "heap": ">= 0.2.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dir-glob/node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/dom-serializer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", @@ -3424,6 +4244,17 @@ "url": "https://dotenvx.com" } }, + "node_modules/dotenv-expand": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", + "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=12" + } + }, "node_modules/dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -3439,6 +4270,33 @@ "node": ">= 0.4" } }, + "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, + "license": "MIT", + "peer": true + }, + "node_modules/eip-1193": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/eip-1193/-/eip-1193-0.6.5.tgz", + "integrity": "sha512-KXCSdjFLIT5/06rMD2pMqoAZhZcTg4EofiCI70ovIOy8L/6twGJFE+RtW89S/hMFKDoNEGJ/WK8jQv7CpuGDgg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/eip-1193-jsonrpc-provider": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/eip-1193-jsonrpc-provider/-/eip-1193-jsonrpc-provider-0.4.3.tgz", + "integrity": "sha512-xcrz22ArOqvbXt4LHOeV5JooL8jTt/sv8WIH7MLQTn8z7fQwRDDzUECgIwZaX1Irpn/HIZGiu6YZwIoRVfPEow==", + "dev": true, + "peer": true, + "dependencies": { + "named-logs": "^0.3.2", + "promise-throttle": "^1.1.2" + } + }, "node_modules/elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", @@ -3460,12 +4318,6 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "node_modules/encode-utf8": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", - "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==", - "dev": true - }, "node_modules/encoding": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", @@ -3795,50 +4647,7 @@ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", - "dev": true, - "dependencies": { - "esprima": "^2.7.1", - "estraverse": "^1.9.1", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=0.12.0" - }, - "optionalDependencies": { - "source-map": "~0.2.0" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", - "dev": true, - "optional": true, - "dependencies": { - "amdefine": ">=0.0.4" - }, + "peer": true, "engines": { "node": ">=0.8.0" } @@ -3859,43 +4668,6 @@ "node": ">=0.10" } }, - "node_modules/esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true, - "dependencies": { - "js-sha3": "^0.8.0" - } - }, - "node_modules/ethereum-bloom-filters/node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true - }, "node_modules/ethereum-cryptography": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", @@ -3950,25 +4722,99 @@ "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", "dev": true }, - "node_modules/ethjs-unit": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", - "integrity": "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=", + "node_modules/ethers": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.15.0.tgz", + "integrity": "sha512-Kf/3ZW54L4UT0pZtsY/rf+EkBU7Qi5nnhonjUb8yTXcxH3cdcWrV2cRyk0Xk/4jK6OoHhxxZHriyhje20If2hQ==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "peer": true, "dependencies": { - "bn.js": "4.11.6", - "number-to-bn": "1.7.0" + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "22.7.5", + "aes-js": "4.0.0-beta.5", + "tslib": "2.7.0", + "ws": "8.17.1" }, "engines": { - "node": ">=6.5.0", - "npm": ">=3" + "node": ">=14.0.0" } }, - "node_modules/ethjs-unit/node_modules/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", - "dev": true + "node_modules/ethers/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, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ethers/node_modules/@types/node": { + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/ethers/node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/ethers/node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/ethers/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "dev": true, + "license": "MIT", + "peer": 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/event-emitter": { "version": "0.3.5", @@ -3981,6 +4827,13 @@ "es5-ext": "~0.10.14" } }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true, + "license": "MIT" + }, "node_modules/evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", @@ -4105,44 +4958,41 @@ "node": ">=6.0.0" } }, - "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" + "pend": "~1.2.0" } }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "node_modules/figlet": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.9.3.tgz", + "integrity": "sha512-majPgOpVtrZN1iyNGbsUP6bOtZ6eaJgg5HHh0vFvm5DJhh8dc+FJpOC4GABvMZ/A7XHAJUuJujhgUY/2jPWgMA==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "reusify": "^1.0.4" + "commander": "^14.0.0" + }, + "bin": { + "figlet": "bin/index.js" + }, + "engines": { + "node": ">= 17.0.0" } }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "node_modules/figlet/node_modules/commander": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz", + "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==", "dev": true, - "dependencies": { - "pend": "~1.2.0" + "license": "MIT", + "peer": true, + "engines": { + "node": ">=20" } }, "node_modules/file-url": { @@ -4166,6 +5016,20 @@ "node": ">=8" } }, + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -4236,15 +5100,6 @@ "flat": "cli.js" } }, - "node_modules/fmix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fmix/-/fmix-0.1.0.tgz", - "integrity": "sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==", - "dev": true, - "dependencies": { - "imul": "^1.0.0" - } - }, "node_modules/follow-redirects": { "version": "1.15.11", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", @@ -4275,35 +5130,44 @@ "is-callable": "^1.1.3" } }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, + "license": "ISC", + "peer": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=12" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/fs-extra/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "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, + "license": "ISC", + "peer": true, "engines": { - "node": ">= 10.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -4362,6 +5226,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-east-asian-width": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", @@ -4454,19 +5328,6 @@ "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/ghost-testrpc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz", - "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "node-emoji": "^1.10.0" - }, - "bin": { - "testrpc-sc": "index.js" - } - }, "node_modules/gitignore-globs": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/gitignore-globs/-/gitignore-globs-0.1.1.tgz", @@ -4505,32 +5366,6 @@ "node": ">= 6" } }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "dependencies": { - "global-prefix": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/globalthis": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", @@ -4546,25 +5381,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", - "dev": true, - "dependencies": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -4581,38 +5397,8 @@ "node_modules/graceful-fs": { "version": "4.2.6", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" - } - }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true }, "node_modules/hardhat": { "version": "3.0.10", @@ -4645,214 +5431,21 @@ "hardhat": "dist/src/cli.js" } }, - "node_modules/hardhat-dependency-compiler": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/hardhat-dependency-compiler/-/hardhat-dependency-compiler-1.2.1.tgz", - "integrity": "sha512-xG5iwbspTtxOEiP5UsPngEYQ1Hg+fjTjliapIjdTQmwGkCPofrsDhQDV2O/dopcYzcR68nTx2X8xTewYHgA2rQ==", - "dev": true, - "engines": { - "node": ">=14.14.0" - }, - "peerDependencies": { - "hardhat": "^2.0.0" - } - }, "node_modules/hardhat-deploy": { - "version": "0.11.43", - "resolved": "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.11.43.tgz", - "integrity": "sha512-D760CjDtinwjOCpKOvdyRtIJYLQIYXmhfgkFe+AkxlYM9bPZ/T4tZ/xIB2tR89ZT+z0hF1YuZFBXIL3/G/9T5g==", - "dev": true, - "dependencies": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/contracts": "^5.7.0", - "@ethersproject/providers": "^5.7.2", - "@ethersproject/solidity": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wallet": "^5.7.0", - "@types/qs": "^6.9.7", - "axios": "^0.21.1", - "chalk": "^4.1.2", - "chokidar": "^3.5.2", - "debug": "^4.3.2", - "enquirer": "^2.3.6", - "ethers": "^5.7.0", - "form-data": "^4.0.0", - "fs-extra": "^10.0.0", - "match-all": "^1.2.6", - "murmur-128": "^0.2.1", - "qs": "^6.9.4", - "zksync-web3": "^0.14.3" - } - }, - "node_modules/hardhat-deploy/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/hardhat-deploy/node_modules/axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dev": true, - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "node_modules/hardhat-deploy/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/hardhat-deploy/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/hardhat-deploy/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/hardhat-deploy/node_modules/ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abi": "5.7.0", - "@ethersproject/abstract-provider": "5.7.0", - "@ethersproject/abstract-signer": "5.7.0", - "@ethersproject/address": "5.7.0", - "@ethersproject/base64": "5.7.0", - "@ethersproject/basex": "5.7.0", - "@ethersproject/bignumber": "5.7.0", - "@ethersproject/bytes": "5.7.0", - "@ethersproject/constants": "5.7.0", - "@ethersproject/contracts": "5.7.0", - "@ethersproject/hash": "5.7.0", - "@ethersproject/hdnode": "5.7.0", - "@ethersproject/json-wallets": "5.7.0", - "@ethersproject/keccak256": "5.7.0", - "@ethersproject/logger": "5.7.0", - "@ethersproject/networks": "5.7.1", - "@ethersproject/pbkdf2": "5.7.0", - "@ethersproject/properties": "5.7.0", - "@ethersproject/providers": "5.7.2", - "@ethersproject/random": "5.7.0", - "@ethersproject/rlp": "5.7.0", - "@ethersproject/sha2": "5.7.0", - "@ethersproject/signing-key": "5.7.0", - "@ethersproject/solidity": "5.7.0", - "@ethersproject/strings": "5.7.0", - "@ethersproject/transactions": "5.7.0", - "@ethersproject/units": "5.7.0", - "@ethersproject/wallet": "5.7.0", - "@ethersproject/web": "5.7.1", - "@ethersproject/wordlists": "5.7.0" - } - }, - "node_modules/hardhat-deploy/node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/hardhat-deploy/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/hardhat-deploy/node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hardhat-deploy/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "2.0.0-next.52", + "resolved": "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-2.0.0-next.52.tgz", + "integrity": "sha512-2TnKamuM7hzhipOKgMzBn379xZvoAjAuEF+pwfqSN9Bavvf61193kURNdSNKBtksPCFoCGoxEoR9umB0QVrrsA==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "@nomicfoundation/hardhat-zod-utils": "3.0.1", + "@types/debug": "^4.1.12", + "debug": "^4.4.3", + "slash": "^5.1.0", + "zod": "^3.25.76" }, - "engines": { - "node": ">=8" - } - }, - "node_modules/hardhat-deploy/node_modules/zksync-web3": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/zksync-web3/-/zksync-web3-0.14.4.tgz", - "integrity": "sha512-kYehMD/S6Uhe1g434UnaMN+sBr9nQm23Ywn0EUP5BfQCsbjcr3ORuS68PosZw8xUTu3pac7G6YMSnNHk+fwzvg==", - "deprecated": "This package has been deprecated in favor of zksync-ethers@5.0.0", - "dev": true, "peerDependencies": { - "ethers": "^5.7.0" + "hardhat": "^3.0.6", + "rocketh": "^0.15.0" } }, "node_modules/hardhat/node_modules/@noble/curves": { @@ -4935,41 +5528,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/hardhat/node_modules/semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/hardhat/node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "dev": true, - "license": "MIT", - "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/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -4991,15 +5549,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/has-property-descriptors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", @@ -5099,12 +5648,6 @@ "he": "bin/he" } }, - "node_modules/heap": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", - "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", - "dev": true - }, "node_modules/hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -5192,22 +5735,16 @@ } ] }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/imul": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/imul/-/imul-1.0.1.tgz", - "integrity": "sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==", + "node_modules/immer": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.2.tgz", + "integrity": "sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA==", "dev": true, - "engines": { - "node": ">=0.10.0" + "license": "MIT", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" } }, "node_modules/inflight": { @@ -5226,12 +5763,6 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, "node_modules/internal-slot": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", @@ -5246,15 +5777,6 @@ "node": ">= 0.4" } }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", @@ -5321,18 +5843,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-core-module": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", - "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-date-object": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", @@ -5354,6 +5864,16 @@ "node": ">=0.10.0" } }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", @@ -5366,16 +5886,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-hex-prefixed": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=", - "dev": true, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, "node_modules/is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -5412,6 +5922,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, "node_modules/is-promise": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", @@ -5522,41 +6043,56 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "node_modules/js-graph-algorithms": { - "version": "1.0.18", - "resolved": "https://registry.npmjs.org/js-graph-algorithms/-/js-graph-algorithms-1.0.18.tgz", - "integrity": "sha512-Gu1wtWzXBzGeye/j9BuyplGHscwqKRZodp/0M1vyBc19RJpblSwKGu099KwwaTx9cRIV+Qupk8xUMfEiGfFqSA==", + "node_modules/isows": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.7.tgz", + "integrity": "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==", "dev": true, - "bin": { - "js-graphs": "src/jsgraphs.js" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "peer": true, + "peerDependencies": { + "ws": "*" } }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, + "license": "BlueOak-1.0.0", + "peer": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "@isaacs/cliui": "^8.0.2" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/js-yaml/node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "node_modules/js-graph-algorithms": { + "version": "1.0.18", + "resolved": "https://registry.npmjs.org/js-graph-algorithms/-/js-graph-algorithms-1.0.18.tgz", + "integrity": "sha512-Gu1wtWzXBzGeye/j9BuyplGHscwqKRZodp/0M1vyBc19RJpblSwKGu099KwwaTx9cRIV+Qupk8xUMfEiGfFqSA==", "dev": true, "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" + "js-graphs": "src/jsgraphs.js" } }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true, + "license": "MIT" + }, "node_modules/json-stream-stringify": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/json-stream-stringify/-/json-stream-stringify-3.1.6.tgz", @@ -5567,34 +6103,26 @@ "node": ">=7.10.1" } }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonfile/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/jsonschema": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.0.tgz", - "integrity": "sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw==", + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "license": "ISC", + "peer": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "json5": "lib/cli.js" + }, "engines": { - "node": "*" + "node": ">=6" } }, "node_modules/keccak": { @@ -5612,26 +6140,29 @@ "node": ">=10.0.0" } }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, + "license": "MIT", + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "node_modules/ldenv": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/ldenv/-/ldenv-0.3.14.tgz", + "integrity": "sha512-o/Rjhpy/AZm6Noeoup4rMZRznHFcP0+qRaP+GWeZiiy2kA7U7JHYwrJh1pu8r6W+oPDSL0RopDeQPZawJ3NzLA==", "dev": true, + "peer": true, "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "dotenv": "^16.0.3", + "dotenv-expand": "^10.0.0" }, - "engines": { - "node": ">= 0.8.0" + "bin": { + "ldenv": "dist/cli.cjs" } }, "node_modules/lilconfig": { @@ -5749,12 +6280,6 @@ "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", "dev": true }, - "node_modules/listr2/node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "dev": true - }, "node_modules/listr2/node_modules/string-width": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", @@ -5822,6 +6347,22 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/lodash.omit": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", @@ -6064,17 +6605,21 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/loupe": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", + "dev": true, + "license": "MIT", + "peer": true + }, "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": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } + "license": "ISC", + "peer": true }, "node_modules/lru-queue": { "version": "0.1.0", @@ -6086,12 +6631,6 @@ "es5-ext": "~0.10.2" } }, - "node_modules/match-all": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/match-all/-/match-all-1.2.6.tgz", - "integrity": "sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==", - "dev": true - }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -6139,15 +6678,6 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/micro-eth-signer": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/micro-eth-signer/-/micro-eth-signer-0.14.0.tgz", @@ -6303,16 +6833,15 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, - "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "mkdirp": "bin/cmd.js" + "license": "ISC", + "peer": true, + "engines": { + "node": ">=16 || 14 >=14.17" } }, "node_modules/mkdirp-classic": { @@ -6365,15 +6894,6 @@ "node": ">=6" } }, - "node_modules/mocha/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/mocha/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -6412,15 +6932,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, "node_modules/mocha/node_modules/glob": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", @@ -6450,15 +6961,6 @@ "node": ">=8" } }, - "node_modules/mocha/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/mocha/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -6483,44 +6985,6 @@ "node": ">=10" } }, - "node_modules/mocha/node_modules/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/mocha/node_modules/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/mocha/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/mocha/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -6536,15 +7000,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/mocha/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/mocha/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -6579,22 +7034,53 @@ "dev": true, "license": "MIT" }, - "node_modules/murmur-128": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/murmur-128/-/murmur-128-0.2.1.tgz", - "integrity": "sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg==", + "node_modules/named-logs": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/named-logs/-/named-logs-0.3.2.tgz", + "integrity": "sha512-rpgShWrH6NakMKUDK32Pn/FZyPl7QoQRleMekHKkbrExXDymb2wNm3/BUbdTG5f3v7Qa17imVkSWHOfNFhDIPw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/named-logs-console": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/named-logs-console/-/named-logs-console-0.3.1.tgz", + "integrity": "sha512-qExLlmkSSrI/57Juvc94c0zlldI5IvreilyFeg7KfxMGGotTVER6xfk+KB7DZ5m18GYnFZn77z2kyigtcn2zHA==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "encode-utf8": "^1.0.2", - "fmix": "^0.1.0", - "imul": "^1.0.0" + "named-logs": "^0.2.2" } }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "node_modules/named-logs-console/node_modules/named-logs": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/named-logs/-/named-logs-0.2.4.tgz", + "integrity": "sha512-QHlcLpK2Ij+u7ZYDYgaYkTIlC/NcOwEnFdqbY+PF9ewAMUjvBwRVUyqBUtVaJ3V2YKVy2HiloAgLUdOEVRRyBA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/ndjson": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-2.0.0.tgz", + "integrity": "sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "json-stringify-safe": "^5.0.1", + "minimist": "^1.2.5", + "readable-stream": "^3.6.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + }, + "bin": { + "ndjson": "cli.js" + }, + "engines": { + "node": ">=10" + } }, "node_modules/next-tick": { "version": "1.1.0", @@ -6609,15 +7095,6 @@ "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", "dev": true }, - "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "dev": true, - "dependencies": { - "lodash": "^4.17.21" - } - }, "node_modules/node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -6658,18 +7135,6 @@ "node": ">=12.19" } }, - "node_modules/nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -6718,26 +7183,6 @@ "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/number-to-bn": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", - "integrity": "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=", - "dev": true, - "dependencies": { - "bn.js": "4.11.6", - "strip-hex-prefix": "1.0.0" - }, - "engines": { - "node": ">=6.5.0", - "npm": ">=3" - } - }, - "node_modules/number-to-bn/node_modules/bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", - "dev": true - }, "node_modules/object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -6798,21 +7243,131 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "node_modules/ox": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.9.6.tgz", + "integrity": "sha512-8SuCbHPvv2eZLYXrNmC0EC12rdzXQLdhnOMlHDW2wiCPLxBrOOJwX5L5E61by+UjTPOryqQiRSnjIKCI+GykKg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "peer": true, + "dependencies": { + "@adraffy/ens-normalize": "^1.11.0", + "@noble/ciphers": "^1.3.0", + "@noble/curves": "1.9.1", + "@noble/hashes": "^1.8.0", + "@scure/bip32": "^1.7.0", + "@scure/bip39": "^1.6.0", + "abitype": "^1.0.9", + "eventemitter3": "5.0.1" + }, + "peerDependencies": { + "typescript": ">=5.4.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/ox/node_modules/@adraffy/ens-normalize": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz", + "integrity": "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/ox/node_modules/@noble/ciphers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ox/node_modules/@noble/curves": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", + "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ox/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ox/node_modules/@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ox/node_modules/@scure/bip32": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", + "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/curves": "~1.9.0", + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ox/node_modules/@scure/bip39": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz", + "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==", + "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" }, - "engines": { - "node": ">= 0.8.0" + "funding": { + "url": "https://paulmillr.com/funding/" } }, "node_modules/p-limit": { @@ -6864,6 +7419,14 @@ "node": ">=6" } }, + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "license": "BlueOak-1.0.0", + "peer": true + }, "node_modules/parse5": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", @@ -6916,11 +7479,34 @@ "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.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "peer": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/pathval": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 14.16" + } }, "node_modules/pbkdf2": { "version": "3.1.2", @@ -6944,6 +7530,14 @@ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC", + "peer": true + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -6980,15 +7574,6 @@ "integrity": "sha512-2Xy6LImSXm0ANKv9BKSVuCa6Z4ACbK7oUrl9gtUgqLkekL7n9C0mlWsOGYYuGbCG8xT0x3Q4F31C3ZMyVQjwsg==", "dev": true }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/prettier": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", @@ -7046,18 +7631,6 @@ "integrity": "sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==", "dev": true }, - "node_modules/prettier-plugin-solidity/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/progress": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", @@ -7067,6 +7640,29 @@ "node": ">=0.4.0" } }, + "node_modules/promise-throttle": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/promise-throttle/-/promise-throttle-1.1.2.tgz", + "integrity": "sha512-dij7vjyXNewuuN/gyr+TX2KRjw48mbV5FEtgyXaIoJjGYAKT0au23/voNvy9eS4UNJjx2KUdEcO5Yyfc1h7vWQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/proper-lockfile": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", @@ -7231,26 +7827,6 @@ } } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "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" - } - ] - }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -7286,28 +7862,15 @@ "node": ">=8.10.0" } }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "node_modules/reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", "dev": true, - "dependencies": { - "minimatch": "3.0.4" - }, + "license": "MIT", + "peer": true, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, "node_modules/regexp.prototype.flags": { @@ -7336,19 +7899,6 @@ "node": ">=0.10.0" } }, - "node_modules/resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", @@ -7421,16 +7971,6 @@ "node": ">= 4" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, "node_modules/rfdc": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", @@ -7464,27 +8004,42 @@ "rlp": "bin/rlp" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "node_modules/rocketh": { + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/rocketh/-/rocketh-0.15.7.tgz", + "integrity": "sha512-F51FG3XTo1/HJ9lwCSnrAUbLlT6dFqCi7Vj7YQY6d6Xlyhiytv5W/LGmiGExGHVj9mIP7YY/ipee/StZ451iRA==", "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" - } - ], + "peer": true, "dependencies": { - "queue-microtask": "^1.2.2" + "@types/figlet": "^1.7.0", + "@types/prompts": "^2.4.9", + "abitype": "^1.1.0", + "change-case": "^5.4.4", + "commander": "^13.1.0", + "eip-1193": "^0.6.5", + "eip-1193-jsonrpc-provider": "^0.4.3", + "ethers": "^6.15.0", + "figlet": "^1.9.1", + "ldenv": "^0.3.12", + "named-logs": "^0.3.2", + "named-logs-console": "^0.3.1", + "prompts": "^2.4.2", + "tsx": "^4.20.5", + "viem": "^2.37.6" + }, + "bin": { + "rocketh": "dist/cli.js" + } + }, + "node_modules/rocketh/node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18" } }, "node_modules/safe-array-concat": { @@ -7553,59 +8108,6 @@ "optional": true, "peer": true }, - "node_modules/sc-istanbul": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz", - "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==", - "dev": true, - "dependencies": { - "abbrev": "1.0.x", - "async": "1.x", - "escodegen": "1.8.x", - "esprima": "2.7.x", - "glob": "^5.0.15", - "handlebars": "^4.0.1", - "js-yaml": "3.x", - "mkdirp": "0.5.x", - "nopt": "3.x", - "once": "1.x", - "resolve": "1.1.x", - "supports-color": "^3.1.0", - "which": "^1.1.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "istanbul": "lib/cli.js" - } - }, - "node_modules/sc-istanbul/node_modules/async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "node_modules/sc-istanbul/node_modules/glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/sc-istanbul/node_modules/resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - }, "node_modules/scrypt-js": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", @@ -7627,6 +8129,19 @@ "node": ">=10.0.0" } }, + "node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -7690,23 +8205,6 @@ "node": ">=8" } }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, - "dependencies": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -7727,13 +8225,25 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "license": "MIT", + "peer": true + }, "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/sol2uml": { @@ -8577,150 +9087,44 @@ "@ethersproject/wordlists": "5.8.0" } }, - "node_modules/sol2uml/node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true, - "license": "MIT" - }, "node_modules/sol2uml/node_modules/klaw": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-4.1.0.tgz", - "integrity": "sha512-1zGZ9MF9H22UnkpVeuaGKOjfA2t6WrfdrJmGjy16ykcjnKQDmHVX+KI477rpbGevz/5FD4MC3xf1oxylBgcaQw==", - "dev": true, - "engines": { - "node": ">=14.14.0" - } - }, - "node_modules/sol2uml/node_modules/ws": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", - "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", - "dev": true, - "license": "MIT", - "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/solidity-ast": { - "version": "0.4.52", - "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.52.tgz", - "integrity": "sha512-iOya9BSiB9jhM8Vf40n8lGELGzwrUc57rl5BhfNtJ5cvAaMvRcNlHeAMNvqJJyjoUnczqRbHqdivEqK89du3Cw==", - "dev": true, - "dependencies": { - "array.prototype.findlast": "^1.2.2" - } - }, - "node_modules/solidity-coverage": { - "version": "0.8.14", - "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.14.tgz", - "integrity": "sha512-ItAAObe5GaEOp20kXC2BZRnph+9P7Rtoqg2mQc2SXGEHgSDF2wWd1Wxz3ntzQWXkbCtIIGdJT918HG00cObwbA==", - "dev": true, - "dependencies": { - "@ethersproject/abi": "^5.0.9", - "@solidity-parser/parser": "^0.19.0", - "chalk": "^2.4.2", - "death": "^1.1.0", - "difflib": "^0.2.4", - "fs-extra": "^8.1.0", - "ghost-testrpc": "^0.0.2", - "global-modules": "^2.0.0", - "globby": "^10.0.1", - "jsonschema": "^1.2.4", - "lodash": "^4.17.21", - "mocha": "^10.2.0", - "node-emoji": "^1.10.0", - "pify": "^4.0.1", - "recursive-readdir": "^2.2.2", - "sc-istanbul": "^0.4.5", - "semver": "^7.3.4", - "shelljs": "^0.8.3", - "web3-utils": "^1.3.6" - }, - "bin": { - "solidity-coverage": "plugins/bin.js" - }, - "peerDependencies": { - "hardhat": "^2.11.0" - } - }, - "node_modules/solidity-coverage/node_modules/@solidity-parser/parser": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.19.0.tgz", - "integrity": "sha512-RV16k/qIxW/wWc+mLzV3ARyKUaMUTBy9tOLMzFhtNSKYeTAanQ3a5MudJKf/8arIFnA2L27SNjarQKmFg0w/jA==", - "dev": true - }, - "node_modules/solidity-coverage/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/solidity-coverage/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/solidity-coverage/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-4.1.0.tgz", + "integrity": "sha512-1zGZ9MF9H22UnkpVeuaGKOjfA2t6WrfdrJmGjy16ykcjnKQDmHVX+KI477rpbGevz/5FD4MC3xf1oxylBgcaQw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=14.14.0" } }, - "node_modules/solidity-coverage/node_modules/semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "node_modules/sol2uml/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" + "license": "MIT", + "engines": { + "node": ">=10.0.0" }, - "bin": { - "semver": "bin/semver.js" + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" }, - "engines": { - "node": ">=10" + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": 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", - "integrity": "sha512-f/I5G2iJgU1h0XrrjRD0hHMr7C10u276vYvm//rw1TzFcYQ4xTOyAoi9oNAHRU0JU4mY9eTuxdVc2zahdMuhaQ==", + "node_modules/solidity-ast": { + "version": "0.4.52", + "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.52.tgz", + "integrity": "sha512-iOya9BSiB9jhM8Vf40n8lGELGzwrUc57rl5BhfNtJ5cvAaMvRcNlHeAMNvqJJyjoUnczqRbHqdivEqK89du3Cw==", "dev": true, "dependencies": { - "handlebars": "^4.7.7", - "solidity-ast": "^0.4.38" - }, - "peerDependencies": { - "hardhat": "^2.8.0" + "array.prototype.findlast": "^1.2.2" } }, "node_modules/solstruct": { @@ -8728,11 +9132,16 @@ "resolved": "https://registry.npmjs.org/solstruct/-/solstruct-0.1.0.tgz", "integrity": "sha512-7XiFF2g3R08tsfhhZfKbKheNC0A5lsdAxk5R2HVPzT/kwenTh8AUzmQoc10xw+zXO813KRRLK3t65KqgUE2T4w==" }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "node_modules/split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "readable-stream": "^3.0.0" + } }, "node_modules/string_decoder": { "version": "1.3.0", @@ -8752,6 +9161,46 @@ "node": ">=0.6.19" } }, + "node_modules/string-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", + "dev": true, + "license": "WTFPL OR MIT", + "peer": true + }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "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, + "license": "MIT", + "peer": 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", @@ -8797,6 +9246,34 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/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, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "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, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-final-newline": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", @@ -8809,29 +9286,56 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-hex-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", - "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "dependencies": { - "is-hex-prefixed": "1.0.0" - }, + "license": "MIT", "engines": { - "node": ">=6.5.0", - "npm": ">=3" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "node_modules/table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { - "has-flag": "^1.0.0" + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" }, "engines": { - "node": ">=0.8.0" + "node": ">=8.0.0" + } + }, + "node_modules/table-layout/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/table-layout/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" } }, "node_modules/tar-fs": { @@ -8859,53 +9363,182 @@ "readable-stream": "^3.1.1" }, "engines": { - "node": ">=6" + "node": ">=6" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "readable-stream": "3" + } + }, + "node_modules/timers-ext": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz", + "integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==", + "dev": true, + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.64", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/tinyurl": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/tinyurl/-/tinyurl-1.1.7.tgz", + "integrity": "sha512-NCnyDkBTByS/pLH/Vrx/DPL8EciAUDoAvruaM/WnQLfX6Uame3D1nuWNy2Z9CXw7rcsok0tjuonRLolhmyz5rg==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "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", + "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==", + "dev": true, + "license": "ISC", + "peer": true, + "dependencies": { + "chalk": "^4.1.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^6.1.0", + "string-format": "^2.0.0" + }, + "bin": { + "write-markdown": "dist/write-markdown.js" + } + }, + "node_modules/ts-command-line-args/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-command-line-args/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ts-command-line-args/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-command-line-args/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/ts-command-line-args/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" } }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "node_modules/timers-ext": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz", - "integrity": "sha512-wFH7+SEAcKfJpfLPkrgMPvvwnEtj8W4IurvEyrKsDleXnKLCDw71w8jltvfLa8Rm4qQxxT4jmDBYbJG/z7qoww==", + "node_modules/ts-command-line-args/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "ISC", + "license": "MIT", + "peer": true, "dependencies": { - "es5-ext": "^0.10.64", - "next-tick": "^1.1.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=0.12" + "node": ">=8" } }, - "node_modules/tinyurl": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/tinyurl/-/tinyurl-1.1.7.tgz", - "integrity": "sha512-NCnyDkBTByS/pLH/Vrx/DPL8EciAUDoAvruaM/WnQLfX6Uame3D1nuWNy2Z9CXw7rcsok0tjuonRLolhmyz5rg==", - "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/ts-essentials": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", + "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" + "license": "MIT", + "peer": true, + "peerDependencies": { + "typescript": ">=3.7.0" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true + "node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "dev": true, + "license": "0BSD", + "peer": true }, "node_modules/tsx": { "version": "4.20.6", @@ -8934,16 +9567,111 @@ "dev": true, "license": "ISC" }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "node_modules/typechain": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz", + "integrity": "sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/prettier": "^2.1.1", + "debug": "^4.3.1", + "fs-extra": "^7.0.0", + "glob": "7.1.7", + "js-sha3": "^0.8.0", + "lodash": "^4.17.15", + "mkdirp": "^1.0.4", + "prettier": "^2.3.1", + "ts-command-line-args": "^2.2.0", + "ts-essentials": "^7.0.1" + }, + "bin": { + "typechain": "dist/cli/cli.js" + }, + "peerDependencies": { + "typescript": ">=4.3.0" + } + }, + "node_modules/typechain/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/typechain/node_modules/glob": { + "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, + "license": "ISC", + "peer": true, "dependencies": { - "prelude-ls": "~1.1.2" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typechain/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "license": "MIT", + "peer": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/typechain/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/typechain/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "prettier": "bin-prettier.js" }, "engines": { - "node": ">= 0.8.0" + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/typed-array-buffer": { @@ -9012,30 +9740,29 @@ } }, "node_modules/typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, + "license": "Apache-2.0", "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" }, "engines": { - "node": ">=12.20" + "node": ">=14.17" } }, - "node_modules/uglify-js": { - "version": "3.15.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.4.tgz", - "integrity": "sha512-vMOPGDuvXecPs34V74qDKk4iJ/SN4vL3Ow/23ixafENYvtrNvtbcgUeugTcUGRGsOF/5fU8/NYSL5Hyb3l1OJA==", + "node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", "dev": true, - "optional": true, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, + "license": "MIT", + "peer": true, "engines": { - "node": ">=0.8.0" + "node": ">=8" } }, "node_modules/unbox-primitive": { @@ -9098,6 +9825,7 @@ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, + "peer": true, "engines": { "node": ">= 4.0.0" } @@ -9114,41 +9842,139 @@ "node-gyp-build": "^4.2.0" } }, - "node_modules/utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", - "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", - "dev": true - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "node_modules/web3-utils": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz", - "integrity": "sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA==", + "node_modules/viem": { + "version": "2.38.6", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.38.6.tgz", + "integrity": "sha512-aqO6P52LPXRjdnP6rl5Buab65sYa4cZ6Cpn+k4OLOzVJhGIK8onTVoKMFMT04YjDfyDICa/DZyV9HmvLDgcjkw==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/wevm" + } + ], + "license": "MIT", + "peer": true, "dependencies": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" + "@noble/curves": "1.9.1", + "@noble/hashes": "1.8.0", + "@scure/bip32": "1.7.0", + "@scure/bip39": "1.6.0", + "abitype": "1.1.0", + "isows": "1.0.7", + "ox": "0.9.6", + "ws": "8.18.3" + }, + "peerDependencies": { + "typescript": ">=5.0.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/viem/node_modules/@noble/curves": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", + "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/hashes": "1.8.0" }, "engines": { - "node": ">=8.0.0" + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/web3-utils/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true + "node_modules/viem/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/viem/node_modules/@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/viem/node_modules/@scure/bip32": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", + "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/curves": "~1.9.0", + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/viem/node_modules/@scure/bip39": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz", + "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/viem/node_modules/abitype": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.1.0.tgz", + "integrity": "sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/wevm" + }, + "peerDependencies": { + "typescript": ">=5.0.4", + "zod": "^3.22.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "zod": { + "optional": true + } + } }, "node_modules/webidl-conversions": { "version": "3.0.1", @@ -9166,18 +9992,6 @@ "webidl-conversions": "^3.0.0" } }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, "node_modules/which-boxed-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", @@ -9213,20 +10027,31 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "node_modules/wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8.0.0" } }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true + "node_modules/wordwrapjs/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=8" + } }, "node_modules/workerpool": { "version": "6.5.1", @@ -9251,20 +10076,33 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { + "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, + "license": "MIT", + "peer": 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/wrap-ansi-cjs/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -9275,11 +10113,13 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/color-convert": { + "node_modules/wrap-ansi-cjs/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "license": "MIT", + "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -9287,47 +10127,47 @@ "node": ">=7.0.0" } }, - "node_modules/wrap-ansi/node_modules/color-name": { + "node_modules/wrap-ansi-cjs/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "engines": { - "node": ">=8" - } + "license": "MIT", + "peer": true }, - "node_modules/wrap-ansi/node_modules/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==", + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -9335,16 +10175,17 @@ "dev": true }, "node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "dev": true, + "license": "MIT", "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -9355,11 +10196,15 @@ } } }, - "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/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } }, "node_modules/yaml": { "version": "2.5.1", @@ -9373,6 +10218,37 @@ "node": ">= 14" } }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "peer": true, + "engines": { + "node": ">=12" + } + }, "node_modules/yargs-unparser": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", @@ -9459,6 +10335,13 @@ } }, "dependencies": { + "@adraffy/ens-normalize": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.1.tgz", + "integrity": "sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==", + "dev": true, + "peer": true + }, "@aduh95/viz.js": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/@aduh95/viz.js/-/viz.js-3.7.0.tgz", @@ -9653,88 +10536,12 @@ "dev": true, "optional": true }, - "@ethersproject/abi": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", - "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", - "dev": true, - "requires": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "@ethersproject/abstract-provider": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", - "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", - "dev": true, - "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0" - } - }, - "@ethersproject/abstract-signer": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", - "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", - "dev": true, - "requires": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, - "@ethersproject/address": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", - "dev": true, - "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/rlp": "^5.7.0" - } - }, - "@ethersproject/base64": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", - "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0" - } - }, - "@ethersproject/basex": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", - "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", - "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, "@ethersproject/bignumber": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", "dev": true, + "peer": true, "requires": { "@ethersproject/bytes": "^5.7.0", "@ethersproject/logger": "^5.7.0", @@ -9745,7 +10552,8 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true + "dev": true, + "peer": true } } }, @@ -9754,451 +10562,617 @@ "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", "dev": true, + "peer": true, "requires": { "@ethersproject/logger": "^5.7.0" } }, - "@ethersproject/constants": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", - "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", - "dev": true, - "requires": { - "@ethersproject/bignumber": "^5.7.0" - } - }, - "@ethersproject/contracts": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", - "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", - "dev": true, - "requires": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0" - } - }, - "@ethersproject/hash": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", - "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", - "dev": true, - "requires": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "@ethersproject/hdnode": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", - "dev": true, - "requires": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "@ethersproject/json-wallets": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", - "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", - "dev": true, - "requires": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "aes-js": "3.0.0", - "scrypt-js": "3.0.1" - } - }, "@ethersproject/keccak256": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", "dev": true, + "peer": true, "requires": { "@ethersproject/bytes": "^5.7.0", "js-sha3": "0.8.0" - }, - "dependencies": { - "js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true - } } }, "@ethersproject/logger": { "version": "5.7.0", "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", - "dev": true - }, - "@ethersproject/networks": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", - "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", "dev": true, - "requires": { - "@ethersproject/logger": "^5.7.0" - } + "peer": true }, - "@ethersproject/pbkdf2": { + "@ethersproject/rlp": { "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", - "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", "dev": true, + "peer": true, "requires": { "@ethersproject/bytes": "^5.7.0", - "@ethersproject/sha2": "^5.7.0" - } - }, - "@ethersproject/properties": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", - "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", - "dev": true, - "requires": { "@ethersproject/logger": "^5.7.0" } }, - "@ethersproject/providers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", - "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", - "dev": true, - "requires": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0", - "bech32": "1.1.4", - "ws": "7.4.6" - } + "@iexec/interface": { + "version": "3.0.35-8", + "resolved": "https://registry.npmjs.org/@iexec/interface/-/interface-3.0.35-8.tgz", + "integrity": "sha512-JkO9bpfpTBCOtJz/TEPzFTLlgamv7fll8RUpwC+8P6UWlGGwCe/IvgAeUZzIJ/syXaAhC0KZ7/03BEiee3f8fg==" }, - "@ethersproject/random": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", - "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", - "dev": true, + "@iexec/solidity": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@iexec/solidity/-/solidity-0.1.1.tgz", + "integrity": "sha512-XLCihhVxsA77Ug9tVnz0uiUAzVdpZGlkSzfoUTLUfYDxUr+iwXJ6zvsBKomnAvvLsRJ0lb4qiBmSMpGtZ9am4w==", "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@openzeppelin/contracts": "3.2.0", + "solstruct": "0.1.0" + }, + "dependencies": { + "@openzeppelin/contracts": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.2.0.tgz", + "integrity": "sha512-bUOmkSoPkjnUyMiKo6RYnb0VHBk5D9KKDAgNLzF41aqAM3TeE0yGdFF5dVRcV60pZdJLlyFT/jjXIZCWyyEzAQ==" + } } }, - "@ethersproject/rlp": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "@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, + "peer": true, "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "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" + }, + "dependencies": { + "ansi-regex": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", + "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "dev": true, + "peer": true + }, + "ansi-styles": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", + "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "dev": true, + "peer": true + }, + "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, + "peer": true + }, + "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, + "peer": true, + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", + "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "dev": true, + "peer": true, + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "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, + "peer": true, + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } } }, - "@ethersproject/sha2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", - "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "@mudgen/diamond-1": { + "version": "git+ssh://git@github.com/mudgen/diamond-1-hardhat.git#3da037b378195b4108b977cf2014600eeddbf67d", + "from": "@mudgen/diamond-1@github:mudgen/diamond-1-hardhat#3da037b" + }, + "@noble/ciphers": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.2.1.tgz", + "integrity": "sha512-rONPWMC7PeExE077uLE4oqWrZ1IvAfz3oH9LibVAcVCopJiA9R62uavnbEzdkVmJYI6M6Zgkbeb07+tWjlq2XA==", "dev": true, - "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "hash.js": "1.1.7" - } + "peer": true }, - "@ethersproject/signing-key": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", - "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", "dev": true, + "peer": true, "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "bn.js": "^5.2.1", - "elliptic": "6.5.4", - "hash.js": "1.1.7" + "@noble/hashes": "1.3.2" }, "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true + "@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, + "peer": true } } }, - "@ethersproject/solidity": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", - "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "@noble/hashes": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.1.tgz", + "integrity": "sha512-B8XBPsn4vT/KJAGqDzbwztd+6Yte3P4V7iafm24bxgDe/mlRuK6xmWPuCNrKt2vDafZ8MfJLlchDG/vYafQEjQ==", + "dev": true, + "peer": true + }, + "@nomicfoundation/edr": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.12.0-next.10.tgz", + "integrity": "sha512-D10VX2FO9faYhy3T+z5mx3M/cnQ1BQ9vayuunm9aQOwmqsB9G2Ozvlb41+ooXEqmNpnpxxXuD8zst6v7HydjLg==", "dev": true, "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@nomicfoundation/edr-darwin-arm64": "0.12.0-next.10", + "@nomicfoundation/edr-darwin-x64": "0.12.0-next.10", + "@nomicfoundation/edr-linux-arm64-gnu": "0.12.0-next.10", + "@nomicfoundation/edr-linux-arm64-musl": "0.12.0-next.10", + "@nomicfoundation/edr-linux-x64-gnu": "0.12.0-next.10", + "@nomicfoundation/edr-linux-x64-musl": "0.12.0-next.10", + "@nomicfoundation/edr-win32-x64-msvc": "0.12.0-next.10" } }, - "@ethersproject/strings": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", - "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "@nomicfoundation/edr-darwin-arm64": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.12.0-next.10.tgz", + "integrity": "sha512-LYXaU0Pk7zA4iAHMdvZ9Gs5QaScs9n5IpclWBNVevSHnL1/uJiFLDF4FYE/NonvaCST6Rd0E4MS3pJltsrBQmA==", + "dev": true + }, + "@nomicfoundation/edr-darwin-x64": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.12.0-next.10.tgz", + "integrity": "sha512-GtcBqSRhtjOZn6MaT9AReQS/75CY0KG/7IPURGMyjY8lxGtx6WdkzLSP7d7Jvc/WMinXZVs0jCuucfjZg/etQw==", + "dev": true + }, + "@nomicfoundation/edr-linux-arm64-gnu": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.12.0-next.10.tgz", + "integrity": "sha512-EtnYfNdKfn7Dd06/zCFwjBaiI0iPiJIy8GvwJx9oiIzcmIzKnY4ZJrsRfriAK2TBzAk8nmm8Z7r4lIzOqpBUkQ==", + "dev": true + }, + "@nomicfoundation/edr-linux-arm64-musl": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.12.0-next.10.tgz", + "integrity": "sha512-ZkKdzMy6WpSEt3+pnJteg8dX/ovnUCL95dm4+cyvySRkUCCGbp0kgQ7RlGkC7X/z/BZpaKsCjVgbEJgMFlF8sg==", + "dev": true + }, + "@nomicfoundation/edr-linux-x64-gnu": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.12.0-next.10.tgz", + "integrity": "sha512-I4eaN/ChGPxuJfycjYbUV7SmltxAGNSBJNVxmLj4+eKN30fXo+6fL2X0HdKo3dqkYq3iM/G1j9FXbxZ3ZaK/SQ==", + "dev": true + }, + "@nomicfoundation/edr-linux-x64-musl": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.12.0-next.10.tgz", + "integrity": "sha512-ruovF/WCs61If5uVBYMYns40ayW6EhdORAbQ5cUEgxN2iaQhUZ6AQNlRFCgIESOiBqDRrQZQIdJC/6pgbFzuCg==", + "dev": true + }, + "@nomicfoundation/edr-win32-x64-msvc": { + "version": "0.12.0-next.10", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.12.0-next.10.tgz", + "integrity": "sha512-5hlqjWIx5bdY7xNdrV9W+0BMbNgkwF/Am/J4Rof6J40Ht/NkKwhzs4XuGujBKCqKVKfvbqKlaexyX1qIPhS8Ag==", + "dev": true + }, + "@nomicfoundation/hardhat-errors": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-errors/-/hardhat-errors-3.0.3.tgz", + "integrity": "sha512-qvVIyNE5yXFdwCD7G74fb3j+p5PjYSej/K2mhOuJBhxdGwzARpyoJbcDZrjkNyabytlt95iniZLHHWM9jvVXEA==", "dev": true, "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@nomicfoundation/hardhat-utils": "^3.0.1" } }, - "@ethersproject/transactions": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", - "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "@nomicfoundation/hardhat-ethers": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-4.0.3.tgz", + "integrity": "sha512-DtYjmHtPM1BenmNm5ZMVn5fTGD4RdDPGE/ElpaLUjDGbkQnn4ytvhqnGsY+osLaWFvDxKfhdI8fyISg53bk8Qw==", "dev": true, + "peer": true, "requires": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0" + "@nomicfoundation/hardhat-errors": "^3.0.2", + "@nomicfoundation/hardhat-utils": "^3.0.5", + "debug": "^4.3.2", + "ethereum-cryptography": "^2.2.1", + "ethers": "^6.14.0" + }, + "dependencies": { + "@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "dev": true, + "peer": true, + "requires": { + "@noble/hashes": "1.4.0" + } + }, + "@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true, + "peer": true + }, + "ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "dev": true, + "peer": true, + "requires": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + } } }, - "@ethersproject/units": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", - "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "@nomicfoundation/hardhat-ethers-chai-matchers": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ethers-chai-matchers/-/hardhat-ethers-chai-matchers-3.0.1.tgz", + "integrity": "sha512-GRAZ5bewAiDdQfeuFlVQcuX4fcnJec7dicFyNsLT6Kz9KsY6goPcRqnK/PczWDS5mUx/ZkiRh6X1z4+tBzsYqQ==", "dev": true, + "peer": true, "requires": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" + "@nomicfoundation/hardhat-errors": "^3.0.0", + "@nomicfoundation/hardhat-utils": "^3.0.5", + "@types/chai-as-promised": "^8.0.1", + "chai-as-promised": "^8.0.0", + "deep-eql": "^5.0.1" } }, - "@ethersproject/wallet": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", - "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "@nomicfoundation/hardhat-ignition": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition/-/hardhat-ignition-3.0.4.tgz", + "integrity": "sha512-wu2aFNpvm2jiEga3p+gyOqrSWbGYkMl+hcpcb10XU7QKyv8i0RdYnGkjznElrS2vyIF038zgQoGGTS3Da+2OJw==", "dev": true, + "peer": true, "requires": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/json-wallets": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" + "@nomicfoundation/hardhat-errors": "^3.0.2", + "@nomicfoundation/hardhat-utils": "^3.0.5", + "@nomicfoundation/ignition-core": "^3.0.4", + "@nomicfoundation/ignition-ui": "^3.0.4", + "chalk": "^5.3.0", + "debug": "^4.3.2", + "json5": "^2.2.3", + "prompts": "^2.4.2" + }, + "dependencies": { + "chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "peer": true + } } }, - "@ethersproject/web": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", - "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "@nomicfoundation/hardhat-ignition-ethers": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-ignition-ethers/-/hardhat-ignition-ethers-3.0.4.tgz", + "integrity": "sha512-Us+/Z6c/E5c5yMOtgjSnRplNTJiTjPfviEKEbg+aouH2cSqQ11oO5G5/7IgBImCg5rXVgDfD2k0RwCnB9f+0gw==", "dev": true, + "peer": true, "requires": { - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@nomicfoundation/hardhat-errors": "^3.0.2" } }, - "@ethersproject/wordlists": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", - "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "@nomicfoundation/hardhat-keystore": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-keystore/-/hardhat-keystore-3.0.3.tgz", + "integrity": "sha512-rkwfdy/GsX/2SV49RGBvMsCuR+SYGJQGD3wcrS5m2Cyap5eQFEgKZbqpua6YQRA2raxRmVVH6antIIftgBFXAQ==", "dev": true, + "peer": true, "requires": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" + "@noble/ciphers": "1.2.1", + "@noble/hashes": "1.7.1", + "@nomicfoundation/hardhat-errors": "^3.0.0", + "@nomicfoundation/hardhat-utils": "^3.0.5", + "@nomicfoundation/hardhat-zod-utils": "^3.0.0", + "chalk": "^5.3.0", + "debug": "^4.3.2", + "zod": "^3.23.8" + }, + "dependencies": { + "chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "peer": true + } } }, - "@iexec/interface": { - "version": "3.0.35-8", - "resolved": "https://registry.npmjs.org/@iexec/interface/-/interface-3.0.35-8.tgz", - "integrity": "sha512-JkO9bpfpTBCOtJz/TEPzFTLlgamv7fll8RUpwC+8P6UWlGGwCe/IvgAeUZzIJ/syXaAhC0KZ7/03BEiee3f8fg==" - }, - "@iexec/solidity": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@iexec/solidity/-/solidity-0.1.1.tgz", - "integrity": "sha512-XLCihhVxsA77Ug9tVnz0uiUAzVdpZGlkSzfoUTLUfYDxUr+iwXJ6zvsBKomnAvvLsRJ0lb4qiBmSMpGtZ9am4w==", + "@nomicfoundation/hardhat-mocha": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-mocha/-/hardhat-mocha-3.0.6.tgz", + "integrity": "sha512-r7Kl0k9wmWSjacI3llHC8s/ZTtWE4xuhOi/ypE3kk6lY+VJAJYphVwktLq+sfRNwUSsc85lPhLY98fZFY5VQsA==", + "dev": true, + "peer": true, "requires": { - "@openzeppelin/contracts": "3.2.0", - "solstruct": "0.1.0" + "@nomicfoundation/hardhat-errors": "^3.0.3", + "@nomicfoundation/hardhat-utils": "^3.0.5", + "@nomicfoundation/hardhat-zod-utils": "^3.0.0", + "chalk": "^5.3.0", + "hardhat": "^3.0.11", + "mocha": "^11.0.0", + "tsx": "^4.19.3", + "zod": "^3.23.8" }, "dependencies": { - "@openzeppelin/contracts": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.2.0.tgz", - "integrity": "sha512-bUOmkSoPkjnUyMiKo6RYnb0VHBk5D9KKDAgNLzF41aqAM3TeE0yGdFF5dVRcV60pZdJLlyFT/jjXIZCWyyEzAQ==" + "@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "dev": true, + "peer": true, + "requires": { + "@noble/hashes": "1.4.0" + } + }, + "@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true, + "peer": true + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "peer": true + }, + "brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "peer": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "peer": true + }, + "chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "peer": true, + "requires": { + "readdirp": "^4.0.1" + } + }, + "diff": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "dev": true, + "peer": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "peer": true + }, + "ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "dev": true, + "peer": true, + "requires": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, + "glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "peer": true, + "requires": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + } + }, + "hardhat": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-3.0.11.tgz", + "integrity": "sha512-XvUKHNWxyDUFLZFvO7eoza7MkCDCox6ONJNxgCLyxd4fJ7UWKPj+wVmDvpMWuwQFBA64/Mi49mgz2hPwoss9PA==", + "dev": true, + "peer": true, + "requires": { + "@nomicfoundation/edr": "0.12.0-next.10", + "@nomicfoundation/hardhat-errors": "^3.0.3", + "@nomicfoundation/hardhat-utils": "^3.0.5", + "@nomicfoundation/hardhat-zod-utils": "^3.0.1", + "@nomicfoundation/solidity-analyzer": "^0.1.1", + "@sentry/core": "^9.4.0", + "adm-zip": "^0.4.16", + "chalk": "^5.3.0", + "chokidar": "^4.0.3", + "debug": "^4.3.2", + "enquirer": "^2.3.0", + "ethereum-cryptography": "^2.2.1", + "micro-eth-signer": "^0.14.0", + "p-map": "^7.0.2", + "resolve.exports": "^2.0.3", + "semver": "^7.6.3", + "tsx": "^4.19.3", + "ws": "^8.18.0", + "zod": "^3.23.8" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "peer": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "peer": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "mocha": { + "version": "11.7.4", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.4.tgz", + "integrity": "sha512-1jYAaY8x0kAZ0XszLWu14pzsf4KV740Gld4HXkhNTXwcHx4AUEDkPzgEHg9CM5dVcW+zv036tjpsEbLraPJj4w==", + "dev": true, + "peer": true, + "requires": { + "browser-stdout": "^1.3.1", + "chokidar": "^4.0.1", + "debug": "^4.3.5", + "diff": "^7.0.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^10.4.5", + "he": "^1.2.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^9.0.5", + "ms": "^2.1.3", + "picocolors": "^1.1.1", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^9.2.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", + "yargs-unparser": "^2.0.0" + } + }, + "readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "peer": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "workerpool": { + "version": "9.3.4", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.4.tgz", + "integrity": "sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg==", + "dev": true, + "peer": true } } }, - "@mudgen/diamond-1": { - "version": "git+ssh://git@github.com/mudgen/diamond-1-hardhat.git#3da037b378195b4108b977cf2014600eeddbf67d", - "from": "@mudgen/diamond-1@github:mudgen/diamond-1-hardhat#3da037b" - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "@nomicfoundation/hardhat-network-helpers": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-network-helpers/-/hardhat-network-helpers-3.0.2.tgz", + "integrity": "sha512-s5XyGSDB6lJ4cy7CiDwi0RdaBlAJcrYwwO+bersvXHFPcUPPu2fRux49yHPlundWKFjsCdV+zhluy+02B7PiRQ==", "dev": true, + "peer": true, "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@nomicfoundation/hardhat-errors": "^3.0.0", + "@nomicfoundation/hardhat-utils": "^3.0.5" } }, - "@nomicfoundation/edr": { - "version": "0.12.0-next.10", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.12.0-next.10.tgz", - "integrity": "sha512-D10VX2FO9faYhy3T+z5mx3M/cnQ1BQ9vayuunm9aQOwmqsB9G2Ozvlb41+ooXEqmNpnpxxXuD8zst6v7HydjLg==", + "@nomicfoundation/hardhat-toolbox-mocha-ethers": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-toolbox-mocha-ethers/-/hardhat-toolbox-mocha-ethers-3.0.1.tgz", + "integrity": "sha512-CB4eMIjgCfz8psNhXclcKd49LiG1C0hGmehPfw0QRY1eq0vtbQdNKLxuudVB5F8/nKJjDD2epL3aKE3SFgy+nw==", "dev": true, - "requires": { - "@nomicfoundation/edr-darwin-arm64": "0.12.0-next.10", - "@nomicfoundation/edr-darwin-x64": "0.12.0-next.10", - "@nomicfoundation/edr-linux-arm64-gnu": "0.12.0-next.10", - "@nomicfoundation/edr-linux-arm64-musl": "0.12.0-next.10", - "@nomicfoundation/edr-linux-x64-gnu": "0.12.0-next.10", - "@nomicfoundation/edr-linux-x64-musl": "0.12.0-next.10", - "@nomicfoundation/edr-win32-x64-msvc": "0.12.0-next.10" - } - }, - "@nomicfoundation/edr-darwin-arm64": { - "version": "0.12.0-next.10", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.12.0-next.10.tgz", - "integrity": "sha512-LYXaU0Pk7zA4iAHMdvZ9Gs5QaScs9n5IpclWBNVevSHnL1/uJiFLDF4FYE/NonvaCST6Rd0E4MS3pJltsrBQmA==", - "dev": true - }, - "@nomicfoundation/edr-darwin-x64": { - "version": "0.12.0-next.10", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.12.0-next.10.tgz", - "integrity": "sha512-GtcBqSRhtjOZn6MaT9AReQS/75CY0KG/7IPURGMyjY8lxGtx6WdkzLSP7d7Jvc/WMinXZVs0jCuucfjZg/etQw==", - "dev": true - }, - "@nomicfoundation/edr-linux-arm64-gnu": { - "version": "0.12.0-next.10", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.12.0-next.10.tgz", - "integrity": "sha512-EtnYfNdKfn7Dd06/zCFwjBaiI0iPiJIy8GvwJx9oiIzcmIzKnY4ZJrsRfriAK2TBzAk8nmm8Z7r4lIzOqpBUkQ==", - "dev": true - }, - "@nomicfoundation/edr-linux-arm64-musl": { - "version": "0.12.0-next.10", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.12.0-next.10.tgz", - "integrity": "sha512-ZkKdzMy6WpSEt3+pnJteg8dX/ovnUCL95dm4+cyvySRkUCCGbp0kgQ7RlGkC7X/z/BZpaKsCjVgbEJgMFlF8sg==", - "dev": true - }, - "@nomicfoundation/edr-linux-x64-gnu": { - "version": "0.12.0-next.10", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.12.0-next.10.tgz", - "integrity": "sha512-I4eaN/ChGPxuJfycjYbUV7SmltxAGNSBJNVxmLj4+eKN30fXo+6fL2X0HdKo3dqkYq3iM/G1j9FXbxZ3ZaK/SQ==", - "dev": true - }, - "@nomicfoundation/edr-linux-x64-musl": { - "version": "0.12.0-next.10", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.12.0-next.10.tgz", - "integrity": "sha512-ruovF/WCs61If5uVBYMYns40ayW6EhdORAbQ5cUEgxN2iaQhUZ6AQNlRFCgIESOiBqDRrQZQIdJC/6pgbFzuCg==", - "dev": true - }, - "@nomicfoundation/edr-win32-x64-msvc": { - "version": "0.12.0-next.10", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.12.0-next.10.tgz", - "integrity": "sha512-5hlqjWIx5bdY7xNdrV9W+0BMbNgkwF/Am/J4Rof6J40Ht/NkKwhzs4XuGujBKCqKVKfvbqKlaexyX1qIPhS8Ag==", - "dev": true + "requires": {} }, - "@nomicfoundation/hardhat-errors": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-errors/-/hardhat-errors-3.0.3.tgz", - "integrity": "sha512-qvVIyNE5yXFdwCD7G74fb3j+p5PjYSej/K2mhOuJBhxdGwzARpyoJbcDZrjkNyabytlt95iniZLHHWM9jvVXEA==", + "@nomicfoundation/hardhat-typechain": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-typechain/-/hardhat-typechain-3.0.1.tgz", + "integrity": "sha512-TkeMQhf+/4gZLMIWLxzzyVruNuLz5xW5BZdu4Clic3HFqBJRG+U2fQGWxAknMMLGONhxiZaUipE0Z+JkOugrmg==", "dev": true, + "peer": true, "requires": { - "@nomicfoundation/hardhat-utils": "^3.0.1" + "@nomicfoundation/hardhat-errors": "^3.0.0", + "@nomicfoundation/hardhat-utils": "^3.0.5", + "@nomicfoundation/hardhat-zod-utils": "^3.0.0", + "@typechain/ethers-v6": "^0.5.0", + "debug": "^4.3.2", + "typechain": "^8.3.1", + "zod": "^3.23.8" } }, "@nomicfoundation/hardhat-utils": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-utils/-/hardhat-utils-3.0.4.tgz", - "integrity": "sha512-ZExEZ0ym/oIJoXg1HmrOgIKg0hnkS16bDa5UeRbMCH/cVwcatDYKAmwQwLBhoB2JK8nPjDlYmHxYvjL65QQ1Xw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-utils/-/hardhat-utils-3.0.5.tgz", + "integrity": "sha512-5zkQSuSxkwK7fQxKswJ1GGc/3AuWBSmxA7GhczTPLx28dAXQnubRU8nA48SkCkKesJq5x4TROP+XheSE2VkLUA==", "dev": true, "requires": { "@streamparser/json-node": "^0.0.22", @@ -10217,32 +11191,321 @@ "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", "dev": true, "requires": { - "@noble/hashes": "1.4.0" + "@noble/hashes": "1.4.0" + } + }, + "@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "dev": true + }, + "ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "dev": true, + "requires": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, + "undici": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.22.0.tgz", + "integrity": "sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw==", + "dev": true + } + } + }, + "@nomicfoundation/hardhat-verify": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-3.0.5.tgz", + "integrity": "sha512-C4j4wSxgMGjQJEBIquw6NUAd24K7JrHPS53sXPbVGpAcGsHkk61Im+SbXCwjE5PqBqiPV3SBptZgzlMg/Bxr9Q==", + "dev": true, + "peer": true, + "requires": { + "@ethersproject/abi": "^5.8.0", + "@nomicfoundation/hardhat-errors": "^3.0.3", + "@nomicfoundation/hardhat-utils": "^3.0.5", + "@nomicfoundation/hardhat-zod-utils": "^3.0.0", + "cbor2": "^1.9.0", + "chalk": "^5.3.0", + "debug": "^4.3.2", + "semver": "^7.6.3", + "zod": "^3.23.8" + }, + "dependencies": { + "@ethersproject/abi": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz", + "integrity": "sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==", + "dev": true, + "peer": true, + "requires": { + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" + } + }, + "@ethersproject/abstract-provider": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz", + "integrity": "sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==", + "dev": true, + "peer": true, + "requires": { + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/networks": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/web": "^5.8.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz", + "integrity": "sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==", + "dev": true, + "peer": true, + "requires": { + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0" + } + }, + "@ethersproject/address": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.8.0.tgz", + "integrity": "sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==", + "dev": true, + "peer": true, + "requires": { + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/rlp": "^5.8.0" + } + }, + "@ethersproject/base64": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.8.0.tgz", + "integrity": "sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==", + "dev": true, + "peer": true, + "requires": { + "@ethersproject/bytes": "^5.8.0" } }, - "@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "dev": true + "@ethersproject/bignumber": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.8.0.tgz", + "integrity": "sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==", + "dev": true, + "peer": true, + "requires": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "bn.js": "^5.2.1" + } }, - "ethereum-cryptography": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", - "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "@ethersproject/bytes": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz", + "integrity": "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==", "dev": true, + "peer": true, "requires": { - "@noble/curves": "1.4.2", - "@noble/hashes": "1.4.0", - "@scure/bip32": "1.4.0", - "@scure/bip39": "1.3.0" + "@ethersproject/logger": "^5.8.0" } }, - "undici": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.22.0.tgz", - "integrity": "sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw==", - "dev": true + "@ethersproject/constants": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz", + "integrity": "sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==", + "dev": true, + "peer": true, + "requires": { + "@ethersproject/bignumber": "^5.8.0" + } + }, + "@ethersproject/hash": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.8.0.tgz", + "integrity": "sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==", + "dev": true, + "peer": true, + "requires": { + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/base64": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.8.0.tgz", + "integrity": "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==", + "dev": true, + "peer": true, + "requires": { + "@ethersproject/bytes": "^5.8.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz", + "integrity": "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==", + "dev": true, + "peer": true + }, + "@ethersproject/networks": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz", + "integrity": "sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==", + "dev": true, + "peer": true, + "requires": { + "@ethersproject/logger": "^5.8.0" + } + }, + "@ethersproject/properties": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz", + "integrity": "sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==", + "dev": true, + "peer": true, + "requires": { + "@ethersproject/logger": "^5.8.0" + } + }, + "@ethersproject/rlp": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.8.0.tgz", + "integrity": "sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==", + "dev": true, + "peer": true, + "requires": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0" + } + }, + "@ethersproject/signing-key": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.8.0.tgz", + "integrity": "sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==", + "dev": true, + "peer": true, + "requires": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "bn.js": "^5.2.1", + "elliptic": "6.6.1", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.8.0.tgz", + "integrity": "sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==", + "dev": true, + "peer": true, + "requires": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0" + } + }, + "@ethersproject/transactions": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.8.0.tgz", + "integrity": "sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==", + "dev": true, + "peer": true, + "requires": { + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/rlp": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0" + } + }, + "@ethersproject/web": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.8.0.tgz", + "integrity": "sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==", + "dev": true, + "peer": true, + "requires": { + "@ethersproject/base64": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" + } + }, + "bn.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", + "dev": true, + "peer": true + }, + "chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "peer": true + }, + "elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "dev": true, + "peer": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "dev": true, + "peer": true + } + } } } }, @@ -10256,6 +11519,48 @@ "@nomicfoundation/hardhat-utils": "^3.0.2" } }, + "@nomicfoundation/ignition-core": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-core/-/ignition-core-3.0.4.tgz", + "integrity": "sha512-RCgCnZIhOgcdQZtYXAe9OUvAAjEMzRXYKfNMzER0TosYznx3xZlwV/haxColrswVFWCg8WiNVRDz+VfaTMXIrw==", + "dev": true, + "peer": true, + "requires": { + "@ethersproject/address": "5.6.1", + "@nomicfoundation/hardhat-errors": "^3.0.2", + "@nomicfoundation/hardhat-utils": "^3.0.5", + "@nomicfoundation/solidity-analyzer": "^0.1.1", + "cbor2": "^1.9.0", + "debug": "^4.3.2", + "ethers": "^6.14.0", + "immer": "10.0.2", + "lodash-es": "4.17.21", + "ndjson": "2.0.0" + }, + "dependencies": { + "@ethersproject/address": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.6.1.tgz", + "integrity": "sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==", + "dev": true, + "peer": true, + "requires": { + "@ethersproject/bignumber": "^5.6.2", + "@ethersproject/bytes": "^5.6.1", + "@ethersproject/keccak256": "^5.6.1", + "@ethersproject/logger": "^5.6.0", + "@ethersproject/rlp": "^5.6.1" + } + } + } + }, + "@nomicfoundation/ignition-ui": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ignition-ui/-/ignition-ui-3.0.4.tgz", + "integrity": "sha512-CDohzyQiwblGg5iSYVS0U0ZQE8RRIUmZgi1XqVY/DpYszHN0IboMw7MyRqi5jP/w1CLvB1Fb+xkgEbxwB543jw==", + "dev": true, + "peer": true + }, "@nomicfoundation/slang": { "version": "0.17.0", "resolved": "https://registry.npmjs.org/@nomicfoundation/slang/-/slang-0.17.0.tgz", @@ -10516,6 +11821,14 @@ } } }, + "@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, + "peer": true + }, "@scure/base": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.8.tgz", @@ -10586,18 +11899,64 @@ "integrity": "sha512-sJT2ptNRwqB1lIsQrQlCoWk5rF4tif9wDh+7yluAGijJamAhrHGYpFB/Zg3hJeceoZypi74ftXk8DHzwYpbZSg==", "dev": true, "requires": { - "@streamparser/json": "^0.0.22" + "@streamparser/json": "^0.0.22" + } + }, + "@typechain/ethers-v6": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v6/-/ethers-v6-0.5.1.tgz", + "integrity": "sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==", + "dev": true, + "peer": true, + "requires": { + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" + } + }, + "@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "peer": true, + "requires": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "@types/chai-as-promised": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-8.0.2.tgz", + "integrity": "sha512-meQ1wDr1K5KRCSvG2lX7n7/5wf70BeptTKst0axGvnN6zqaVpRqegoIbugiAPSqOW9K9aL8gDVrm7a2LXOtn2Q==", + "dev": true, + "peer": true, + "requires": { + "@types/chai": "*" } }, "@types/debug": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.8.tgz", - "integrity": "sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==", + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dev": true, "requires": { "@types/ms": "*" } }, + "@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "peer": true + }, + "@types/figlet": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@types/figlet/-/figlet-1.7.0.tgz", + "integrity": "sha512-KwrT7p/8Eo3Op/HBSIwGXOsTZKYiM9NpWRBJ5sVjWP/SmlS+oxxRvJht/FNAtliJvja44N3ul1yATgohnVBV0Q==", + "dev": true, + "peer": true + }, "@types/fs-extra": { "version": "11.0.4", "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-11.0.4.tgz", @@ -10609,16 +11968,6 @@ "@types/node": "*" } }, - "@types/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, "@types/jsonfile": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/@types/jsonfile/-/jsonfile-6.1.4.tgz", @@ -10629,12 +11978,6 @@ "@types/node": "*" } }, - "@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 - }, "@types/ms": { "version": "0.7.31", "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", @@ -10659,11 +12002,23 @@ "@types/node": "*" } }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", - "dev": true + "@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true, + "peer": true + }, + "@types/prompts": { + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/@types/prompts/-/prompts-2.4.9.tgz", + "integrity": "sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==", + "dev": true, + "peer": true, + "requires": { + "@types/node": "*", + "kleur": "^3.0.3" + } }, "@types/secp256k1": { "version": "4.0.3", @@ -10703,11 +12058,13 @@ "@uniswap/v2-core": "1.0.0" } }, - "abbrev": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", - "dev": true + "abitype": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.1.1.tgz", + "integrity": "sha512-Loe5/6tAgsBukY95eGaPSDmQHIjRZYQq8PB1MpsNccDIK8WiV+Uw6WzaIXipvaxTEL2yEB0OpEaQv3gs8pkS9Q==", + "dev": true, + "peer": true, + "requires": {} }, "adm-zip": { "version": "0.4.16", @@ -10730,18 +12087,18 @@ "debug": "4" } }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true, - "optional": true + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true }, "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, + "peer": true, "requires": { "color-convert": "^1.9.0" } @@ -10756,14 +12113,12 @@ "picomatch": "^2.0.4" } }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } + "peer": true }, "array-buffer-byte-length": { "version": "1.0.0", @@ -10775,12 +12130,6 @@ "is-array-buffer": "^3.0.1" } }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, "array.prototype.findlast": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.3.tgz", @@ -10809,6 +12158,13 @@ "is-shared-array-buffer": "^1.0.2" } }, + "assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "peer": true + }, "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", @@ -11082,11 +12438,43 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, + "cbor2": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/cbor2/-/cbor2-1.12.0.tgz", + "integrity": "sha512-3Cco8XQhi27DogSp9Ri6LYNZLi/TBY/JVnDe+mj06NkBjW/ZYOtekaEU4wZ4xcRMNrFkDv8KNtOAqHyDfz3lYg==", + "dev": true, + "peer": true + }, + "chai": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", + "dev": true, + "peer": true, + "requires": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + } + }, + "chai-as-promised": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-8.0.2.tgz", + "integrity": "sha512-1GadL+sEJVLzDjcawPM4kjfnL+p/9vrxiEUonowKOAzvVg0PixJUdtuDzdkDeQhK3zfOE76GqGkZIQ7/Adcrqw==", + "dev": true, + "peer": true, + "requires": { + "check-error": "^2.1.1" + } + }, "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, + "peer": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -11097,19 +12485,35 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "dev": true, + "peer": true }, "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, + "peer": true, "requires": { "has-flag": "^3.0.0" } } } }, + "change-case": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-5.4.4.tgz", + "integrity": "sha512-HRQyTk2/YPEkt9TnUPbOpr64Uw3KOicFWPVBb+xiHvd6eBx/qPr9xqfBFDT8P2vWsvvz4jbEkfDe71W3VyNu2w==", + "dev": true, + "peer": true + }, + "check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true, + "peer": true + }, "cheerio": { "version": "1.0.0-rc.12", "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", @@ -11259,11 +12663,24 @@ } } }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "peer": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, "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, + "peer": true, "requires": { "color-name": "1.1.3" } @@ -11272,7 +12689,8 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "dev": true, + "peer": true }, "colorette": { "version": "2.0.20", @@ -11289,6 +12707,48 @@ "delayed-stream": "~1.0.0" } }, + "command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dev": true, + "peer": true, + "requires": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + } + }, + "command-line-usage": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "dev": true, + "peer": true, + "requires": { + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" + }, + "dependencies": { + "array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "peer": true + }, + "typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "peer": true + } + } + }, "commander": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", @@ -11517,9 +12977,9 @@ } }, "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "requires": { "path-key": "^3.1.0", @@ -11567,26 +13027,28 @@ "type": "^2.7.2" } }, - "death": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/death/-/death-1.1.0.tgz", - "integrity": "sha1-AaqcQB7dknUFFEcLgmY5DGbGcxg=", - "dev": true - }, "debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "requires": { "ms": "^2.1.3" } }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true + "deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "peer": true + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "peer": true }, "define-data-property": { "version": "1.1.0", @@ -11633,32 +13095,6 @@ "integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw==", "dev": true }, - "difflib": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz", - "integrity": "sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==", - "dev": true, - "requires": { - "heap": ">= 0.2.0" - } - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - }, - "dependencies": { - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - } - } - }, "dom-serializer": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", @@ -11702,6 +13138,13 @@ "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", "dev": true }, + "dotenv-expand": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", + "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", + "dev": true, + "peer": true + }, "dunder-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", @@ -11713,6 +13156,31 @@ "gopd": "^1.2.0" } }, + "eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, + "peer": true + }, + "eip-1193": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/eip-1193/-/eip-1193-0.6.5.tgz", + "integrity": "sha512-KXCSdjFLIT5/06rMD2pMqoAZhZcTg4EofiCI70ovIOy8L/6twGJFE+RtW89S/hMFKDoNEGJ/WK8jQv7CpuGDgg==", + "dev": true, + "peer": true + }, + "eip-1193-jsonrpc-provider": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/eip-1193-jsonrpc-provider/-/eip-1193-jsonrpc-provider-0.4.3.tgz", + "integrity": "sha512-xcrz22ArOqvbXt4LHOeV5JooL8jTt/sv8WIH7MLQTn8z7fQwRDDzUECgIwZaX1Irpn/HIZGiu6YZwIoRVfPEow==", + "dev": true, + "peer": true, + "requires": { + "named-logs": "^0.3.2", + "promise-throttle": "^1.1.2" + } + }, "elliptic": { "version": "6.5.4", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", @@ -11734,12 +13202,6 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "encode-utf8": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", - "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==", - "dev": true - }, "encoding": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", @@ -11997,38 +13459,8 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escodegen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", "dev": true, - "requires": { - "esprima": "^2.7.1", - "estraverse": "^1.9.1", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.2.0" - }, - "dependencies": { - "estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", - "dev": true - }, - "source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", - "dev": true, - "optional": true, - "requires": { - "amdefine": ">=0.0.4" - } - } - } + "peer": true }, "esniff": { "version": "2.0.1", @@ -12042,35 +13474,6 @@ "type": "^2.7.2" } }, - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "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==", - "dev": true, - "requires": { - "js-sha3": "^0.8.0" - }, - "dependencies": { - "js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true - } - } - }, "ethereum-cryptography": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", @@ -12124,21 +13527,60 @@ } } }, - "ethjs-unit": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", - "integrity": "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=", + "ethers": { + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.15.0.tgz", + "integrity": "sha512-Kf/3ZW54L4UT0pZtsY/rf+EkBU7Qi5nnhonjUb8yTXcxH3cdcWrV2cRyk0Xk/4jK6OoHhxxZHriyhje20If2hQ==", "dev": true, + "peer": true, "requires": { - "bn.js": "4.11.6", - "number-to-bn": "1.7.0" + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "22.7.5", + "aes-js": "4.0.0-beta.5", + "tslib": "2.7.0", + "ws": "8.17.1" }, "dependencies": { - "bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", - "dev": true + "@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, + "peer": true + }, + "@types/node": { + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", + "dev": true, + "peer": true, + "requires": { + "undici-types": "~6.19.2" + } + }, + "aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", + "dev": true, + "peer": true + }, + "undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true, + "peer": true + }, + "ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "dev": true, + "peer": true, + "requires": {} } } }, @@ -12152,6 +13594,12 @@ "es5-ext": "~0.10.14" } }, + "eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true + }, "evp_bytestokey": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", @@ -12237,34 +13685,6 @@ "integrity": "sha512-6rxyATwPCkaFIL3JLqw8qXqMpIZ942pTX/tbQFkRsDGblS8tNGtlUauA/+mt6RUfqn/4MoEr+WDkYoIQbibWuQ==", "dev": true }, - "fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, "fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -12274,6 +13694,25 @@ "pend": "~1.2.0" } }, + "figlet": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.9.3.tgz", + "integrity": "sha512-majPgOpVtrZN1iyNGbsUP6bOtZ6eaJgg5HHh0vFvm5DJhh8dc+FJpOC4GABvMZ/A7XHAJUuJujhgUY/2jPWgMA==", + "dev": true, + "peer": true, + "requires": { + "commander": "^14.0.0" + }, + "dependencies": { + "commander": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz", + "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==", + "dev": true, + "peer": true + } + } + }, "file-url": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz", @@ -12289,6 +13728,16 @@ "to-regex-range": "^5.0.1" } }, + "find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, + "peer": true, + "requires": { + "array-back": "^3.0.1" + } + }, "find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -12334,15 +13783,6 @@ "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true }, - "fmix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/fmix/-/fmix-0.1.0.tgz", - "integrity": "sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==", - "dev": true, - "requires": { - "imul": "^1.0.0" - } - }, "follow-redirects": { "version": "1.15.11", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", @@ -12358,31 +13798,32 @@ "is-callable": "^1.1.3" } }, - "fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, + "peer": true, "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" }, "dependencies": { - "universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true + "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, + "peer": true } } }, + "fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -12420,6 +13861,12 @@ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, "get-east-asian-width": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", @@ -12479,16 +13926,6 @@ "resolve-pkg-maps": "^1.0.0" } }, - "ghost-testrpc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/ghost-testrpc/-/ghost-testrpc-0.0.2.tgz", - "integrity": "sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "node-emoji": "^1.10.0" - } - }, "gitignore-globs": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/gitignore-globs/-/gitignore-globs-0.1.1.tgz", @@ -12518,26 +13955,6 @@ "is-glob": "^4.0.1" } }, - "global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, - "requires": { - "global-prefix": "^3.0.0" - } - }, - "global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, - "requires": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" - } - }, "globalthis": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", @@ -12547,22 +13964,6 @@ "define-properties": "^1.1.3" } }, - "globby": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", - "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.0.3", - "glob": "^7.1.3", - "ignore": "^5.1.1", - "merge2": "^1.2.3", - "slash": "^3.0.0" - } - }, "gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -12575,27 +13976,6 @@ "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", "dev": true }, - "handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", - "dev": true, - "requires": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "uglify-js": "^3.1.4", - "wordwrap": "^1.0.0" - }, - "dependencies": { - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "hardhat": { "version": "3.0.10", "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-3.0.10.tgz", @@ -12670,184 +14050,20 @@ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.1.tgz", "integrity": "sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==", "dev": true - }, - "semver": { - "version": "7.7.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", - "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", - "dev": true - }, - "ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "dev": true, - "requires": {} } } }, - "hardhat-dependency-compiler": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/hardhat-dependency-compiler/-/hardhat-dependency-compiler-1.2.1.tgz", - "integrity": "sha512-xG5iwbspTtxOEiP5UsPngEYQ1Hg+fjTjliapIjdTQmwGkCPofrsDhQDV2O/dopcYzcR68nTx2X8xTewYHgA2rQ==", - "dev": true, - "requires": {} - }, "hardhat-deploy": { - "version": "0.11.43", - "resolved": "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.11.43.tgz", - "integrity": "sha512-D760CjDtinwjOCpKOvdyRtIJYLQIYXmhfgkFe+AkxlYM9bPZ/T4tZ/xIB2tR89ZT+z0hF1YuZFBXIL3/G/9T5g==", + "version": "2.0.0-next.52", + "resolved": "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-2.0.0-next.52.tgz", + "integrity": "sha512-2TnKamuM7hzhipOKgMzBn379xZvoAjAuEF+pwfqSN9Bavvf61193kURNdSNKBtksPCFoCGoxEoR9umB0QVrrsA==", "dev": true, "requires": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/contracts": "^5.7.0", - "@ethersproject/providers": "^5.7.2", - "@ethersproject/solidity": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wallet": "^5.7.0", - "@types/qs": "^6.9.7", - "axios": "^0.21.1", - "chalk": "^4.1.2", - "chokidar": "^3.5.2", - "debug": "^4.3.2", - "enquirer": "^2.3.6", - "ethers": "^5.7.0", - "form-data": "^4.0.0", - "fs-extra": "^10.0.0", - "match-all": "^1.2.6", - "murmur-128": "^0.2.1", - "qs": "^6.9.4", - "zksync-web3": "^0.14.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "axios": { - "version": "0.21.4", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", - "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", - "dev": true, - "requires": { - "follow-redirects": "^1.14.0" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "dev": true, - "requires": { - "@ethersproject/abi": "5.7.0", - "@ethersproject/abstract-provider": "5.7.0", - "@ethersproject/abstract-signer": "5.7.0", - "@ethersproject/address": "5.7.0", - "@ethersproject/base64": "5.7.0", - "@ethersproject/basex": "5.7.0", - "@ethersproject/bignumber": "5.7.0", - "@ethersproject/bytes": "5.7.0", - "@ethersproject/constants": "5.7.0", - "@ethersproject/contracts": "5.7.0", - "@ethersproject/hash": "5.7.0", - "@ethersproject/hdnode": "5.7.0", - "@ethersproject/json-wallets": "5.7.0", - "@ethersproject/keccak256": "5.7.0", - "@ethersproject/logger": "5.7.0", - "@ethersproject/networks": "5.7.1", - "@ethersproject/pbkdf2": "5.7.0", - "@ethersproject/properties": "5.7.0", - "@ethersproject/providers": "5.7.2", - "@ethersproject/random": "5.7.0", - "@ethersproject/rlp": "5.7.0", - "@ethersproject/sha2": "5.7.0", - "@ethersproject/signing-key": "5.7.0", - "@ethersproject/solidity": "5.7.0", - "@ethersproject/strings": "5.7.0", - "@ethersproject/transactions": "5.7.0", - "@ethersproject/units": "5.7.0", - "@ethersproject/wallet": "5.7.0", - "@ethersproject/web": "5.7.1", - "@ethersproject/wordlists": "5.7.0" - } - }, - "form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "zksync-web3": { - "version": "0.14.4", - "resolved": "https://registry.npmjs.org/zksync-web3/-/zksync-web3-0.14.4.tgz", - "integrity": "sha512-kYehMD/S6Uhe1g434UnaMN+sBr9nQm23Ywn0EUP5BfQCsbjcr3ORuS68PosZw8xUTu3pac7G6YMSnNHk+fwzvg==", - "dev": true, - "requires": {} - } + "@nomicfoundation/hardhat-zod-utils": "3.0.1", + "@types/debug": "^4.1.12", + "debug": "^4.4.3", + "slash": "^5.1.0", + "zod": "^3.25.76" } }, "has": { @@ -12865,12 +14081,6 @@ "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "dev": true - }, "has-property-descriptors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", @@ -12937,12 +14147,6 @@ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true }, - "heap": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz", - "integrity": "sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==", - "dev": true - }, "hmac-drbg": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", @@ -12994,17 +14198,12 @@ "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true }, - "ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", - "dev": true - }, - "imul": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/imul/-/imul-1.0.1.tgz", - "integrity": "sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==", - "dev": true + "immer": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.0.2.tgz", + "integrity": "sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA==", + "dev": true, + "peer": true }, "inflight": { "version": "1.0.6", @@ -13022,12 +14221,6 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, "internal-slot": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", @@ -13039,12 +14232,6 @@ "side-channel": "^1.0.4" } }, - "interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true - }, "is-array-buffer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", @@ -13090,15 +14277,6 @@ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true }, - "is-core-module": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.4.0.tgz", - "integrity": "sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, "is-date-object": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", @@ -13111,6 +14289,12 @@ "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, "is-glob": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", @@ -13120,12 +14304,6 @@ "is-extglob": "^2.1.1" } }, - "is-hex-prefixed": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", - "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=", - "dev": true - }, "is-negative-zero": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", @@ -13147,6 +14325,13 @@ "has-tostringtag": "^1.0.0" } }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "peer": true + }, "is-promise": { "version": "2.2.2", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", @@ -13220,29 +14405,36 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, + "isows": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/isows/-/isows-1.0.7.tgz", + "integrity": "sha512-I1fSfDCZL5P0v33sVqeTDSpcstAg/N+wF5HS033mogOVIp4B+oHC7oOCsA3axAbBSGTJ8QubbNmnIRN/h8U7hg==", + "dev": true, + "peer": true, + "requires": {} + }, + "jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "peer": true, + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, "js-graph-algorithms": { "version": "1.0.18", "resolved": "https://registry.npmjs.org/js-graph-algorithms/-/js-graph-algorithms-1.0.18.tgz", "integrity": "sha512-Gu1wtWzXBzGeye/j9BuyplGHscwqKRZodp/0M1vyBc19RJpblSwKGu099KwwaTx9cRIV+Qupk8xUMfEiGfFqSA==", "dev": true }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "dependencies": { - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - } - } + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true }, "json-stream-stringify": { "version": "3.1.6", @@ -13250,29 +14442,19 @@ "integrity": "sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==", "dev": true }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - }, - "dependencies": { - "universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true - } - } + "peer": true }, - "jsonschema": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.4.0.tgz", - "integrity": "sha512-/YgW6pRMr6M7C+4o8kS+B/2myEpHCrxO4PEWnqJNBFMjn7EWXqlQ4tGwL6xTHeRplwuZmcAncdvfOad1nT2yMw==", - "dev": true + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "peer": true }, "keccak": { "version": "3.0.3", @@ -13285,20 +14467,22 @@ "readable-stream": "^3.6.0" } }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "peer": true }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "ldenv": { + "version": "0.3.14", + "resolved": "https://registry.npmjs.org/ldenv/-/ldenv-0.3.14.tgz", + "integrity": "sha512-o/Rjhpy/AZm6Noeoup4rMZRznHFcP0+qRaP+GWeZiiy2kA7U7JHYwrJh1pu8r6W+oPDSL0RopDeQPZawJ3NzLA==", "dev": true, + "peer": true, "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "dotenv": "^16.0.3", + "dotenv-expand": "^10.0.0" } }, "lilconfig": { @@ -13374,12 +14558,6 @@ "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", "dev": true }, - "eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "dev": true - }, "string-width": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", @@ -13428,6 +14606,20 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==", + "dev": true, + "peer": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true, + "peer": true + }, "lodash.omit": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", @@ -13593,14 +14785,19 @@ } } }, + "loupe": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", + "dev": true, + "peer": true + }, "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": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "requires": { - "yallist": "^4.0.0" - } + "peer": true }, "lru-queue": { "version": "0.1.0", @@ -13611,12 +14808,6 @@ "es5-ext": "~0.10.2" } }, - "match-all": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/match-all/-/match-all-1.2.6.tgz", - "integrity": "sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==", - "dev": true - }, "math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -13656,12 +14847,6 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, "micro-eth-signer": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/micro-eth-signer/-/micro-eth-signer-0.14.0.tgz", @@ -13771,14 +14956,12 @@ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, - "requires": { - "minimist": "^1.2.5" - } + "peer": true }, "mkdirp-classic": { "version": "0.5.3", @@ -13820,12 +15003,6 @@ "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -13858,12 +15035,6 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, "glob": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", @@ -13883,56 +15054,24 @@ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, "js-yaml": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "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==", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "argparse": "^2.0.1" } }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "requires": { - "ansi-regex": "^5.0.1" + "brace-expansion": "^2.0.1" } }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -13942,12 +15081,6 @@ "has-flag": "^4.0.0" } }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, "yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -13977,22 +15110,45 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, - "murmur-128": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/murmur-128/-/murmur-128-0.2.1.tgz", - "integrity": "sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg==", + "named-logs": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/named-logs/-/named-logs-0.3.2.tgz", + "integrity": "sha512-rpgShWrH6NakMKUDK32Pn/FZyPl7QoQRleMekHKkbrExXDymb2wNm3/BUbdTG5f3v7Qa17imVkSWHOfNFhDIPw==", + "dev": true, + "peer": true + }, + "named-logs-console": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/named-logs-console/-/named-logs-console-0.3.1.tgz", + "integrity": "sha512-qExLlmkSSrI/57Juvc94c0zlldI5IvreilyFeg7KfxMGGotTVER6xfk+KB7DZ5m18GYnFZn77z2kyigtcn2zHA==", "dev": true, + "peer": true, "requires": { - "encode-utf8": "^1.0.2", - "fmix": "^0.1.0", - "imul": "^1.0.0" + "named-logs": "^0.2.2" + }, + "dependencies": { + "named-logs": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/named-logs/-/named-logs-0.2.4.tgz", + "integrity": "sha512-QHlcLpK2Ij+u7ZYDYgaYkTIlC/NcOwEnFdqbY+PF9ewAMUjvBwRVUyqBUtVaJ3V2YKVy2HiloAgLUdOEVRRyBA==", + "dev": true, + "peer": true + } } }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "ndjson": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ndjson/-/ndjson-2.0.0.tgz", + "integrity": "sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==", + "dev": true, + "peer": true, + "requires": { + "json-stringify-safe": "^5.0.1", + "minimist": "^1.2.5", + "readable-stream": "^3.6.0", + "split2": "^3.0.0", + "through2": "^4.0.0" + } }, "next-tick": { "version": "1.1.0", @@ -14006,15 +15162,6 @@ "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", "dev": true }, - "node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", - "dev": true, - "requires": { - "lodash": "^4.17.21" - } - }, "node-fetch": { "version": "2.6.7", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", @@ -14036,15 +15183,6 @@ "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", "dev": true }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dev": true, - "requires": { - "abbrev": "1" - } - }, "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", @@ -14077,24 +15215,6 @@ "boolbase": "^1.0.0" } }, - "number-to-bn": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", - "integrity": "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=", - "dev": true, - "requires": { - "bn.js": "4.11.6", - "strip-hex-prefix": "1.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.11.6", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", - "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", - "dev": true - } - } - }, "object-inspect": { "version": "1.12.3", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", @@ -14137,18 +15257,84 @@ "mimic-fn": "^4.0.0" } }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "ox": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/ox/-/ox-0.9.6.tgz", + "integrity": "sha512-8SuCbHPvv2eZLYXrNmC0EC12rdzXQLdhnOMlHDW2wiCPLxBrOOJwX5L5E61by+UjTPOryqQiRSnjIKCI+GykKg==", "dev": true, + "peer": true, "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" + "@adraffy/ens-normalize": "^1.11.0", + "@noble/ciphers": "^1.3.0", + "@noble/curves": "1.9.1", + "@noble/hashes": "^1.8.0", + "@scure/bip32": "^1.7.0", + "@scure/bip39": "^1.6.0", + "abitype": "^1.0.9", + "eventemitter3": "5.0.1" + }, + "dependencies": { + "@adraffy/ens-normalize": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.11.1.tgz", + "integrity": "sha512-nhCBV3quEgesuf7c7KYfperqSS14T8bYuvJ8PcLJp6znkZpFc0AuW4qBtr8eKVyPPe/8RSr7sglCWPU5eaxwKQ==", + "dev": true, + "peer": true + }, + "@noble/ciphers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", + "dev": true, + "peer": true + }, + "@noble/curves": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", + "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", + "dev": true, + "peer": true, + "requires": { + "@noble/hashes": "1.8.0" + } + }, + "@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "dev": true, + "peer": true + }, + "@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", + "dev": true, + "peer": true + }, + "@scure/bip32": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", + "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", + "dev": true, + "peer": true, + "requires": { + "@noble/curves": "~1.9.0", + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + } + }, + "@scure/bip39": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz", + "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==", + "dev": true, + "peer": true, + "requires": { + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + } + } } }, "p-limit": { @@ -14181,6 +15367,13 @@ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true }, + "package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true, + "peer": true + }, "parse5": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", @@ -14218,11 +15411,23 @@ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, - "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 + "path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "peer": true, + "requires": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + } + }, + "pathval": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", + "dev": true, + "peer": true }, "pbkdf2": { "version": "3.1.2", @@ -14243,6 +15448,13 @@ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, + "picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "peer": true + }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -14267,12 +15479,6 @@ "integrity": "sha512-2Xy6LImSXm0ANKv9BKSVuCa6Z4ACbK7oUrl9gtUgqLkekL7n9C0mlWsOGYYuGbCG8xT0x3Q4F31C3ZMyVQjwsg==", "dev": true }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, "prettier": { "version": "3.3.3", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", @@ -14301,12 +15507,6 @@ "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.18.0.tgz", "integrity": "sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==", "dev": true - }, - "semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true } } }, @@ -14316,6 +15516,24 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, + "promise-throttle": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/promise-throttle/-/promise-throttle-1.1.2.tgz", + "integrity": "sha512-dij7vjyXNewuuN/gyr+TX2KRjw48mbV5FEtgyXaIoJjGYAKT0au23/voNvy9eS4UNJjx2KUdEcO5Yyfc1h7vWQ==", + "dev": true, + "peer": true + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "peer": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, "proper-lockfile": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", @@ -14439,12 +15657,6 @@ } } }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -14474,23 +15686,12 @@ "picomatch": "^2.2.1" } }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "dev": true, - "requires": { - "resolve": "^1.1.6" - } - }, - "recursive-readdir": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/recursive-readdir/-/recursive-readdir-2.2.2.tgz", - "integrity": "sha512-nRCcW9Sj7NuZwa2XvH9co8NPeXUBhZP7CRKJtU+cS6PW9FpCIFoI5ib0NT1ZrbNuPoRy0ylyCaUL8Gih4LSyFg==", + "reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", "dev": true, - "requires": { - "minimatch": "3.0.4" - } + "peer": true }, "regexp.prototype.flags": { "version": "1.5.1", @@ -14509,16 +15710,6 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, "resolve-pkg-maps": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", @@ -14564,12 +15755,6 @@ "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, "rfdc": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", @@ -14600,13 +15785,37 @@ "bn.js": "^4.11.1" } }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "rocketh": { + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/rocketh/-/rocketh-0.15.7.tgz", + "integrity": "sha512-F51FG3XTo1/HJ9lwCSnrAUbLlT6dFqCi7Vj7YQY6d6Xlyhiytv5W/LGmiGExGHVj9mIP7YY/ipee/StZ451iRA==", "dev": true, + "peer": true, "requires": { - "queue-microtask": "^1.2.2" + "@types/figlet": "^1.7.0", + "@types/prompts": "^2.4.9", + "abitype": "^1.1.0", + "change-case": "^5.4.4", + "commander": "^13.1.0", + "eip-1193": "^0.6.5", + "eip-1193-jsonrpc-provider": "^0.4.3", + "ethers": "^6.15.0", + "figlet": "^1.9.1", + "ldenv": "^0.3.12", + "named-logs": "^0.3.2", + "named-logs-console": "^0.3.1", + "prompts": "^2.4.2", + "tsx": "^4.20.5", + "viem": "^2.37.6" + }, + "dependencies": { + "commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "dev": true, + "peer": true + } } }, "safe-array-concat": { @@ -14654,55 +15863,6 @@ "optional": true, "peer": true }, - "sc-istanbul": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/sc-istanbul/-/sc-istanbul-0.4.6.tgz", - "integrity": "sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==", - "dev": true, - "requires": { - "abbrev": "1.0.x", - "async": "1.x", - "escodegen": "1.8.x", - "esprima": "2.7.x", - "glob": "^5.0.15", - "handlebars": "^4.0.1", - "js-yaml": "3.x", - "mkdirp": "0.5.x", - "nopt": "3.x", - "once": "1.x", - "resolve": "1.1.x", - "supports-color": "^3.1.0", - "which": "^1.1.1", - "wordwrap": "^1.0.0" - }, - "dependencies": { - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dev": true, - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - } - } - }, "scrypt-js": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", @@ -14720,6 +15880,12 @@ "node-gyp-build": "^4.2.0" } }, + "semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true + }, "serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", @@ -14771,17 +15937,6 @@ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, - "shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", - "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dev": true, - "requires": { - "glob": "^7.0.0", - "interpret": "^1.0.0", - "rechoir": "^0.6.2" - } - }, "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", @@ -14799,10 +15954,17 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true, + "peer": true + }, "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true }, "sol2uml": { @@ -15299,12 +16461,6 @@ "@ethersproject/wordlists": "5.8.0" } }, - "js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "dev": true - }, "klaw": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/klaw/-/klaw-4.1.0.tgz", @@ -15329,96 +16485,20 @@ "array.prototype.findlast": "^1.2.2" } }, - "solidity-coverage": { - "version": "0.8.14", - "resolved": "https://registry.npmjs.org/solidity-coverage/-/solidity-coverage-0.8.14.tgz", - "integrity": "sha512-ItAAObe5GaEOp20kXC2BZRnph+9P7Rtoqg2mQc2SXGEHgSDF2wWd1Wxz3ntzQWXkbCtIIGdJT918HG00cObwbA==", - "dev": true, - "requires": { - "@ethersproject/abi": "^5.0.9", - "@solidity-parser/parser": "^0.19.0", - "chalk": "^2.4.2", - "death": "^1.1.0", - "difflib": "^0.2.4", - "fs-extra": "^8.1.0", - "ghost-testrpc": "^0.0.2", - "global-modules": "^2.0.0", - "globby": "^10.0.1", - "jsonschema": "^1.2.4", - "lodash": "^4.17.21", - "mocha": "^10.2.0", - "node-emoji": "^1.10.0", - "pify": "^4.0.1", - "recursive-readdir": "^2.2.2", - "sc-istanbul": "^0.4.5", - "semver": "^7.3.4", - "shelljs": "^0.8.3", - "web3-utils": "^1.3.6" - }, - "dependencies": { - "@solidity-parser/parser": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.19.0.tgz", - "integrity": "sha512-RV16k/qIxW/wWc+mLzV3ARyKUaMUTBy9tOLMzFhtNSKYeTAanQ3a5MudJKf/8arIFnA2L27SNjarQKmFg0w/jA==", - "dev": true - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - } - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } - } - }, - "solidity-docgen": { - "version": "0.6.0-beta.36", - "resolved": "https://registry.npmjs.org/solidity-docgen/-/solidity-docgen-0.6.0-beta.36.tgz", - "integrity": "sha512-f/I5G2iJgU1h0XrrjRD0hHMr7C10u276vYvm//rw1TzFcYQ4xTOyAoi9oNAHRU0JU4mY9eTuxdVc2zahdMuhaQ==", - "dev": true, - "requires": { - "handlebars": "^4.7.7", - "solidity-ast": "^0.4.38" - } - }, "solstruct": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/solstruct/-/solstruct-0.1.0.tgz", "integrity": "sha512-7XiFF2g3R08tsfhhZfKbKheNC0A5lsdAxk5R2HVPzT/kwenTh8AUzmQoc10xw+zXO813KRRLK3t65KqgUE2T4w==" }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true + "split2": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", + "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", + "dev": true, + "peer": true, + "requires": { + "readable-stream": "^3.0.0" + } }, "string_decoder": { "version": "1.3.0", @@ -15435,6 +16515,36 @@ "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true }, + "string-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", + "dev": true, + "peer": true + }, + "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, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string-width-cjs": { + "version": "npm:string-width@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, + "peer": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, "string.prototype.trim": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", @@ -15468,28 +16578,64 @@ "es-abstract": "^1.22.1" } }, + "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, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "peer": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, "strip-final-newline": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true }, - "strip-hex-prefix": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", - "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", - "dev": true, - "requires": { - "is-hex-prefixed": "1.0.0" - } + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", "dev": true, + "peer": true, "requires": { - "has-flag": "^1.0.0" + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "dependencies": { + "array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "peer": true + }, + "typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "peer": true + } } }, "tar-fs": { @@ -15523,6 +16669,16 @@ "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, + "through2": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", + "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", + "dev": true, + "peer": true, + "requires": { + "readable-stream": "3" + } + }, "timers-ext": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/timers-ext/-/timers-ext-0.1.8.tgz", @@ -15554,6 +16710,91 @@ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", "dev": true }, + "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", + "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==", + "dev": true, + "peer": true, + "requires": { + "chalk": "^4.1.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^6.1.0", + "string-format": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "peer": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "peer": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "peer": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "peer": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "ts-essentials": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", + "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", + "dev": true, + "peer": true, + "requires": {} + }, + "tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "dev": true, + "peer": true + }, "tsx": { "version": "4.20.6", "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.6.tgz", @@ -15571,13 +16812,76 @@ "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", "dev": true }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "typechain": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.2.tgz", + "integrity": "sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==", "dev": true, + "peer": true, "requires": { - "prelude-ls": "~1.1.2" + "@types/prettier": "^2.1.1", + "debug": "^4.3.1", + "fs-extra": "^7.0.0", + "glob": "7.1.7", + "js-sha3": "^0.8.0", + "lodash": "^4.17.15", + "mkdirp": "^1.0.4", + "prettier": "^2.3.1", + "ts-command-line-args": "^2.2.0", + "ts-essentials": "^7.0.1" + }, + "dependencies": { + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "peer": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "peer": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "peer": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "peer": true + }, + "prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "peer": true + } } }, "typed-array-buffer": { @@ -15628,18 +16932,18 @@ } }, "typescript": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.0.4.tgz", - "integrity": "sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "peer": true }, - "uglify-js": { - "version": "3.15.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.4.tgz", - "integrity": "sha512-vMOPGDuvXecPs34V74qDKk4iJ/SN4vL3Ow/23ixafENYvtrNvtbcgUeugTcUGRGsOF/5fU8/NYSL5Hyb3l1OJA==", + "typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", "dev": true, - "optional": true + "peer": true }, "unbox-primitive": { "version": "1.0.2", @@ -15685,7 +16989,8 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true + "dev": true, + "peer": true }, "utf-8-validate": { "version": "5.0.5", @@ -15698,38 +17003,83 @@ "node-gyp-build": "^4.2.0" } }, - "utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", - "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", - "dev": true - }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, - "web3-utils": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.2.tgz", - "integrity": "sha512-v7j6xhfLQfY7xQDrUP0BKbaNrmZ2/+egbqP9q3KYmOiPpnvAfol+32slgL0WX/5n8VPvKCK5EZ1HGrAVICSToA==", + "viem": { + "version": "2.38.6", + "resolved": "https://registry.npmjs.org/viem/-/viem-2.38.6.tgz", + "integrity": "sha512-aqO6P52LPXRjdnP6rl5Buab65sYa4cZ6Cpn+k4OLOzVJhGIK8onTVoKMFMT04YjDfyDICa/DZyV9HmvLDgcjkw==", "dev": true, + "peer": true, "requires": { - "bn.js": "^5.2.1", - "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", - "ethjs-unit": "0.1.6", - "number-to-bn": "1.7.0", - "randombytes": "^2.1.0", - "utf8": "3.0.0" + "@noble/curves": "1.9.1", + "@noble/hashes": "1.8.0", + "@scure/bip32": "1.7.0", + "@scure/bip39": "1.6.0", + "abitype": "1.1.0", + "isows": "1.0.7", + "ox": "0.9.6", + "ws": "8.18.3" }, "dependencies": { - "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "dev": true + "@noble/curves": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.1.tgz", + "integrity": "sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==", + "dev": true, + "peer": true, + "requires": { + "@noble/hashes": "1.8.0" + } + }, + "@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "dev": true, + "peer": true + }, + "@scure/base": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.6.tgz", + "integrity": "sha512-g/nm5FgUa//MCj1gV09zTJTaM6KBAHqLN907YVQqf7zC49+DcO4B1so4ZX07Ef10Twr6nuqYEH9GEggFXA4Fmg==", + "dev": true, + "peer": true + }, + "@scure/bip32": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.7.0.tgz", + "integrity": "sha512-E4FFX/N3f4B80AKWp5dP6ow+flD1LQZo/w8UnLGYZO674jS6YnYeepycOOksv+vLPSpgN35wgKgy+ybfTb2SMw==", + "dev": true, + "peer": true, + "requires": { + "@noble/curves": "~1.9.0", + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + } + }, + "@scure/bip39": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.6.0.tgz", + "integrity": "sha512-+lF0BbLiJNwVlev4eKelw1WWLaiKXw7sSl8T6FvBlWkdX+94aGJ4o8XjUdlyhTCjd8c+B3KT3JfS8P0bLRNU6A==", + "dev": true, + "peer": true, + "requires": { + "@noble/hashes": "~1.8.0", + "@scure/base": "~1.2.5" + } + }, + "abitype": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/abitype/-/abitype-1.1.0.tgz", + "integrity": "sha512-6Vh4HcRxNMLA0puzPjM5GBgT4aAcFGKZzSgAXvuZ27shJP6NEpielTuqbBmZILR5/xd0PizkBGy5hReKz9jl5A==", + "dev": true, + "peer": true, + "requires": {} } } }, @@ -15749,15 +17099,6 @@ "webidl-conversions": "^3.0.0" } }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, "which-boxed-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", @@ -15784,17 +17125,25 @@ "has-tostringtag": "^1.0.0" } }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", - "dev": true + "wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dev": true, + "peer": true, + "requires": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "dependencies": { + "typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "peer": true + } + } }, "workerpool": { "version": "6.5.1", @@ -15813,12 +17162,6 @@ "strip-ansi": "^6.0.0" }, "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, "ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -15842,32 +17185,47 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "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==", + } + } + }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "peer": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "peer": true, "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "color-convert": "^2.0.1" } }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "peer": true, "requires": { - "ansi-regex": "^5.0.1" + "color-name": "~1.1.4" } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "peer": true } } }, @@ -15878,16 +17236,16 @@ "dev": true }, "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", "dev": true, "requires": {} }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true }, "yaml": { @@ -15896,6 +17254,29 @@ "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", "dev": true }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "peer": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "peer": true + }, "yargs-unparser": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", diff --git a/package.json b/package.json index 22570e790..cbb111ece 100644 --- a/package.json +++ b/package.json @@ -62,11 +62,11 @@ }, "devDependencies": { "@amxx/factory": "^1.0.0", + "@nomicfoundation/hardhat-toolbox-mocha-ethers": "^3.0.0", "@openzeppelin/upgrades-core": "^1.37.1", "dotenv": "^16.5.0", "hardhat": "^3.0.10", - "hardhat-dependency-compiler": "^1.2.1", - "hardhat-deploy": "^0.11.43", + "hardhat-deploy": "^2.0.0-next.52", "husky": "^9.1.6", "lint-staged": "^15.2.10", "mocha": "^10.7.3", @@ -75,13 +75,14 @@ "prettier-plugin-solidity": "^1.4.1", "puml-for-markdown": "^1.2.1", "sol2uml": "^2.5.22", - "solidity-coverage": "^0.8.14", - "solidity-docgen": "^0.6.0-beta.36", "zx": "^8.1.6" }, "__devDependenciesComments": { "mocha": "[Optional] Install Mocha Test Explorer in VSCode to see tests in VSCode UI", - "solidity-coverage": "Fixing Hardhat's solidity-coverage: TypeError: provider.send is not a function" + "hardhat-deploy": "Version 2.x supports Hardhat 3", + "solidity-coverage": "Temporarily disabled - not compatible with Hardhat 3 yet. Hardhat 3 has built-in coverage support with --coverage flag", + "solidity-docgen": "Temporarily disabled - not compatible with Hardhat 3 yet. TODO: Re-enable when solidity-docgen supports Hardhat 3", + "hardhat-dependency-compiler": "Temporarily disabled - not compatible with Hardhat 3 yet. TODO: Re-enable when hardhat-dependency-compiler supports Hardhat 3" }, "repository": { "type": "git", diff --git a/tsconfig.json b/tsconfig.json index 94cfea909..61a2bf571 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,6 +2,7 @@ "compilerOptions": { "target": "es2020", "module": "commonjs", + "moduleResolution": "bundler", "esModuleInterop": true, "forceConsistentCasingInFileNames": true, "strict": true,