diff --git a/contracts/NFTF.sol b/contracts/NFTF.sol index 86fcd49..339ab5b 100644 --- a/contracts/NFTF.sol +++ b/contracts/NFTF.sol @@ -14,6 +14,12 @@ import {AccessControlUpgradeable} from "./core/AgentAccessControl.sol"; import {NFTFStorage} from "./storages/NFTFStorage.sol"; abstract contract NFTF is INFTF, AbstractAssetF, NFTFStorage, ERC721EnumerableUpgradeable { + /// @dev Precomputed selectors for safe transfers from the IERC721. + /// @dev Selector for `safeTransferFrom(address,address,uint256)` + bytes4 public constant SAFE_TRANSFER_FROM_SELECTOR = 0x42842e0e; + /// @dev Selector for `safeTransferFrom(address,address,uint256,bytes)` + bytes4 public constant SAFE_TRANSFER_FROM_WITH_DATA_SELECTOR = 0xb88d4fde; + bytes4 public constant TRANSFER_SELECTOR = this.transfer.selector; bytes4 public constant TRANSFER_FROM_SELECTOR = this.transferFrom.selector; bytes4 public constant MINT_SELECTOR = this.mint.selector; diff --git a/contracts/mock/modules/ModuleMock.sol b/contracts/mock/modules/ModuleMock.sol index ac3d5c7..bf3a2d4 100644 --- a/contracts/mock/modules/ModuleMock.sol +++ b/contracts/mock/modules/ModuleMock.sol @@ -32,7 +32,7 @@ contract ModuleMock is AbstractRegulatoryModule, AbstractKYCModule { __AbstractKYCModule_init(); } - function getContextKey(bytes4 selector_) external view returns (bytes32) { + function getContextKeyBySelector(bytes4 selector_) external view returns (bytes32) { IAssetF.Context memory ctx_; ctx_.selector = selector_; diff --git a/contracts/mock/modules/kyc/RarimoModuleMock.sol b/contracts/mock/modules/kyc/RarimoModuleMock.sol deleted file mode 100644 index eac0ba9..0000000 --- a/contracts/mock/modules/kyc/RarimoModuleMock.sol +++ /dev/null @@ -1,24 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.21; - -import {IAssetF} from "../../../interfaces/IAssetF.sol"; -import {RarimoModule} from "../../../modules/kyc/RarimoModule.sol"; - -contract RarimoModuleMock is RarimoModule { - function __RarimoModuleMock_init(address assetF_, address sbt_) external initializer { - __AbstractModule_init(assetF_); - __AbstractKYCModule_init(); - __RarimoModule_init(sbt_); - } - - function __RarimoModuleDirect_init() external { - __RarimoModule_init(address(0)); - } - - function getContextKey(bytes4 selector_) external view returns (bytes32) { - IAssetF.Context memory ctx_; - ctx_.selector = selector_; - - return _getContextKey(ctx_); - } -} diff --git a/contracts/mock/modules/kyc/SimpleKYCModuleMock.sol b/contracts/mock/modules/kyc/SimpleKYCModuleMock.sol new file mode 100644 index 0000000..04aa38b --- /dev/null +++ b/contracts/mock/modules/kyc/SimpleKYCModuleMock.sol @@ -0,0 +1,24 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.21; + +import {IAssetF} from "../../../interfaces/IAssetF.sol"; +import {SimpleKYCModule} from "../../../modules/kyc/SimpleKYCModule.sol"; + +contract SimpleKYCModuleMock is SimpleKYCModule { + function __SimpleKYCModuleMock_init(address assetF_, address sbt_) external initializer { + __AbstractModule_init(assetF_); + __AbstractKYCModule_init(); + __SimpleKYCModule_init(sbt_); + } + + function __SimpleKYCModuleDirect_init() external { + __SimpleKYCModule_init(address(0)); + } + + function getContextKeyBySelector(bytes4 selector_) external view returns (bytes32) { + IAssetF.Context memory ctx_; + ctx_.selector = selector_; + + return getContextKey(ctx_); + } +} diff --git a/contracts/mock/modules/regulatory/ERC20TransferLimitsModuleMock.sol b/contracts/mock/modules/regulatory/ERC20TransferLimitsModuleMock.sol index 51eb4e5..2a4fb20 100644 --- a/contracts/mock/modules/regulatory/ERC20TransferLimitsModuleMock.sol +++ b/contracts/mock/modules/regulatory/ERC20TransferLimitsModuleMock.sol @@ -27,10 +27,10 @@ contract ERC20TransferLimitsModuleMock is ERC20TransferLimitsModule { __AbstractRegulatoryModule_init(); } - function getContextKey(bytes4 selector_) external view returns (bytes32) { + function getContextKeyBySelector(bytes4 selector_) external view returns (bytes32) { IAssetF.Context memory ctx_; ctx_.selector = selector_; - return _getContextKey(ctx_); + return getContextKey(ctx_); } } diff --git a/contracts/mock/modules/regulatory/ERC721TransferLimitsModuleMock.sol b/contracts/mock/modules/regulatory/ERC721TransferLimitsModuleMock.sol index 28ab072..4dc28f1 100644 --- a/contracts/mock/modules/regulatory/ERC721TransferLimitsModuleMock.sol +++ b/contracts/mock/modules/regulatory/ERC721TransferLimitsModuleMock.sol @@ -27,10 +27,10 @@ contract ERC721TransferLimitsModuleMock is ERC721TransferLimitsModule { __AbstractRegulatoryModule_init(); } - function getContextKey(bytes4 selector_) external view returns (bytes32) { + function getContextKeyBySelector(bytes4 selector_) external view returns (bytes32) { IAssetF.Context memory ctx_; ctx_.selector = selector_; - return _getContextKey(ctx_); + return getContextKey(ctx_); } } diff --git a/contracts/modules/AbstractModule.sol b/contracts/modules/AbstractModule.sol index 8ca9c39..f9d4e9c 100644 --- a/contracts/modules/AbstractModule.sol +++ b/contracts/modules/AbstractModule.sol @@ -88,6 +88,20 @@ abstract contract AbstractModule is Initializable { _removeHandlerTopics(contextKey_, handlerTopics_); } + /** + * @notice Function to retrieve the context key from the provided transaction context. + * + * This function calls the internal `_getContextKey` function, which can be overridden + * in derived contracts to customize how the context key is generated based on the + * specific module's requirements. + * + * @param ctx_ The transaction context + * @return context key + */ + function getContextKey(IAssetF.Context memory ctx_) public view virtual returns (bytes32) { + return _getContextKey(ctx_); + } + /** * @notice Function to retrieve all stored handler topics by the passed context key. * @@ -184,7 +198,7 @@ abstract contract AbstractModule is Initializable { function _handlerer() internal virtual; /** - * @notice Function to retrieve the context key from the transaction context. + * @notice Internal function to calculate and retrieve the context key from the transaction context. * * The `bytes32` type has been chosen for the context key so that it could be customised. * Depending on the future purpose of the module, it will be possible to define the process of creating a context key, @@ -209,7 +223,7 @@ abstract contract AbstractModule is Initializable { * @param ctx_ The transaction context */ function _handle(IAssetF.Context memory ctx_) internal view virtual returns (bool) { - bytes32 contextKey_ = _getContextKey(ctx_); + bytes32 contextKey_ = getContextKey(ctx_); bytes32[] memory handlerTopics_ = getHandlerTopics(contextKey_); for (uint256 j = 0; j < handlerTopics_.length; ++j) { diff --git a/contracts/modules/kyc/RarimoModule.sol b/contracts/modules/kyc/SimpleKYCModule.sol similarity index 58% rename from contracts/modules/kyc/RarimoModule.sol rename to contracts/modules/kyc/SimpleKYCModule.sol index 8af8950..99c9c2f 100644 --- a/contracts/modules/kyc/RarimoModule.sol +++ b/contracts/modules/kyc/SimpleKYCModule.sol @@ -7,30 +7,30 @@ import {IAssetF} from "../../interfaces/IAssetF.sol"; import {AbstractKYCModule} from "../AbstractKYCModule.sol"; /** - * @notice `RarimoModule` is an example of a possible KYC module implementation, + * @notice `SimpleKYCModule` is an example of a possible KYC module implementation, * within which the user's SBT token is checked. */ -abstract contract RarimoModule is AbstractKYCModule { +abstract contract SimpleKYCModule is AbstractKYCModule { bytes32 public constant HAS_SOUL_SENDER_TOPIC = keccak256("HAS_SOUL_SENDER"); bytes32 public constant HAS_SOUL_RECIPIENT_TOPIC = keccak256("HAS_SOUL_RECIPIENT"); bytes32 public constant HAS_SOUL_OPERATOR_TOPIC = keccak256("HAS_SOUL_OPERATOR"); - // keccak256("tokenf.standard.rarimo.module.storage") - bytes32 private constant RARIMO_MODULE_STORAGE = - 0x4daee3f1bcf471e40cb8bb42f6957ecf0fb0ccfdf6e24496c76bda599dbc8902; + // keccak256("tokenf.standard.simple.kyc.module.storage") + bytes32 private constant SIMPLE_KYC_MODULE_STORAGE = + 0x38deaaaa98559b0911f428b8b3b9bbf960af9ad1ba4f2251fc09aa6872c543ae; - struct RarimoModuleStorage { + struct SimpleKYCModuleStorage { address sbt; } - function __RarimoModule_init(address sbt_) internal onlyInitializing { - RarimoModuleStorage storage $ = _getRarimoModuleStorage(); + function __SimpleKYCModule_init(address sbt_) internal onlyInitializing { + SimpleKYCModuleStorage storage $ = _getSimpleKYCModuleStorage(); $.sbt = sbt_; } function getSBT() public view virtual returns (address) { - RarimoModuleStorage storage $ = _getRarimoModuleStorage(); + SimpleKYCModuleStorage storage $ = _getSimpleKYCModuleStorage(); return $.sbt; } @@ -44,33 +44,31 @@ abstract contract RarimoModule is AbstractKYCModule { function _handleHasSoulSenderTopic( IAssetF.Context memory ctx_ ) internal view virtual returns (bool) { - RarimoModuleStorage storage $ = _getRarimoModuleStorage(); - - return ISBT($.sbt).balanceOf(ctx_.from) > 0; + return _hasSBT(ctx_.from); } function _handleHasSoulRecipientTopic( IAssetF.Context memory ctx_ ) internal view virtual returns (bool) { - RarimoModuleStorage storage $ = _getRarimoModuleStorage(); - - return ISBT($.sbt).balanceOf(ctx_.to) > 0; + return _hasSBT(ctx_.to); } function _handleHasSoulOperatorTopic( IAssetF.Context memory ctx_ ) internal view virtual returns (bool) { - RarimoModuleStorage storage $ = _getRarimoModuleStorage(); + return _hasSBT(ctx_.operator); + } - return ISBT($.sbt).balanceOf(ctx_.operator) > 0; + function _hasSBT(address userAddr_) internal view returns (bool) { + return ISBT(_getSimpleKYCModuleStorage().sbt).balanceOf(userAddr_) > 0; } /** * @dev Returns a pointer to the storage namespace */ - function _getRarimoModuleStorage() private pure returns (RarimoModuleStorage storage $) { + function _getSimpleKYCModuleStorage() private pure returns (SimpleKYCModuleStorage storage $) { assembly { - $.slot := RARIMO_MODULE_STORAGE + $.slot := SIMPLE_KYC_MODULE_STORAGE } } } diff --git a/examples/equity-token/contracts/RarimoSBT.sol b/examples/equity-token/contracts/EquitySBT.sol similarity index 76% rename from examples/equity-token/contracts/RarimoSBT.sol rename to examples/equity-token/contracts/EquitySBT.sol index be7eb6c..94c16c5 100644 --- a/examples/equity-token/contracts/RarimoSBT.sol +++ b/examples/equity-token/contracts/EquitySBT.sol @@ -5,9 +5,9 @@ import {OwnableUpgradeable} from "@openzeppelin/contracts-upgradeable/access/Own import {ASBT} from "@solarity/solidity-lib/tokens/ASBT.sol"; -contract RarimoSBT is ASBT, OwnableUpgradeable { - function __RarimoSBT_init() external initializer { - __ASBT_init("RarimoSBT", "RarimoSBT"); +contract EquitySBT is ASBT, OwnableUpgradeable { + function __EquitySBT_init() external initializer { + __ASBT_init("EquitySBT", "EquitySBT"); __Ownable_init(msg.sender); } diff --git a/examples/equity-token/contracts/modules/EquityERC20TransferLimitsModule.sol b/examples/equity-token/contracts/modules/EquityERC20TransferLimitsModule.sol index bb04a57..a0de3b9 100644 --- a/examples/equity-token/contracts/modules/EquityERC20TransferLimitsModule.sol +++ b/examples/equity-token/contracts/modules/EquityERC20TransferLimitsModule.sol @@ -10,10 +10,10 @@ contract EquityERC20TransferLimitsModule is ERC20TransferLimitsModule { __ERC20TransferLimitsModule_init(1 ether, MAX_TRANSFER_LIMIT); } - function getContextKey(bytes4 selector_) external view returns (bytes32) { + function getContextKeyBySelector(bytes4 selector_) external view returns (bytes32) { IAssetF.Context memory ctx_; ctx_.selector = selector_; - return _getContextKey(ctx_); + return getContextKey(ctx_); } } diff --git a/examples/equity-token/contracts/modules/EquityKYCModule.sol b/examples/equity-token/contracts/modules/EquityKYCModule.sol new file mode 100644 index 0000000..4a892b8 --- /dev/null +++ b/examples/equity-token/contracts/modules/EquityKYCModule.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.21; + +import {IAssetF} from "@tokenf/contracts/interfaces/IAssetF.sol"; +import {SimpleKYCModule} from "@tokenf/contracts/modules/kyc/SimpleKYCModule.sol"; + +contract EquityKYCModule is SimpleKYCModule { + function __EquityKYCModule_init(address assetF_, address sbt_) external initializer { + __AbstractModule_init(assetF_); + __SimpleKYCModule_init(sbt_); + } + + function getContextKeyBySelector(bytes4 selector_) external view returns (bytes32) { + IAssetF.Context memory ctx_; + ctx_.selector = selector_; + + return getContextKey(ctx_); + } +} diff --git a/examples/equity-token/contracts/modules/EquityRarimoModule.sol b/examples/equity-token/contracts/modules/EquityRarimoModule.sol deleted file mode 100644 index 4c5af5b..0000000 --- a/examples/equity-token/contracts/modules/EquityRarimoModule.sol +++ /dev/null @@ -1,19 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity ^0.8.21; - -import {IAssetF} from "@tokenf/contracts/interfaces/IAssetF.sol"; -import {RarimoModule} from "@tokenf/contracts/modules/kyc/RarimoModule.sol"; - -contract EquityRarimoModule is RarimoModule { - function __EquityRarimoModule_init(address assetF_, address sbt_) external initializer { - __AbstractModule_init(assetF_); - __RarimoModule_init(sbt_); - } - - function getContextKey(bytes4 selector_) external view returns (bytes32) { - IAssetF.Context memory ctx_; - ctx_.selector = selector_; - - return _getContextKey(ctx_); - } -} diff --git a/examples/equity-token/contracts/modules/LandERC721TransferLimitsModule.sol b/examples/equity-token/contracts/modules/LandERC721TransferLimitsModule.sol index 4586457..7e8420a 100644 --- a/examples/equity-token/contracts/modules/LandERC721TransferLimitsModule.sol +++ b/examples/equity-token/contracts/modules/LandERC721TransferLimitsModule.sol @@ -13,10 +13,10 @@ contract LandERC721TransferLimitsModule is ERC721TransferLimitsModule { __ERC721TransferLimitsModule_init(MAX_TRANSFERS_PER_PERIOD, TIME_PERIOD); } - function getContextKey(bytes4 selector_) external view returns (bytes32) { + function getContextKeyBySelector(bytes4 selector_) external view returns (bytes32) { IAssetF.Context memory ctx_; ctx_.selector = selector_; - return _getContextKey(ctx_); + return getContextKey(ctx_); } } diff --git a/examples/equity-token/deploy/1_equity-token.migration.ts b/examples/equity-token/deploy/1_equity-token.migration.ts index 9ac939e..daf97a8 100644 --- a/examples/equity-token/deploy/1_equity-token.migration.ts +++ b/examples/equity-token/deploy/1_equity-token.migration.ts @@ -3,16 +3,16 @@ import { Deployer, Reporter } from "@solarity/hardhat-migrate"; import { KYCComplianceFacet, KYCComplianceFacet__factory, - EquityRarimoModule, - EquityRarimoModule__factory, + EquityKYCModule, + EquityKYCModule__factory, RegulatoryComplianceFacet, RegulatoryComplianceFacet__factory, EquityToken, EquityToken__factory, EquityERC20TransferLimitsModule, EquityERC20TransferLimitsModule__factory, - RarimoSBT, - RarimoSBT__factory, + EquitySBT, + EquitySBT__factory, } from "@ethers-v6"; async function setupCoreContracts( @@ -48,8 +48,10 @@ async function setupTransferLimitsModule( const transferLimitsModule = await deployer.deploy(EquityERC20TransferLimitsModule__factory); await transferLimitsModule.__EquityERC20TransferLimitsModule_init(tokenF); - const transferContextKey = await transferLimitsModule.getContextKey(await tokenF.TRANSFER_SELECTOR()); - const transferFromContextKey = await transferLimitsModule.getContextKey(await tokenF.TRANSFER_FROM_SELECTOR()); + const transferContextKey = await transferLimitsModule.getContextKeyBySelector(await tokenF.TRANSFER_SELECTOR()); + const transferFromContextKey = await transferLimitsModule.getContextKeyBySelector( + await tokenF.TRANSFER_FROM_SELECTOR(), + ); await transferLimitsModule.addHandlerTopics(transferContextKey, [ await transferLimitsModule.MIN_TRANSFER_LIMIT_TOPIC(), @@ -63,42 +65,42 @@ async function setupTransferLimitsModule( return transferLimitsModule; } -async function setupRarimoModule(deployer: Deployer, tokenF: EquityToken): Promise<[EquityRarimoModule, RarimoSBT]> { - const rarimoSBT = await deployer.deploy(RarimoSBT__factory); - await rarimoSBT.__RarimoSBT_init(); +async function setupKYCModule(deployer: Deployer, tokenF: EquityToken): Promise<[EquityKYCModule, EquitySBT]> { + const equitySBT = await deployer.deploy(EquitySBT__factory); + await equitySBT.__EquitySBT_init(); - const rarimoModule = await deployer.deploy(EquityRarimoModule__factory); - await rarimoModule.__EquityRarimoModule_init(tokenF, rarimoSBT); + const equityKYCModule = await deployer.deploy(EquityKYCModule__factory); + await equityKYCModule.__EquityKYCModule_init(tokenF, equitySBT); - const transferContextKey = await rarimoModule.getContextKey(await tokenF.TRANSFER_SELECTOR()); - const transferFromContextKey = await rarimoModule.getContextKey(await tokenF.TRANSFER_FROM_SELECTOR()); + const transferContextKey = await equityKYCModule.getContextKeyBySelector(await tokenF.TRANSFER_SELECTOR()); + const transferFromContextKey = await equityKYCModule.getContextKeyBySelector(await tokenF.TRANSFER_FROM_SELECTOR()); - await rarimoModule.addHandlerTopics(transferContextKey, [ - await rarimoModule.HAS_SOUL_SENDER_TOPIC(), - await rarimoModule.HAS_SOUL_RECIPIENT_TOPIC(), + await equityKYCModule.addHandlerTopics(transferContextKey, [ + await equityKYCModule.HAS_SOUL_SENDER_TOPIC(), + await equityKYCModule.HAS_SOUL_RECIPIENT_TOPIC(), ]); - await rarimoModule.addHandlerTopics(transferFromContextKey, [ - await rarimoModule.HAS_SOUL_SENDER_TOPIC(), - await rarimoModule.HAS_SOUL_RECIPIENT_TOPIC(), - await rarimoModule.HAS_SOUL_OPERATOR_TOPIC(), + await equityKYCModule.addHandlerTopics(transferFromContextKey, [ + await equityKYCModule.HAS_SOUL_SENDER_TOPIC(), + await equityKYCModule.HAS_SOUL_RECIPIENT_TOPIC(), + await equityKYCModule.HAS_SOUL_OPERATOR_TOPIC(), ]); - return [rarimoModule, rarimoSBT]; + return [equityKYCModule, equitySBT]; } export = async (deployer: Deployer) => { const [tokenF, kycCompliance, regulatoryCompliance] = await setupCoreContracts(deployer); - const [rarimoModule, rarimoSBT] = await setupRarimoModule(deployer, tokenF); + const [equityKYCModule, equitySBT] = await setupKYCModule(deployer, tokenF); const transferLimitsModule = await setupTransferLimitsModule(deployer, tokenF); - await kycCompliance.addKYCModules([rarimoModule]); + await kycCompliance.addKYCModules([equityKYCModule]); await regulatoryCompliance.addRegulatoryModules([transferLimitsModule]); Reporter.reportContracts( ["EquityToken", await tokenF.getAddress()], ["ERC20TransferLimitsModule", await transferLimitsModule.getAddress()], - ["RarimoModule", await rarimoModule.getAddress()], - ["RarimoSBT", await rarimoSBT.getAddress()], + ["EquityKYCModule", await equityKYCModule.getAddress()], + ["EquitySBT", await equitySBT.getAddress()], ); }; diff --git a/examples/equity-token/deploy/2_land-nft.migration.ts b/examples/equity-token/deploy/2_land-nft.migration.ts index c97978b..4dcc279 100644 --- a/examples/equity-token/deploy/2_land-nft.migration.ts +++ b/examples/equity-token/deploy/2_land-nft.migration.ts @@ -5,12 +5,12 @@ import { KYCComplianceFacet__factory, LandNFT, LandNFT__factory, - EquityRarimoModule, - EquityRarimoModule__factory, + EquityKYCModule, + EquityKYCModule__factory, RegulatoryComplianceFacet, RegulatoryComplianceFacet__factory, - RarimoSBT, - RarimoSBT__factory, + EquitySBT, + EquitySBT__factory, LandERC721TransferLimitsModule, LandERC721TransferLimitsModule__factory, } from "@ethers-v6"; @@ -40,8 +40,10 @@ async function setupTransferLimitsModule(deployer: Deployer, nftF: LandNFT): Pro const transferLimitsModule = await deployer.deploy(LandERC721TransferLimitsModule__factory); await transferLimitsModule.__LandERC721TransferLimitsModule_init(nftF); - const transferContextKey = await transferLimitsModule.getContextKey(await nftF.TRANSFER_SELECTOR()); - const transferFromContextKey = await transferLimitsModule.getContextKey(await nftF.TRANSFER_FROM_SELECTOR()); + const transferContextKey = await transferLimitsModule.getContextKeyBySelector(await nftF.TRANSFER_SELECTOR()); + const transferFromContextKey = await transferLimitsModule.getContextKeyBySelector( + await nftF.TRANSFER_FROM_SELECTOR(), + ); await transferLimitsModule.addHandlerTopics(transferContextKey, [ await transferLimitsModule.MAX_TRANSFERS_PER_PERIOD_TOPIC(), @@ -53,42 +55,58 @@ async function setupTransferLimitsModule(deployer: Deployer, nftF: LandNFT): Pro return transferLimitsModule; } -async function setupRarimoModule(deployer: Deployer, nftF: LandNFT): Promise<[EquityRarimoModule, RarimoSBT]> { - const rarimoSBT = await deployer.deploy(RarimoSBT__factory); - await rarimoSBT.__RarimoSBT_init(); +async function setupKYCModule(deployer: Deployer, nftF: LandNFT): Promise<[EquityKYCModule, EquitySBT]> { + const equitySBT = await deployer.deploy(EquitySBT__factory); + await equitySBT.__EquitySBT_init(); - const rarimoModule = await deployer.deploy(EquityRarimoModule__factory); - await rarimoModule.__EquityRarimoModule_init(nftF, rarimoSBT); + const equityKYCModule = await deployer.deploy(EquityKYCModule__factory); + await equityKYCModule.__EquityKYCModule_init(nftF, equitySBT); - const transferContextKey = await rarimoModule.getContextKey(await nftF.TRANSFER_SELECTOR()); - const transferFromContextKey = await rarimoModule.getContextKey(await nftF.TRANSFER_FROM_SELECTOR()); + const transferContextKey = await equityKYCModule.getContextKeyBySelector(await nftF.TRANSFER_SELECTOR()); + const transferFromContextKey = await equityKYCModule.getContextKeyBySelector(await nftF.TRANSFER_FROM_SELECTOR()); + const safeTransferFromContextKey = await equityKYCModule.getContextKeyBySelector( + await nftF.SAFE_TRANSFER_FROM_SELECTOR(), + ); + const safeTransferFromWithDataContextKey = await equityKYCModule.getContextKeyBySelector( + await nftF.SAFE_TRANSFER_FROM_WITH_DATA_SELECTOR(), + ); - await rarimoModule.addHandlerTopics(transferContextKey, [ - await rarimoModule.HAS_SOUL_SENDER_TOPIC(), - await rarimoModule.HAS_SOUL_RECIPIENT_TOPIC(), + await equityKYCModule.addHandlerTopics(transferContextKey, [ + await equityKYCModule.HAS_SOUL_SENDER_TOPIC(), + await equityKYCModule.HAS_SOUL_RECIPIENT_TOPIC(), + ]); + await equityKYCModule.addHandlerTopics(transferFromContextKey, [ + await equityKYCModule.HAS_SOUL_SENDER_TOPIC(), + await equityKYCModule.HAS_SOUL_RECIPIENT_TOPIC(), + await equityKYCModule.HAS_SOUL_OPERATOR_TOPIC(), + ]); + await equityKYCModule.addHandlerTopics(safeTransferFromContextKey, [ + await equityKYCModule.HAS_SOUL_SENDER_TOPIC(), + await equityKYCModule.HAS_SOUL_RECIPIENT_TOPIC(), + await equityKYCModule.HAS_SOUL_OPERATOR_TOPIC(), ]); - await rarimoModule.addHandlerTopics(transferFromContextKey, [ - await rarimoModule.HAS_SOUL_SENDER_TOPIC(), - await rarimoModule.HAS_SOUL_RECIPIENT_TOPIC(), - await rarimoModule.HAS_SOUL_OPERATOR_TOPIC(), + await equityKYCModule.addHandlerTopics(safeTransferFromWithDataContextKey, [ + await equityKYCModule.HAS_SOUL_SENDER_TOPIC(), + await equityKYCModule.HAS_SOUL_RECIPIENT_TOPIC(), + await equityKYCModule.HAS_SOUL_OPERATOR_TOPIC(), ]); - return [rarimoModule, rarimoSBT]; + return [equityKYCModule, equitySBT]; } export = async (deployer: Deployer) => { const [nftF, kycCompliance, regulatoryCompliance] = await setupCoreContracts(deployer); - const [rarimoModule, rarimoSBT] = await setupRarimoModule(deployer, nftF); + const [equityKYCModule, equitySBT] = await setupKYCModule(deployer, nftF); const transferLimitsModule = await setupTransferLimitsModule(deployer, nftF); - await kycCompliance.addKYCModules([rarimoModule]); + await kycCompliance.addKYCModules([equityKYCModule]); await regulatoryCompliance.addRegulatoryModules([transferLimitsModule]); Reporter.reportContracts( ["LandNFT", await nftF.getAddress()], ["ERC20TransferLimitsModule", await transferLimitsModule.getAddress()], - ["RarimoModule", await rarimoModule.getAddress()], - ["RarimoSBT", await rarimoSBT.getAddress()], + ["EquityKYCModule", await equityKYCModule.getAddress()], + ["EquitySBT", await equitySBT.getAddress()], ); }; diff --git a/examples/equity-token/package-lock.json b/examples/equity-token/package-lock.json index 3c29c1a..093a43b 100644 --- a/examples/equity-token/package-lock.json +++ b/examples/equity-token/package-lock.json @@ -16,7 +16,7 @@ }, "devDependencies": { "@nomicfoundation/hardhat-ethers": "^3.0.8", - "@solarity/hardhat-migrate": "^3.0.2", + "@solarity/hardhat-migrate": "^3.1.0", "@typechain/ethers-v6": "^0.5.1", "@typechain/hardhat": "^9.1.0", "@types/node": "^22.14.0", @@ -40,6 +40,7 @@ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, + "optional": true, "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -54,6 +55,8 @@ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", @@ -68,6 +71,7 @@ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", "dev": true, + "optional": true, "peer": true, "engines": { "node": ">=6.9.0" @@ -78,6 +82,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", "dev": true, + "optional": true, "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", @@ -109,6 +114,8 @@ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@babel/parser": "^7.27.0", "@babel/types": "^7.27.0", @@ -125,6 +132,8 @@ "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@babel/types": "^7.25.9" }, @@ -137,6 +146,7 @@ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz", "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==", "dev": true, + "optional": true, "peer": true, "dependencies": { "@babel/compat-data": "^7.26.8", @@ -154,6 +164,8 @@ "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz", "integrity": "sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-member-expression-to-functions": "^7.25.9", @@ -175,6 +187,8 @@ "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@babel/traverse": "^7.25.9", "@babel/types": "^7.25.9" @@ -188,6 +202,8 @@ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@babel/traverse": "^7.25.9", "@babel/types": "^7.25.9" @@ -201,6 +217,8 @@ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@babel/helper-module-imports": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9", @@ -218,6 +236,8 @@ "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@babel/types": "^7.25.9" }, @@ -230,6 +250,8 @@ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=6.9.0" } @@ -239,6 +261,8 @@ "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@babel/helper-member-expression-to-functions": "^7.25.9", "@babel/helper-optimise-call-expression": "^7.25.9", @@ -256,6 +280,8 @@ "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@babel/traverse": "^7.25.9", "@babel/types": "^7.25.9" @@ -269,6 +295,8 @@ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=6.9.0" } @@ -278,6 +306,8 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=6.9.0" } @@ -287,6 +317,8 @@ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=6.9.0" } @@ -296,6 +328,7 @@ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", "dev": true, + "optional": true, "peer": true, "dependencies": { "@babel/template": "^7.27.0", @@ -310,6 +343,8 @@ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@babel/types": "^7.27.0" }, @@ -325,6 +360,8 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -340,6 +377,8 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.25.9" }, @@ -355,6 +394,8 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@babel/helper-module-transforms": "^7.26.0", "@babel/helper-plugin-utils": "^7.25.9" @@ -371,6 +412,8 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.0.tgz", "integrity": "sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.25.9", "@babel/helper-create-class-features-plugin": "^7.27.0", @@ -390,6 +433,8 @@ "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.0.tgz", "integrity": "sha512-vxaPFfJtHhgeOVXRKuHpHPAOgymmy8V8I65T1q53R7GCZlefKeCaTyDs3zOPHTTbmquvNlQYC5klEvWsBAtrBQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.26.5", "@babel/helper-validator-option": "^7.25.9", @@ -409,6 +454,8 @@ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -421,6 +468,8 @@ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@babel/code-frame": "^7.26.2", "@babel/parser": "^7.27.0", @@ -435,6 +484,8 @@ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@babel/code-frame": "^7.26.2", "@babel/generator": "^7.27.0", @@ -453,6 +504,8 @@ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@babel/helper-string-parser": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9" @@ -487,19 +540,25 @@ "version": "13.2.1", "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-browser/-/cardano-serialization-lib-browser-13.2.1.tgz", "integrity": "sha512-7RfX1gI16Vj2DgCp/ZoXqyLAakWo6+X95ku/rYGbVzuS/1etrlSiJmdbmdm+eYmszMlGQjrtOJQeVLXoj4L/Ag==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@emurgo/cardano-serialization-lib-nodejs": { "version": "13.2.0", "resolved": "https://registry.npmjs.org/@emurgo/cardano-serialization-lib-nodejs/-/cardano-serialization-lib-nodejs-13.2.0.tgz", "integrity": "sha512-Bz1zLGEqBQ0BVkqt1OgMxdBOE3BdUWUd7Ly9Ecr/aUwkA8AV1w1XzBMe4xblmJHnB1XXNlPH4SraXCvO+q0Mig==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@ethereumjs/common": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-4.4.0.tgz", "integrity": "sha512-Fy5hMqF6GsE6DpYTyqdDIJPJgUtDn4dL120zKw+Pswuo+iLyBsEYuSyzMw6NVzD2vDzcBG9fE4+qX4X2bPc97w==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@ethereumjs/util": "^9.1.0" } @@ -521,6 +580,8 @@ "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-5.4.0.tgz", "integrity": "sha512-SCHnK7m/AouZ7nyoR0MEXw1OO/tQojSbp88t8oxhwes5iZkZCtfFdUrJaiIb72qIpH2FVw6s1k1uP7LXuH7PsA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@ethereumjs/common": "^4.4.0", "@ethereumjs/rlp": "^5.0.2", @@ -676,6 +737,8 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "optional": true, + "peer": true, "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/properties": "^5.8.0" @@ -755,6 +818,8 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "optional": true, + "peer": true, "dependencies": { "@ethersproject/abi": "^5.8.0", "@ethersproject/abstract-provider": "^5.8.0", @@ -810,6 +875,8 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "optional": true, + "peer": true, "dependencies": { "@ethersproject/abstract-signer": "^5.8.0", "@ethersproject/basex": "^5.8.0", @@ -840,6 +907,8 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "optional": true, + "peer": true, "dependencies": { "@ethersproject/abstract-signer": "^5.8.0", "@ethersproject/address": "^5.8.0", @@ -860,7 +929,9 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@ethersproject/keccak256": { "version": "5.8.0", @@ -932,6 +1003,8 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "optional": true, + "peer": true, "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/sha2": "^5.8.0" @@ -971,6 +1044,8 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "optional": true, + "peer": true, "dependencies": { "@ethersproject/abstract-provider": "^5.8.0", "@ethersproject/abstract-signer": "^5.8.0", @@ -998,13 +1073,17 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@ethersproject/providers/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, + "optional": true, + "peer": true, "engines": { "node": ">=10.0.0" }, @@ -1036,6 +1115,8 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "optional": true, + "peer": true, "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/logger": "^5.8.0" @@ -1076,6 +1157,8 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "optional": true, + "peer": true, "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/logger": "^5.8.0", @@ -1121,6 +1204,8 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "optional": true, + "peer": true, "dependencies": { "@ethersproject/bignumber": "^5.8.0", "@ethersproject/bytes": "^5.8.0", @@ -1193,6 +1278,8 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "optional": true, + "peer": true, "dependencies": { "@ethersproject/bignumber": "^5.8.0", "@ethersproject/constants": "^5.8.0", @@ -1214,6 +1301,8 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "optional": true, + "peer": true, "dependencies": { "@ethersproject/abstract-provider": "^5.8.0", "@ethersproject/abstract-signer": "^5.8.0", @@ -1270,6 +1359,8 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "optional": true, + "peer": true, "dependencies": { "@ethersproject/bytes": "^5.8.0", "@ethersproject/hash": "^5.8.0", @@ -1283,6 +1374,8 @@ "resolved": "https://registry.npmjs.org/@everstake/wallet-sdk/-/wallet-sdk-1.0.15.tgz", "integrity": "sha512-uL6vFRPeO4wIBPBkMdkvvkfgT8NogRMFU6hTJ/124MA47IedF/+gqCiA4x26uYruUPN1p5UNh3eIbjaQbnZKLQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/web3.js": "1.95.8", "bignumber.js": "9.1.2", @@ -1296,6 +1389,8 @@ "resolved": "https://registry.npmjs.org/@solana/web3.js/-/web3.js-1.95.8.tgz", "integrity": "sha512-sBHzNh7dHMrmNS5xPD1d0Xa2QffW/RXaxu/OysRXBfwTp+LYqGGmMtCYYwrHPrN5rjAmJCsQRNAwv4FM0t3B6g==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@babel/runtime": "^7.25.0", "@noble/curves": "^1.4.2", @@ -1319,6 +1414,8 @@ "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "safe-buffer": "^5.0.1" } @@ -1328,6 +1425,8 @@ "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "base-x": "^3.0.2" } @@ -1346,6 +1445,8 @@ "resolved": "https://registry.npmjs.org/@fivebinaries/coin-selection/-/coin-selection-3.0.0.tgz", "integrity": "sha512-h25Pn1ZA7oqQBQDodGAgIsQt66T2wDge9onBKNqE66WNWL0KJiKJbpij8YOLo5AAlEIg5IS7EB1QjBgDOIg6DQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@emurgo/cardano-serialization-lib-browser": "^13.2.0", "@emurgo/cardano-serialization-lib-nodejs": "13.2.0" @@ -1356,6 +1457,8 @@ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -1379,6 +1482,8 @@ "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=6.0.0" } @@ -1394,6 +1499,8 @@ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1404,6 +1511,8 @@ "resolved": "https://registry.npmjs.org/@mobily/ts-belt/-/ts-belt-3.13.1.tgz", "integrity": "sha512-K5KqIhPI/EoCTbA6CGbrenM9s41OouyK8A03fGJJcla/zKucsgLbz8HNbeseoLarRPgyWJsUyCYqFhI7t3Ra9Q==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">= 10.*" } @@ -1437,6 +1546,8 @@ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -1457,82 +1568,90 @@ ] }, "node_modules/@nomicfoundation/edr": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.10.0.tgz", - "integrity": "sha512-ed9qHSNssgh+0hYUx4ilDoMxxgf/sNT8SjnzgmA5A/LSXHaq2ax68bkdQ8otLYTlxHCO9BS5Nhb8bfajV4FZeA==", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.11.3.tgz", + "integrity": "sha512-kqILRkAd455Sd6v8mfP3C1/0tCOynJWY+Ir+k/9Boocu2kObCrsFgG+ZWB7fSBVdd9cPVSNrnhWS+V+PEo637g==", "dev": true, + "license": "MIT", "dependencies": { - "@nomicfoundation/edr-darwin-arm64": "0.10.0", - "@nomicfoundation/edr-darwin-x64": "0.10.0", - "@nomicfoundation/edr-linux-arm64-gnu": "0.10.0", - "@nomicfoundation/edr-linux-arm64-musl": "0.10.0", - "@nomicfoundation/edr-linux-x64-gnu": "0.10.0", - "@nomicfoundation/edr-linux-x64-musl": "0.10.0", - "@nomicfoundation/edr-win32-x64-msvc": "0.10.0" + "@nomicfoundation/edr-darwin-arm64": "0.11.3", + "@nomicfoundation/edr-darwin-x64": "0.11.3", + "@nomicfoundation/edr-linux-arm64-gnu": "0.11.3", + "@nomicfoundation/edr-linux-arm64-musl": "0.11.3", + "@nomicfoundation/edr-linux-x64-gnu": "0.11.3", + "@nomicfoundation/edr-linux-x64-musl": "0.11.3", + "@nomicfoundation/edr-win32-x64-msvc": "0.11.3" }, "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-darwin-arm64": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.10.0.tgz", - "integrity": "sha512-n0N+CVM4LKN9QeGZ5irr94Q4vwSs4u7W6jfuhNLmx1cpUxwE9RpeW+ym93JXDv62iVsbekeI5VsUEBHy0hymtA==", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.11.3.tgz", + "integrity": "sha512-w0tksbdtSxz9nuzHKsfx4c2mwaD0+l5qKL2R290QdnN9gi9AV62p9DHkOgfBdyg6/a6ZlnQqnISi7C9avk/6VA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-darwin-x64": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.10.0.tgz", - "integrity": "sha512-nmImWM/3qWopYzOmicMzK/MF3rFKpm2Biuc8GpQYTLjdXhmItpP9JwEPyjbAWv/1HI09C2pRzgNzKfTxoIgJ6w==", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.11.3.tgz", + "integrity": "sha512-QR4jAFrPbOcrO7O2z2ESg+eUeIZPe2bPIlQYgiJ04ltbSGW27FblOzdd5+S3RoOD/dsZGKAvvy6dadBEl0NgoA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-linux-arm64-gnu": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.10.0.tgz", - "integrity": "sha512-B/N1IyrCU7J6H4QckkQ1cSWAq1jSrJcXpO8GzRaQD1bgOOvg8wrUOrCD+Mfw7MLa6+X9vdZoXtPZOaaOQ9LmhA==", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.11.3.tgz", + "integrity": "sha512-Ktjv89RZZiUmOFPspuSBVJ61mBZQ2+HuLmV67InNlh9TSUec/iDjGIwAn59dx0bF/LOSrM7qg5od3KKac4LJDQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-linux-arm64-musl": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.10.0.tgz", - "integrity": "sha512-NA9DFLB0LzcKy9mTCUzgnRDbmmSfW0CdO22ySwOy+MKt4Cr9eJi+XR5ZH933Rxpi6BWNkSPeS2ECETE25sJT3w==", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.11.3.tgz", + "integrity": "sha512-B3sLJx1rL2E9pfdD4mApiwOZSrX0a/KQSBWdlq1uAhFKqkl00yZaY4LejgZndsJAa4iKGQJlGnw4HCGeVt0+jA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-linux-x64-gnu": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.10.0.tgz", - "integrity": "sha512-bDrbRTA9qZ9wSw5mqa8VpLFbf6ue2Z4qmRd08404eKm8RyBEFxjdHflFzCx46gz/Td0e+GLXy6KTVDj5D29r8w==", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.11.3.tgz", + "integrity": "sha512-D/4cFKDXH6UYyKPu6J3Y8TzW11UzeQI0+wS9QcJzjlrrfKj0ENW7g9VihD1O2FvXkdkTjcCZYb6ai8MMTCsaVw==", "dev": true, + "license": "MIT", "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-linux-x64-musl": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.10.0.tgz", - "integrity": "sha512-wx7yOlC/hx4N1xuIeh5cAebpzCTx8ZH8/z0IyYMf2t4v52KHERz4IyzBz5OLfd+0IqTRg8ZU5EnFBacIoPeP/g==", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.11.3.tgz", + "integrity": "sha512-ergXuIb4nIvmf+TqyiDX5tsE49311DrBky6+jNLgsGDTBaN1GS3OFwFS8I6Ri/GGn6xOaT8sKu3q7/m+WdlFzg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 18" } }, "node_modules/@nomicfoundation/edr-win32-x64-msvc": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.10.0.tgz", - "integrity": "sha512-DpBdVMimb+BUEs0E+nLGQ5JFHdGHyxQQNA+nh9V1eKtgarsV21S6br/d1vlQBMLQqkIzwmc6n+/O9Zjk2KfB3g==", + "version": "0.11.3", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.11.3.tgz", + "integrity": "sha512-snvEf+WB3OV0wj2A7kQ+ZQqBquMcrozSLXcdnMdEl7Tmn+KDCbmFKBt3Tk0X3qOU4RKQpLPnTxdM07TJNVtung==", "dev": true, + "license": "MIT", "engines": { "node": ">= 18" } @@ -1552,10 +1671,11 @@ } }, "node_modules/@nomicfoundation/hardhat-verify": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.13.tgz", - "integrity": "sha512-i57GX1sC0kYGyRVnbQrjjyBTpWTKgrvKC+jH8CMKV6gHp959Upb8lKaZ58WRHIU0espkulTxLnacYeUDirwJ2g==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.1.0.tgz", + "integrity": "sha512-ogRbwlzphOR2MK/TxDG/uOftEhVJtD81eBU32YZ/maqQOHYOPKymu7BvF9syp7b2fxID5/loEIvxizjW1yBvvQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@ethersproject/abi": "^5.1.2", @@ -1569,7 +1689,7 @@ "undici": "^5.14.0" }, "peerDependencies": { - "hardhat": "^2.0.4" + "hardhat": "^2.26.0" } }, "node_modules/@nomicfoundation/solidity-analyzer": { @@ -1677,31 +1797,41 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@protobufjs/base64": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@protobufjs/codegen": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@protobufjs/eventemitter": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@protobufjs/fetch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" @@ -1711,31 +1841,41 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@protobufjs/inquire": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@protobufjs/path": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@protobufjs/pool": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@protobufjs/utf8": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@scure/base": { "version": "1.2.4", @@ -1786,6 +1926,8 @@ "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.5.4.tgz", "integrity": "sha512-TFM4ni0vKvCfBpohoh+/lY05i9gRbSwXWngAsF4CABQxoaOHijxuaZ2R6cStDQ5CHtHO9aGJTr4ksVJASRRyMA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@noble/hashes": "~1.7.1", "@scure/base": "~1.2.4" @@ -1799,6 +1941,8 @@ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.7.2.tgz", "integrity": "sha512-biZ0NUSxyjLLqo6KxEJ1b+C2NAx0wtDoFvCaXHGgUkeHzf3Xc1xKumFKREuT7f7DARNZ/slvYUwFG6B0f2b6hQ==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -1948,13 +2092,17 @@ "version": "0.33.22", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.33.22.tgz", "integrity": "sha512-auUj4k+f4pyrIVf4GW5UKquSZFHJWri06QgARy9C0t9ZTjJLIuNIrr1yl9bWcJWJ1Gz1vOvYN1D+QPaIlNMVkQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@solana-program/compute-budget": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/@solana-program/compute-budget/-/compute-budget-0.6.1.tgz", "integrity": "sha512-PWcVmRx2gSQ8jd5va5HzSlKqQmR8Q1sYaPcqpCzhOHcApJ4YsVWY6QhaOD5Nx7z1UXkP12vNq3KDsSCZnT3Hkw==", "dev": true, + "optional": true, + "peer": true, "peerDependencies": { "@solana/web3.js": "^2.0.0" } @@ -1964,6 +2112,8 @@ "resolved": "https://registry.npmjs.org/@solana-program/system/-/system-0.6.2.tgz", "integrity": "sha512-q0ZnylK+LISjuP2jH5GWV9IJPtpzQctj5KQwij9XCDRSGkcFr2fpqptNnVupTLQiNL6Q4c1OZuG8WBmyFXVXZw==", "dev": true, + "optional": true, + "peer": true, "peerDependencies": { "@solana/web3.js": "^2.0.0" } @@ -1973,6 +2123,8 @@ "resolved": "https://registry.npmjs.org/@solana-program/token/-/token-0.4.1.tgz", "integrity": "sha512-eSYmjsapzE9jXT2J9xydlMj/zsangMEIZAy9dy75VCXM6kgDCSnH5R7+HsIoKOTvb2VggU7GojC+YhMwWGCIBw==", "dev": true, + "optional": true, + "peer": true, "peerDependencies": { "@solana/web3.js": "^2.0.0" } @@ -1982,6 +2134,8 @@ "resolved": "https://registry.npmjs.org/@solana-program/token-2022/-/token-2022-0.3.4.tgz", "integrity": "sha512-URHA91F9sDibbL6RbuhnKHWGeAONCDcCmHq8tMtpVOhse9/WKp0JOvdLSiGuRkKZqLHo74xF8otmgPVchgVZXQ==", "dev": true, + "optional": true, + "peer": true, "peerDependencies": { "@solana/web3.js": "^2.0.0" } @@ -1991,6 +2145,8 @@ "resolved": "https://registry.npmjs.org/@solana/accounts/-/accounts-2.0.0.tgz", "integrity": "sha512-1CE4P3QSDH5x+ZtSthMY2mn/ekROBnlT3/4f3CHDJicDvLQsgAq2yCvGHsYkK3ZA0mxhFLuhJVjuKASPnmG1rQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/addresses": "2.0.0", "@solana/codecs-core": "2.0.0", @@ -2011,6 +2167,8 @@ "resolved": "https://registry.npmjs.org/@solana/addresses/-/addresses-2.0.0.tgz", "integrity": "sha512-8n3c/mUlH1/z+pM8e7OJ6uDSXw26Be0dgYiokiqblO66DGQ0d+7pqFUFZ5pEGjJ9PU2lDTSfY8rHf4cemOqwzQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/assertions": "2.0.0", "@solana/codecs-core": "2.0.0", @@ -2029,6 +2187,8 @@ "resolved": "https://registry.npmjs.org/@solana/assertions/-/assertions-2.0.0.tgz", "integrity": "sha512-NyPPqZRNGXs/GAjfgsw7YS6vCTXWt4ibXveS+ciy5sdmp/0v3pA6DlzYjleF9Sljrew0IiON15rjaXamhDxYfQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/errors": "2.0.0" }, @@ -2044,6 +2204,8 @@ "resolved": "https://registry.npmjs.org/@solana/buffer-layout/-/buffer-layout-4.0.1.tgz", "integrity": "sha512-E1ImOIAD1tBZFRdjeM4/pzTiTApC0AOBGwyAMS4fwIodCWArzJ3DWdoh8cKxeFM2fElkxBh2Aqts1BPC373rHA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "buffer": "~6.0.3" }, @@ -2056,6 +2218,8 @@ "resolved": "https://registry.npmjs.org/@solana/codecs/-/codecs-2.0.0.tgz", "integrity": "sha512-xneIG5ppE6WIGaZCK7JTys0uLhzlnEJUdBO8nRVIyerwH6aqCfb0fGe7q5WNNYAVDRSxC0Pc1TDe1hpdx3KWmQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/codecs-core": "2.0.0", "@solana/codecs-data-structures": "2.0.0", @@ -2075,6 +2239,8 @@ "resolved": "https://registry.npmjs.org/@solana/codecs-core/-/codecs-core-2.0.0.tgz", "integrity": "sha512-qCG+3hDU5Pm8V6joJjR4j4Zv9md1z0RaecniNDIkEglnxmOUODnmPLWbtOjnDylfItyuZeDihK8hkewdj8cUtw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/errors": "2.0.0" }, @@ -2090,6 +2256,8 @@ "resolved": "https://registry.npmjs.org/@solana/codecs-data-structures/-/codecs-data-structures-2.0.0.tgz", "integrity": "sha512-N98Y4jsrC/XeOgqrfsGqcOFIaOoMsKdAxOmy5oqVaEN67YoGSLNC9ROnqamOAOrsZdicTWx9/YLKFmQi9DPh1A==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/codecs-core": "2.0.0", "@solana/codecs-numbers": "2.0.0", @@ -2107,6 +2275,8 @@ "resolved": "https://registry.npmjs.org/@solana/codecs-numbers/-/codecs-numbers-2.0.0.tgz", "integrity": "sha512-r66i7VzJO1MZkQWZIAI6jjJOFVpnq0+FIabo2Z2ZDtrArFus/SbSEv543yCLeD2tdR/G/p+1+P5On10qF50Y1Q==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/codecs-core": "2.0.0", "@solana/errors": "2.0.0" @@ -2123,6 +2293,8 @@ "resolved": "https://registry.npmjs.org/@solana/codecs-strings/-/codecs-strings-2.0.0.tgz", "integrity": "sha512-dNqeCypsvaHcjW86H0gYgAZGGkKVBeKVeh7WXlOZ9kno7PeQ2wNkpccyzDfuzaIsKv+HZUD3v/eo86GCvnKazQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/codecs-core": "2.0.0", "@solana/codecs-numbers": "2.0.0", @@ -2141,6 +2313,8 @@ "resolved": "https://registry.npmjs.org/@solana/errors/-/errors-2.0.0.tgz", "integrity": "sha512-IHlaPFSy4lvYco1oHJ3X8DbchWwAwJaL/4wZKnF1ugwZ0g0re8wbABrqNOe/jyZ84VU9Z14PYM8W9oDAebdJbw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "chalk": "^5.3.0", "commander": "^12.1.0" @@ -2160,6 +2334,8 @@ "resolved": "https://registry.npmjs.org/@solana/fast-stable-stringify/-/fast-stable-stringify-2.0.0.tgz", "integrity": "sha512-EsIx9z+eoxOmC+FpzhEb+H67CCYTbs/omAqXD4EdEYnCHWrI1li1oYBV+NoKzfx8fKlX+nzNB7S/9kc4u7Etpw==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=20.18.0" }, @@ -2172,6 +2348,8 @@ "resolved": "https://registry.npmjs.org/@solana/functional/-/functional-2.0.0.tgz", "integrity": "sha512-Sj+sLiUTimnMEyGnSLGt0lbih2xPDUhxhonnrIkPwA+hjQ3ULGHAxeevHU06nqiVEgENQYUJ5rCtHs4xhUFAkQ==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=20.18.0" }, @@ -2184,6 +2362,8 @@ "resolved": "https://registry.npmjs.org/@solana/instructions/-/instructions-2.0.0.tgz", "integrity": "sha512-MiTEiNF7Pzp+Y+x4yadl2VUcNHboaW5WP52psBuhHns3GpbbruRv5efMpM9OEQNe1OsN+Eg39vjEidX55+P+DQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/errors": "2.0.0" }, @@ -2199,6 +2379,8 @@ "resolved": "https://registry.npmjs.org/@solana/keys/-/keys-2.0.0.tgz", "integrity": "sha512-SSLSX8BXRvfLKBqsmBghmlhMKpwHeWd5CHi5zXgTS1BRrtiU6lcrTVC9ie6B+WaNNq7oe3e6K5bdbhu3fFZ+0g==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/assertions": "2.0.0", "@solana/codecs-core": "2.0.0", @@ -2217,6 +2399,8 @@ "resolved": "https://registry.npmjs.org/@solana/options/-/options-2.0.0.tgz", "integrity": "sha512-OVc4KnYosB8oAukQ/htgrxXSxlUP6gUu5Aau6d/BgEkPQzWd/Pr+w91VWw3i3zZuu2SGpedbyh05RoJBe/hSXA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/codecs-core": "2.0.0", "@solana/codecs-data-structures": "2.0.0", @@ -2236,6 +2420,8 @@ "resolved": "https://registry.npmjs.org/@solana/programs/-/programs-2.0.0.tgz", "integrity": "sha512-JPIKB61pWfODnsvEAaPALc6vR5rn7kmHLpFaviWhBtfUlEVgB8yVTR0MURe4+z+fJCPRV5wWss+svA4EeGDYzQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/addresses": "2.0.0", "@solana/errors": "2.0.0" @@ -2252,6 +2438,8 @@ "resolved": "https://registry.npmjs.org/@solana/promises/-/promises-2.0.0.tgz", "integrity": "sha512-4teQ52HDjK16ORrZe1zl+Q9WcZdQ+YEl0M1gk59XG7D0P9WqaVEQzeXGnKSCs+Y9bnB1u5xCJccwpUhHYWq6gg==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=20.18.0" }, @@ -2264,6 +2452,8 @@ "resolved": "https://registry.npmjs.org/@solana/rpc/-/rpc-2.0.0.tgz", "integrity": "sha512-TumQ9DFRpib/RyaIqLVfr7UjqSo7ldfzpae0tgjM93YjbItB4Z0VcUXc3uAFvkeYw2/HIMb46Zg43mkUwozjDg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/errors": "2.0.0", "@solana/fast-stable-stringify": "2.0.0", @@ -2287,6 +2477,8 @@ "resolved": "https://registry.npmjs.org/@solana/rpc-api/-/rpc-api-2.0.0.tgz", "integrity": "sha512-1FwitYxwADMF/6zKP2kNXg8ESxB6GhNBNW1c4f5dEmuXuBbeD/enLV3WMrpg8zJkIaaYarEFNbt7R7HyFzmURQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/addresses": "2.0.0", "@solana/codecs-core": "2.0.0", @@ -2312,6 +2504,8 @@ "resolved": "https://registry.npmjs.org/@solana/rpc-parsed-types/-/rpc-parsed-types-2.0.0.tgz", "integrity": "sha512-VCeY/oKVEtBnp8EDOc5LSSiOeIOLFIgLndcxqU0ij/cZaQ01DOoHbhluvhZtU80Z3dUeicec8TiMgkFzed+WhQ==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=20.18.0" }, @@ -2324,6 +2518,8 @@ "resolved": "https://registry.npmjs.org/@solana/rpc-spec/-/rpc-spec-2.0.0.tgz", "integrity": "sha512-1uIDzj7vocCUqfOifjv1zAuxQ53ugiup/42edVFoQLOnJresoEZLL6WjnsJq4oCTccEAvGhUBI1WWKeZTGNxFQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/errors": "2.0.0", "@solana/rpc-spec-types": "2.0.0" @@ -2340,6 +2536,8 @@ "resolved": "https://registry.npmjs.org/@solana/rpc-spec-types/-/rpc-spec-types-2.0.0.tgz", "integrity": "sha512-G2lmhFhgtxMQd/D6B04BHGE7bm5dMZdIPQNOqVGhzNAVjrmyapD3JN2hKAbmaYPe97wLfZERw0Ux1u4Y6q7TqA==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=20.18.0" }, @@ -2352,6 +2550,8 @@ "resolved": "https://registry.npmjs.org/@solana/rpc-subscriptions/-/rpc-subscriptions-2.0.0.tgz", "integrity": "sha512-AdwMJHMrhlj7q1MPjZmVcKq3iLqMW3N0MT8kzIAP2vP+8o/d6Fn4aqGxoz2Hlfn3OYIZoYStN2VBtwzbcfEgMA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/errors": "2.0.0", "@solana/fast-stable-stringify": "2.0.0", @@ -2377,6 +2577,8 @@ "resolved": "https://registry.npmjs.org/@solana/rpc-subscriptions-api/-/rpc-subscriptions-api-2.0.0.tgz", "integrity": "sha512-NAJQvSFXYIIf8zxsMFBCkSbZNZgT32pzPZ1V6ZAd+U2iDEjx3L+yFwoJgfOcHp8kAV+alsF2lIsGBlG4u+ehvw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/addresses": "2.0.0", "@solana/keys": "2.0.0", @@ -2398,6 +2600,8 @@ "resolved": "https://registry.npmjs.org/@solana/rpc-subscriptions-channel-websocket/-/rpc-subscriptions-channel-websocket-2.0.0.tgz", "integrity": "sha512-hSQDZBmcp2t+gLZsSBqs/SqVw4RuNSC7njiP46azyzW7oGg8X2YPV36AHGsHD12KPsc0UpT1OAZ4+AN9meVKww==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/errors": "2.0.0", "@solana/functional": "2.0.0", @@ -2417,6 +2621,8 @@ "resolved": "https://registry.npmjs.org/@solana/rpc-subscriptions-spec/-/rpc-subscriptions-spec-2.0.0.tgz", "integrity": "sha512-VXMiI3fYtU1PkVVTXL87pcY48ZY8aCi1N6FqtxSP2xg/GASL01j1qbwyIL1OvoCqGyRgIxdd/YfaByW9wmWBhA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/errors": "2.0.0", "@solana/promises": "2.0.0", @@ -2435,6 +2641,8 @@ "resolved": "https://registry.npmjs.org/@solana/rpc-transformers/-/rpc-transformers-2.0.0.tgz", "integrity": "sha512-H6tN0qcqzUangowsLLQtYXKJsf1Roe3/qJ1Cy0gv9ojY9uEvNbJqpeEj+7blv0MUZfEe+rECAwBhxxRKPMhYGw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/errors": "2.0.0", "@solana/functional": "2.0.0", @@ -2453,6 +2661,8 @@ "resolved": "https://registry.npmjs.org/@solana/rpc-transport-http/-/rpc-transport-http-2.0.0.tgz", "integrity": "sha512-UJLhKhhxDd1OPi8hb2AenHsDm1mofCBbhWn4bDCnH2Q3ulwYadUhcNqNbxjJPQ774VNhAf53SSI5A6PQo8IZSQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/errors": "2.0.0", "@solana/rpc-spec": "2.0.0", @@ -2471,6 +2681,8 @@ "resolved": "https://registry.npmjs.org/@solana/rpc-types/-/rpc-types-2.0.0.tgz", "integrity": "sha512-o1ApB9PYR0A3XjVSOh//SOVWgjDcqMlR3UNmtqciuREIBmWqnvPirdOa5EJxD3iPhfA4gnNnhGzT+tMDeDW/Kw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/addresses": "2.0.0", "@solana/codecs-core": "2.0.0", @@ -2490,6 +2702,8 @@ "resolved": "https://registry.npmjs.org/@solana/signers/-/signers-2.0.0.tgz", "integrity": "sha512-JEYJS3x/iKkqPV/3b1nLpX9lHib21wQKV3fOuu1aDLQqmX9OYKrnIIITYdnFDhmvGhpEpkkbPnqu7yVaFIBYsQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/addresses": "2.0.0", "@solana/codecs-core": "2.0.0", @@ -2511,6 +2725,8 @@ "resolved": "https://registry.npmjs.org/@solana/subscribable/-/subscribable-2.0.0.tgz", "integrity": "sha512-Ex7d2GnTSNVMZDU3z6nKN4agRDDgCgBDiLnmn1hmt0iFo3alr3gRAqiqa7qGouAtYh9/29pyc8tVJCijHWJPQQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/errors": "2.0.0" }, @@ -2526,6 +2742,8 @@ "resolved": "https://registry.npmjs.org/@solana/sysvars/-/sysvars-2.0.0.tgz", "integrity": "sha512-8D4ajKcCYQsTG1p4k30lre2vjxLR6S5MftUGJnIaQObDCzGmaeA9GRti4Kk4gSPWVYFTBoj1ASx8EcEXaB3eIQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/accounts": "2.0.0", "@solana/codecs": "2.0.0", @@ -2544,6 +2762,8 @@ "resolved": "https://registry.npmjs.org/@solana/transaction-confirmation/-/transaction-confirmation-2.0.0.tgz", "integrity": "sha512-JkTw5gXLiqQjf6xK0fpVcoJ/aMp2kagtFSD/BAOazdJ3UYzOzbzqvECt6uWa3ConcMswQ2vXalVtI7ZjmYuIeg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/addresses": "2.0.0", "@solana/codecs-strings": "2.0.0", @@ -2568,6 +2788,8 @@ "resolved": "https://registry.npmjs.org/@solana/transaction-messages/-/transaction-messages-2.0.0.tgz", "integrity": "sha512-Uc6Fw1EJLBrmgS1lH2ZfLAAKFvprWPQQzOVwZS78Pv8Whsk7tweYTK6S0Upv0nHr50rGpnORJfmdBrXE6OfNGg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/addresses": "2.0.0", "@solana/codecs-core": "2.0.0", @@ -2590,6 +2812,8 @@ "resolved": "https://registry.npmjs.org/@solana/transactions/-/transactions-2.0.0.tgz", "integrity": "sha512-VfdTE+59WKvuBG//6iE9RPjAB+ZT2kLgY2CDHabaz6RkH6OjOkMez9fWPVa3Xtcus+YQWN1SnQoryjF/xSx04w==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/addresses": "2.0.0", "@solana/codecs-core": "2.0.0", @@ -2616,6 +2840,8 @@ "integrity": "sha512-x+ZRB2/r5tVK/xw8QRbAfgPcX51G9f2ifEyAQ/J5npOO+6+MPeeCjtr5UxHNDAYs9Ypo0PN+YJATCO4vhzQJGg==", "deprecated": "@solana/web3.js version 2.0 is now @solana/kit! Remove @solana/web3.js@2 from your dependencies and replace it with @solana/kit. As needed, upgrade all of your @solana-program/* dependencies to the latest versions that use Kit.", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@solana/accounts": "2.0.0", "@solana/addresses": "2.0.0", @@ -2644,38 +2870,32 @@ } }, "node_modules/@solarity/hardhat-migrate": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@solarity/hardhat-migrate/-/hardhat-migrate-3.0.2.tgz", - "integrity": "sha512-JpwYUjebMMTlGqPhraVEkxRkf1Qv8lKl5J/FeLr/G5ifrt519jm0vuVPux7ys4TyBpzVQCeI/hzzQNf7oHfPwQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@solarity/hardhat-migrate/-/hardhat-migrate-3.1.0.tgz", + "integrity": "sha512-d0IFwWZGCc06OwU0oMm9TiBb9rl3Vny8RTAGc+HjHv5OwHPN7tA6MKaY42nF9Fu0wLIAf2DvLevA1VZydnGOCA==", "dev": true, + "license": "MIT", + "workspaces": [ + "test/fixture-projects/*" + ], "dependencies": { - "@trezor/connect": "9.5.0", - "axios": "1.7.9", - "ethers": "6.13.5", - "json2md": "2.0.2", + "axios": "1.9.0", + "ethers": "6.13.7", + "json2md": "2.0.3", "ora": "5.4.1", - "prettier": "3.5.1" + "prettier": "3.5.3" }, "peerDependencies": { "@nomicfoundation/hardhat-ethers": "^3.0.0", - "@nomicfoundation/hardhat-verify": "^2.0.0", - "hardhat": "^2.10.0", + "@nomicfoundation/hardhat-verify": "^2.1.0", + "@trezor/connect": "9.5.0", + "hardhat": "^2.26.0", "typechain": "^8.0.0" - } - }, - "node_modules/@solarity/hardhat-migrate/node_modules/prettier": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.1.tgz", - "integrity": "sha512-hPpFQvHwL3Qv5AdRvBFMhnKo4tYxp0ReXiPn2bxkiohEX6mBeBwEpBSQTkD458RaaDKQMYSp4hX4UtfUTA5wDw==", - "dev": true, - "bin": { - "prettier": "bin/prettier.cjs" }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "peerDependenciesMeta": { + "@trezor/connect": { + "optional": true + } } }, "node_modules/@solarity/solidity-lib": { @@ -2702,6 +2922,8 @@ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "tslib": "^2.8.0" } @@ -2721,6 +2943,8 @@ "resolved": "https://registry.npmjs.org/@trezor/analytics/-/analytics-1.3.0.tgz", "integrity": "sha512-z6dqmpK+DeJJN9cSUlOtxf0QB4dJM2rrOg0M4SMJuEZAAtEBMuhBMt2drs4KvS81ZfT8y7KOs8TvCV7Mkxxy4g==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@trezor/env-utils": "1.3.0", "@trezor/utils": "9.3.0" @@ -2734,6 +2958,8 @@ "resolved": "https://registry.npmjs.org/@trezor/blockchain-link/-/blockchain-link-2.4.0.tgz", "integrity": "sha512-oZIf9MY7NU/kZwe6nxIRpbyuW/1loaC19tQCRdNac3nUdKKfGpS4Km9dXjau9rdq9ZzoXiBPdmJ28IF8Fbf37A==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@everstake/wallet-sdk": "^1.0.10", "@solana-program/token": "^0.4.1", @@ -2759,6 +2985,8 @@ "resolved": "https://registry.npmjs.org/@trezor/blockchain-link-types/-/blockchain-link-types-1.3.0.tgz", "integrity": "sha512-NTMFrDzNyAoqE1556UVp63KuCkrpZa3Lv4SKWOpIovkQP0kk4trMKRZua1phqOFdPHUw2lWRxOzvCHq6xOnzmg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@everstake/wallet-sdk": "^1.0.10", "@solana/web3.js": "^2.0.0", @@ -2774,6 +3002,8 @@ "resolved": "https://registry.npmjs.org/@trezor/blockchain-link-utils/-/blockchain-link-utils-1.3.0.tgz", "integrity": "sha512-RDosOutSlltckmetUq+02XqwkiZVNYwSh82SpD/ZWQKjohZT5Cv6L9RMGt34+UurZXPUxFOvHQj1gBc+DIamkw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@everstake/wallet-sdk": "^1.0.10", "@mobily/ts-belt": "^3.13.1", @@ -2789,6 +3019,8 @@ "resolved": "https://registry.npmjs.org/@trezor/connect/-/connect-9.5.0.tgz", "integrity": "sha512-xvt5TK0uNgVvfLx7MC0Bqwt2FesEmo8iPaOV73KRHqx2uzqZoYwRuHRmL2UN/eMyxRIZgCmaZZXlflRLTXVFgw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@babel/preset-typescript": "^7.24.7", "@ethereumjs/common": "^4.4.0", @@ -2828,6 +3060,8 @@ "resolved": "https://registry.npmjs.org/@trezor/connect-analytics/-/connect-analytics-1.3.0.tgz", "integrity": "sha512-DCKVnnCB7h+XysUKzghVg2PY/5zETt2dkbKtywwd/uRgnXH3LuFajVj60s1eTOLzSakUaUHr5i+v+Gi2Poz4yA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@trezor/analytics": "1.3.0" }, @@ -2840,6 +3074,8 @@ "resolved": "https://registry.npmjs.org/@trezor/connect-common/-/connect-common-0.3.0.tgz", "integrity": "sha512-7hjIuXAFxKZp72u2oESuxUFx77onLMOyWNVZf0uOaC6WBfhux7ZYgY+9+qGiV9SYD6xpdLRhrlKerxtQn78eng==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@trezor/env-utils": "1.3.0", "@trezor/utils": "9.3.0" @@ -2853,6 +3089,8 @@ "resolved": "https://registry.npmjs.org/@trezor/crypto-utils/-/crypto-utils-1.1.0.tgz", "integrity": "sha512-Uej/0tM9ElOdh+zSHkNZ2fV3NhxhB05tb8rQrboWQ711h2NmKYTpza0KwqLn1riVFQU35+6ok4WxmdB6iPP1gA==", "dev": true, + "optional": true, + "peer": true, "peerDependencies": { "tslib": "^2.6.2" } @@ -2862,6 +3100,8 @@ "resolved": "https://registry.npmjs.org/@trezor/env-utils/-/env-utils-1.3.0.tgz", "integrity": "sha512-ll9RGEAFZuX/C79KU3/OTjRdD/TS0vOx0PcW6n9JtGeMrFeEwRrgVy8+0OcFcYODSdzsWLhwB9XHPaLPC3tOCQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "ua-parser-js": "^1.0.37" }, @@ -2888,6 +3128,8 @@ "resolved": "https://registry.npmjs.org/@trezor/protobuf/-/protobuf-1.3.0.tgz", "integrity": "sha512-HLi++RB9/9AYK/k/BOODMNcibyN8Z8MPtcYcHcnxqNbv+/xTaNThBh70Q3ji57p0Vc17n/5QtFB4dhsWX3cNrg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@trezor/schema-utils": "1.3.0", "protobufjs": "7.4.0" @@ -2901,6 +3143,8 @@ "resolved": "https://registry.npmjs.org/@trezor/protocol/-/protocol-1.2.2.tgz", "integrity": "sha512-iXD+Wqpk0FpwJpQbAFKw+8AL6ipfDjQ7g+MYZ7lU1H7/gCxM2XqLI4eW7Il+FAwk7orepDuoSbJSVcsNJYKjOA==", "dev": true, + "optional": true, + "peer": true, "peerDependencies": { "tslib": "^2.6.2" } @@ -2910,6 +3154,8 @@ "resolved": "https://registry.npmjs.org/@trezor/schema-utils/-/schema-utils-1.3.0.tgz", "integrity": "sha512-/emJCZcONgKVp3fgh5RB2pge73lIZYnvLnx8ik+lBwaH/XX/kfF1vNC2aSjeqg/i9JmaKC5waDd33PxCjxjECg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@sinclair/typebox": "^0.33.7", "ts-mixer": "^6.0.3" @@ -2923,6 +3169,8 @@ "resolved": "https://registry.npmjs.org/@trezor/transport/-/transport-1.4.0.tgz", "integrity": "sha512-OfeowwZj9BCxr+t+lFM532F9VeJ4FbbkjGjVwDh9qnyP1cg7ddbefKotzewro5nIjmgGLu47gvjwHvhncKiSXw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@trezor/protobuf": "1.3.0", "@trezor/protocol": "1.2.2", @@ -2940,13 +3188,17 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/@trezor/type-utils/-/type-utils-1.1.4.tgz", "integrity": "sha512-pzrIdskmTZRocHellMZxCDPQ3IpmTr749qn1xdIN29pIKuI4ms0OfNUPk/rfR4Iug0kEiWt+n+Hw7+lIBzc2LA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@trezor/utils": { "version": "9.3.0", "resolved": "https://registry.npmjs.org/@trezor/utils/-/utils-9.3.0.tgz", "integrity": "sha512-u3b3uYPnSW3IH8nY1Pic4L7q8QF4rjY5Aikm+zZF1vC+b2W3J8kvyL9e9f0D2OPvtC9UPPRUW7ZGQZ35eTDsKA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "bignumber.js": "^9.1.2" }, @@ -2959,6 +3211,8 @@ "resolved": "https://registry.npmjs.org/@trezor/utxo-lib/-/utxo-lib-2.3.0.tgz", "integrity": "sha512-YvMdvOvX0v1KSzUelz8TfZDo/6hTR4GvIRKCiq2rIT1XmxeZiP8FYuOUcAL7YqL8tdKTPiMXzw2k9LSsdhvOrQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@trezor/utils": "9.3.0", "bchaddrjs": "^0.5.2", @@ -2987,6 +3241,8 @@ "resolved": "https://registry.npmjs.org/@trezor/websocket-client/-/websocket-client-1.1.0.tgz", "integrity": "sha512-7KD1Ive8jMcGpdTAHmV1FPCFUjqYiV/2kGJHBqoLXx4kkvkMU9n9++WieD2W7YVDM3uXuIoRvGYRnZDjcFuEdw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@trezor/utils": "9.3.0", "ws": "^8.18.0" @@ -3049,20 +3305,13 @@ "typechain": "^8.3.2" } }, - "node_modules/@types/bn.js": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.6.tgz", - "integrity": "sha512-Xh8vSwUeMKeYYrj3cX4lGQgFSF/N03r+tv4AiLl1SucqV+uTQpxRcnM8AkXKHwYP9ZPXOYXRr2KPXpVlIvqh9w==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/connect": { "version": "3.4.38", "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@types/node": "*" } @@ -3071,13 +3320,9 @@ "version": "4.17.16", "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.16.tgz", "integrity": "sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==", - "dev": true - }, - "node_modules/@types/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@types/node": { "version": "22.14.1", @@ -3098,25 +3343,33 @@ "version": "8.3.4", "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@types/w3c-web-usb": { "version": "1.0.10", "resolved": "https://registry.npmjs.org/@types/w3c-web-usb/-/w3c-web-usb-1.0.10.tgz", "integrity": "sha512-CHgUI5kTc/QLMP8hODUHhge0D4vx+9UiAwIGiT0sTy/B2XpdX1U5rJt6JSISgr6ikRT7vxV9EVAFeYZqUnl1gQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@types/web": { "version": "0.0.197", "resolved": "https://registry.npmjs.org/@types/web/-/web-0.0.197.tgz", "integrity": "sha512-V4sOroWDADFx9dLodWpKm298NOJ1VJ6zoDVgaP+WBb/utWxqQ6gnMzd9lvVDAr/F3ibiKaxH9i45eS0gQPSTaQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/@types/ws": { "version": "7.4.7", "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@types/node": "*" } @@ -3198,6 +3451,8 @@ "resolved": "https://registry.npmjs.org/abitype/-/abitype-0.7.1.tgz", "integrity": "sha512-VBkRHTDZf9Myaek/dO3yMmOzB/y2s3Zo6nVU7yaw1G+TvCHAjwaJzNGN9yo4K5D8bU/VZXKP1EJpRhFr862PlQ==", "dev": true, + "optional": true, + "peer": true, "peerDependencies": { "typescript": ">=4.9.4", "zod": "^3 >=3.19.1" @@ -3264,6 +3519,8 @@ "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.6.0.tgz", "integrity": "sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "humanize-ms": "^1.2.1" }, @@ -3289,6 +3546,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", @@ -3409,6 +3667,8 @@ "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "call-bind": "^1.0.2", "is-nan": "^1.3.2", @@ -3422,6 +3682,7 @@ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -3431,7 +3692,8 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/at-least-node": { "version": "1.0.0", @@ -3447,6 +3709,8 @@ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -3458,10 +3722,11 @@ } }, "node_modules/axios": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", - "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", + "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", "dev": true, + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -3478,7 +3743,9 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/base-x/-/base-x-5.0.1.tgz", "integrity": "sha512-M7uio8Zt++eg3jPj+rHMfCC+IuygQHHCOU+IYsVtik6FWjuYpVt/+MRKcgsAMHh8mMFAwnB+Bs+mTrFiXjMzKg==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/base64-js": { "version": "1.5.1", @@ -3510,6 +3777,8 @@ "resolved": "https://registry.npmjs.org/bchaddrjs/-/bchaddrjs-0.5.2.tgz", "integrity": "sha512-OO7gIn3m7ea4FVx4cT8gdlWQR2+++EquhdpWQJH9BQjK63tJJ6ngB3QMZDO6DiBoXiIGUsTPHjlrHVxPGcGxLQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "bs58check": "2.1.2", "buffer": "^6.0.3", @@ -3525,6 +3794,8 @@ "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "safe-buffer": "^5.0.1" } @@ -3534,6 +3805,8 @@ "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "base-x": "^3.0.2" } @@ -3543,6 +3816,8 @@ "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "bs58": "^4.0.0", "create-hash": "^1.1.0", @@ -3553,13 +3828,17 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/bech32/-/bech32-2.0.0.tgz", "integrity": "sha512-LcknSilhIGatDAsY1ak2I8VtGaHNhgMSYVxFrGLXv+xLHytaKZKcaUJJUE7qmBr7h33o5YQwP55pMI0xmkpJwg==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/big-integer": { "version": "1.6.36", "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.36.tgz", "integrity": "sha512-t70bfa7HYEA1D9idDbmuv7YbsbVkQ+Hp+8KFSul4aE5e/i1bjCNIRYJZlA8Q8p0r9T8cF/RVvwUgRA//FydEyg==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.6" } @@ -3570,6 +3849,8 @@ "integrity": "sha512-trfYco6AoZ+rKhKnxA0hgX0HAbVP/s808/EuDSe2JDzUnCp/xAsli35Orvk67UrTEcwuxZqYZDmfA2RXJgxVvA==", "dev": true, "hasInstallScript": true, + "optional": true, + "peer": true, "dependencies": { "bindings": "^1.3.0" }, @@ -3582,6 +3863,8 @@ "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": "*" } @@ -3603,6 +3886,8 @@ "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "file-uri-to-path": "1.0.0" } @@ -3611,13 +3896,17 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/bip66/-/bip66-2.0.0.tgz", "integrity": "sha512-kBG+hSpgvZBrkIm9dt5T1Hd/7xGCPEX2npoxAWZfsK1FvjgaxySEh2WizjyIstWXriKo9K9uJ4u0OnsyLDUPXQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/bitcoin-ops": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/bitcoin-ops/-/bitcoin-ops-1.4.1.tgz", "integrity": "sha512-pef6gxZFztEhaE9RY9HmWVmiIHqCb2OyS4HPKkpc6CIiiOa3Qmuoylxc5P2EkU3w+5eTSifI9SEZC88idAIGow==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/bl": { "version": "4.1.0", @@ -3660,6 +3949,8 @@ "integrity": "sha512-Igj8YowDu1PRkRsxZA7NVkdFNxH5rKv5cpLxQ0CVXSIA77pVYwCPRQJ2sMew/oneUpfuYRyjG6r8SmmmnbZb1w==", "dev": true, "hasInstallScript": true, + "optional": true, + "peer": true, "dependencies": { "node-addon-api": "^3.0.0", "node-gyp-build": "^4.2.2", @@ -3673,7 +3964,9 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/bn.js": { "version": "5.2.1", @@ -3686,6 +3979,8 @@ "resolved": "https://registry.npmjs.org/borsh/-/borsh-0.7.0.tgz", "integrity": "sha512-CLCsZGIBCFnPtkNnieW/a8wmreDmfUtjU2m9yHrzPXIlNbqVs0AQrSatSG6vdNYUqdc83tkQi2eHfF98ubzQLA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "bn.js": "^5.2.0", "bs58": "^4.0.0", @@ -3697,6 +3992,8 @@ "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "safe-buffer": "^5.0.1" } @@ -3706,6 +4003,8 @@ "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "base-x": "^3.0.2" } @@ -3824,6 +4123,7 @@ "url": "https://github.com/sponsors/ai" } ], + "optional": true, "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001688", @@ -3843,6 +4143,8 @@ "resolved": "https://registry.npmjs.org/bs58/-/bs58-6.0.0.tgz", "integrity": "sha512-PD0wEnEYg6ijszw/u8s+iI3H17cTymlrwkKhDhPZq+Sokl3AU4htyBFTjAeNAlCCmg0f53g6ih3jATyCKftTfw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "base-x": "^5.0.0" } @@ -3852,6 +4154,8 @@ "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-4.0.0.tgz", "integrity": "sha512-FsGDOnFg9aVI9erdriULkd/JjEWONV/lQE5aYziB5PoBsXRind56lh8doIZIc9X4HoxT5x4bLjMWN1/NB8Zp5g==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@noble/hashes": "^1.2.0", "bs58": "^6.0.0" @@ -3876,6 +4180,8 @@ "url": "https://feross.org/support" } ], + "optional": true, + "peer": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -3894,6 +4200,7 @@ "dev": true, "hasInstallScript": true, "optional": true, + "peer": true, "dependencies": { "node-gyp-build": "^4.3.0" }, @@ -3915,6 +4222,8 @@ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", @@ -3946,6 +4255,8 @@ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "call-bind-apply-helpers": "^1.0.2", "get-intrinsic": "^1.3.0" @@ -3988,6 +4299,7 @@ "url": "https://github.com/sponsors/ai" } ], + "optional": true, "peer": true }, "node_modules/cashaddrjs": { @@ -3995,6 +4307,8 @@ "resolved": "https://registry.npmjs.org/cashaddrjs/-/cashaddrjs-0.4.4.tgz", "integrity": "sha512-xZkuWdNOh0uq/mxJIng6vYWfTowZLd9F4GMAlp2DwFHlcCqCm91NtuAc47RuV4L7r4PYcY5p6Cr2OKNb4hnkWA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "big-integer": "1.6.36" } @@ -4004,6 +4318,7 @@ "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "nofilter": "^3.1.0" @@ -4017,6 +4332,8 @@ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -4050,6 +4367,8 @@ "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.6.tgz", "integrity": "sha512-3Ek9H3X6pj5TgenXYtNWdaBon1tgYCaebd+XPg0keyjEbEfkD4KkmAxkQ/i1vYvxdcT5nscLBfq9VJRmCBcFSw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "inherits": "^2.0.4", "safe-buffer": "^5.2.1" @@ -4146,6 +4465,7 @@ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dev": true, + "license": "MIT", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -4283,6 +4603,8 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=18" } @@ -4298,6 +4620,7 @@ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, + "optional": true, "peer": true }, "node_modules/cookie": { @@ -4314,6 +4637,8 @@ "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", "dev": true, + "optional": true, + "peer": true, "bin": { "crc32": "bin/crc32.njs" }, @@ -4326,6 +4651,8 @@ "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "cipher-base": "^1.0.1", "inherits": "^2.0.1", @@ -4339,6 +4666,8 @@ "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "cipher-base": "^1.0.3", "create-hash": "^1.1.0", @@ -4359,6 +4688,8 @@ "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "node-fetch": "^2.7.0" } @@ -4396,7 +4727,9 @@ "version": "10.5.0", "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/deep-extend": { "version": "0.6.0", @@ -4424,6 +4757,8 @@ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "es-define-property": "^1.0.0", "es-errors": "^1.3.0", @@ -4441,6 +4776,8 @@ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -4458,6 +4795,8 @@ "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=10" }, @@ -4470,6 +4809,7 @@ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.4.0" } @@ -4511,6 +4851,7 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.140.tgz", "integrity": "sha512-o82Rj+ONp4Ip7Cl1r7lrqx/pXhbp/lh9DpKcMNscFJdh8ebyRofnc7Sh01B4jx403RI0oqTBvlZ7OBIZLMr2+Q==", "dev": true, + "optional": true, "peer": true }, "node_modules/elliptic": { @@ -4597,6 +4938,7 @@ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", @@ -4611,13 +4953,17 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/es6-promisify": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", "integrity": "sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "es6-promise": "^4.0.3" } @@ -4694,6 +5040,8 @@ "resolved": "https://registry.npmjs.org/ethereum-multicall/-/ethereum-multicall-2.26.0.tgz", "integrity": "sha512-7PslfFiHPUrA0zQpMgZdftUBNyVWuHVBwnRtDOr6Eam8O/OwucqP+OHZZDE7qdrWzi4Jrji8IMw2ZUFv/wbs8Q==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@ethersproject/providers": "^5.0.10", "ethers": "^5.0.15" @@ -4714,6 +5062,8 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "optional": true, + "peer": true, "dependencies": { "@ethersproject/abi": "5.8.0", "@ethersproject/abstract-provider": "5.8.0", @@ -4748,9 +5098,9 @@ } }, "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==", + "version": "6.13.7", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.13.7.tgz", + "integrity": "sha512-qbaJ0uIrjh+huP1Lad2f2QtzW5dcqSVjIzVH6yWB4dKoMuj2WqYz5aMeeQTCNpAKgTJBM5J9vcc2cYJ23UAimQ==", "dev": true, "funding": [ { @@ -4762,6 +5112,7 @@ "url": "https://www.buymeacoffee.com/ricmoo" } ], + "license": "MIT", "dependencies": { "@adraffy/ens-normalize": "1.10.1", "@noble/curves": "1.2.0", @@ -4845,13 +5196,17 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/events": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.8.x" } @@ -4861,6 +5216,8 @@ "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": "> 0.1.90" } @@ -4870,13 +5227,16 @@ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/fast-stable-stringify": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fast-stable-stringify/-/fast-stable-stringify-1.0.0.tgz", "integrity": "sha512-wpYMUmFu5f00Sm0cj2pfivpmawLZ0NKdviQ4w9zJeR8JVtOpOxHmLaJuj0vxvGqMJQWyP/COUkF75/57OKyRag==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/fast-uri": { "version": "3.0.6", @@ -4893,6 +5253,7 @@ "url": "https://opencollective.com/fastify" } ], + "license": "BSD-3-Clause", "peer": true }, "node_modules/fastestsmallesttextencoderdecoder": { @@ -4900,6 +5261,7 @@ "resolved": "https://registry.npmjs.org/fastestsmallesttextencoderdecoder/-/fastestsmallesttextencoderdecoder-1.0.22.tgz", "integrity": "sha512-Pb8d48e+oIuY4MaM64Cd7OW1gt4nxCHs7/ddPPZ/Ic3sg8yVGM7O9wDvZ7us6ScaUupzM+pfBolwtYhN1IxBIw==", "dev": true, + "optional": true, "peer": true }, "node_modules/fdir": { @@ -4920,7 +5282,9 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/fill-range": { "version": "7.1.1", @@ -4996,6 +5360,8 @@ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "is-callable": "^1.2.7" }, @@ -5007,14 +5373,16 @@ } }, "node_modules/form-data": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", - "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "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, + "license": "MIT", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", "mime-types": "^2.1.12" }, "engines": { @@ -5076,6 +5444,7 @@ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, + "optional": true, "peer": true, "engines": { "node": ">=6.9.0" @@ -5164,6 +5533,8 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=4" } @@ -5187,18 +5558,17 @@ "dev": true }, "node_modules/hardhat": { - "version": "2.23.0", - "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.23.0.tgz", - "integrity": "sha512-xnORx1LgX46TxylOFme96JmSAIjXuHUVpOlUnaCt8MKMGsgy0NGsfPo5rJI/ncCBPLFLURGfZUQ2Uc6ZYN4kYg==", + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.26.1.tgz", + "integrity": "sha512-CXWuUaTtehxiHPCdlitntctfeYRgujmXkNX5gnrD5jdA6HhRQt+WWBZE/gHXbE29y/wDmmUL2d652rI0ctjqjw==", "dev": true, + "license": "MIT", "dependencies": { "@ethereumjs/util": "^9.1.0", "@ethersproject/abi": "^5.1.2", - "@nomicfoundation/edr": "^0.10.0", + "@nomicfoundation/edr": "^0.11.3", "@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", @@ -5383,6 +5753,8 @@ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "es-define-property": "^1.0.0" }, @@ -5422,6 +5794,8 @@ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "inherits": "^2.0.4", "readable-stream": "^3.6.0", @@ -5507,6 +5881,8 @@ "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "ms": "^2.0.0" } @@ -5562,7 +5938,8 @@ "version": "1.1.14", "resolved": "https://registry.npmjs.org/indento/-/indento-1.1.14.tgz", "integrity": "sha512-K4cK97v4M/ucCAbe3LUpg994folYL0WnEiCFxHXAIowKLbBb/Ahiazkz3Ao5gRar4i9pDr3imcpq4suOu0FbNw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/inflight": { "version": "1.0.6", @@ -5585,7 +5962,9 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/int64-buffer/-/int64-buffer-1.1.0.tgz", "integrity": "sha512-94smTCQOvigN4d/2R/YDjz8YVG0Sufvv2aAh8P5m42gwhCsDAJqnbNOrxJsrADuAFAA69Q/ptGzxvNcNuIJcvw==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/io-ts": { "version": "1.10.4", @@ -5601,6 +5980,8 @@ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "jsbn": "1.1.0", "sprintf-js": "^1.1.3" @@ -5614,6 +5995,8 @@ "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "call-bound": "^1.0.2", "has-tostringtag": "^1.0.2" @@ -5642,6 +6025,8 @@ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">= 0.4" }, @@ -5672,6 +6057,8 @@ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "call-bound": "^1.0.3", "get-proto": "^1.0.0", @@ -5711,6 +6098,8 @@ "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "call-bind": "^1.0.0", "define-properties": "^1.1.3" @@ -5745,6 +6134,8 @@ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "call-bound": "^1.0.2", "gopd": "^1.2.0", @@ -5763,6 +6154,8 @@ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "which-typed-array": "^1.1.16" }, @@ -5790,6 +6183,8 @@ "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", "dev": true, + "optional": true, + "peer": true, "peerDependencies": { "ws": "*" } @@ -5799,6 +6194,8 @@ "resolved": "https://registry.npmjs.org/jayson/-/jayson-4.2.0.tgz", "integrity": "sha512-VfJ9t1YLwacIubLhONk0KFeosUBwstRWQ0IRT1KDjEjnVnSOVHC3uwugyV7L0c7R9lpVyrUGT2XWiBA1UTtpyg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@types/connect": "^3.4.33", "@types/node": "^12.12.54", @@ -5824,19 +6221,25 @@ "version": "12.20.55", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/jayson/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/jayson/node_modules/isomorphic-ws": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-4.0.1.tgz", "integrity": "sha512-BhBvN2MBpWTaSHdWRb/bwdZJ1WaehQ2L1KngkCkfLUGF0mAWAT1sQUQacEmQ0jXkFw/czDXPNQSL5u2/Krsz1w==", "dev": true, + "optional": true, + "peer": true, "peerDependencies": { "ws": "*" } @@ -5846,6 +6249,8 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=8.3.0" }, @@ -5872,7 +6277,9 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/js-yaml": { "version": "4.1.0", @@ -5890,13 +6297,17 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/jsesc": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, + "optional": true, + "peer": true, "bin": { "jsesc": "bin/jsesc" }, @@ -5909,6 +6320,7 @@ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/json-stream-stringify": { @@ -5924,13 +6336,16 @@ "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 + "dev": true, + "optional": true, + "peer": true }, "node_modules/json2md": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/json2md/-/json2md-2.0.2.tgz", - "integrity": "sha512-bPXMyPSZRsN2Xh5tNWA4RjREnYmDK2GFO8eYOTbHSfVPfrFaqzIqFWN3gdf1bya65cm9Mf2PBSwvM7sWGEeuVA==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/json2md/-/json2md-2.0.3.tgz", + "integrity": "sha512-ZPzh6Djvqz8grJMxKllfCHo0p+p7BsbZ1J95KcCJgvvfdoy7myuKrrkUp80Kpy+wGauykC0dYljLqLY0kENaOw==", "dev": true, + "license": "MIT", "dependencies": { "indento": "^1.1.13" } @@ -5964,6 +6379,8 @@ "resolved": "https://registry.npmjs.org/jsonschema/-/jsonschema-1.2.2.tgz", "integrity": "sha512-iX5OFQ6yx9NgbHCwse51ohhKgLuLL7Z5cNOeZOPIlDUtAMrxlruHLzVZxbltdHE5mEDXN+75oFOwq6Gn0MZwsA==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": "*" } @@ -6021,6 +6438,7 @@ "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/lodash.isequal": { @@ -6035,6 +6453,7 @@ "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/log-symbols": { @@ -6085,7 +6504,9 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/lru_map": { "version": "0.3.3", @@ -6098,6 +6519,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, + "optional": true, "peer": true, "dependencies": { "yallist": "^3.0.2" @@ -6123,6 +6545,8 @@ "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1", @@ -6193,6 +6617,7 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.6" } @@ -6202,6 +6627,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, + "license": "MIT", "dependencies": { "mime-db": "1.52.0" }, @@ -6365,19 +6791,25 @@ "version": "2.22.2", "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz", "integrity": "sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/node-addon-api": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "whatwg-url": "^5.0.0" }, @@ -6409,6 +6841,7 @@ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true, + "optional": true, "peer": true }, "node_modules/nofilter": { @@ -6416,6 +6849,7 @@ "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">=12.19" @@ -6435,6 +6869,8 @@ "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1" @@ -6451,6 +6887,8 @@ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">= 0.4" } @@ -6460,6 +6898,8 @@ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "call-bind": "^1.0.8", "call-bound": "^1.0.3", @@ -6657,6 +7097,8 @@ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">= 0.4" } @@ -6710,6 +7152,8 @@ "integrity": "sha512-mRUWCc3KUU4w1jU8sGxICXH/gNS94DvI1gxqDvBzhj1JpcsimQkYiOJfwsPUykUI5ZaspFbSgmBLER8IrQ3tqw==", "dev": true, "hasInstallScript": true, + "optional": true, + "peer": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -6732,19 +7176,24 @@ "version": "5.3.2", "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "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 + "dev": true, + "license": "MIT" }, "node_modules/pushdata-bitcoin": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/pushdata-bitcoin/-/pushdata-bitcoin-1.0.1.tgz", "integrity": "sha512-hw7rcYTJRAl4olM8Owe8x0fBuJJ+WGbMhQuLWOXEMN3PxPCKQHRkhfL+XG0+iXUmSHjkMmb3Ba55Mt21cZc9kQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "bitcoin-ops": "^1.3.0" } @@ -6813,7 +7262,9 @@ "version": "0.14.1", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/require-directory": { "version": "2.1.1", @@ -6829,6 +7280,7 @@ "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, + "license": "MIT", "peer": true, "engines": { "node": ">=0.10.0" @@ -6864,6 +7316,8 @@ "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "hash-base": "^3.0.0", "inherits": "^2.0.1" @@ -6874,6 +7328,8 @@ "resolved": "https://registry.npmjs.org/ripple-address-codec/-/ripple-address-codec-4.3.1.tgz", "integrity": "sha512-Qa3+9wKVvpL/xYtT6+wANsn0A1QcC5CT6IMZbRJZ/1lGt7gmwIfsrCuz1X0+LCEO7zgb+3UT1I1dc0k/5dwKQQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "base-x": "^3.0.9", "create-hash": "^1.1.2" @@ -6887,6 +7343,8 @@ "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.11.tgz", "integrity": "sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "safe-buffer": "^5.0.1" } @@ -6896,6 +7354,8 @@ "resolved": "https://registry.npmjs.org/ripple-binary-codec/-/ripple-binary-codec-1.11.0.tgz", "integrity": "sha512-g7+gs3T+NfoeW6vIq5dcN0CkIT4t/zwRzFxz8X2RzfbrWRnewPUKqQbmBgs05tXLX5NuWPaneiaAVpFpYBcdfw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "assert": "^2.0.0", "big-integer": "^1.6.48", @@ -6913,6 +7373,8 @@ "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=0.6" } @@ -6922,6 +7384,8 @@ "resolved": "https://registry.npmjs.org/ripple-keypairs/-/ripple-keypairs-1.3.1.tgz", "integrity": "sha512-dmPlraWKJciFJxHcoubDahGnoIalG5e/BtV6HNDUs7wLXmtnLMHt6w4ed9R8MTL2zNrVPiIdI/HCtMMo0Tm7JQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "bn.js": "^5.1.1", "brorand": "^1.0.5", @@ -6939,6 +7403,8 @@ "integrity": "sha512-OQk+Syl2JfxKxV2KuF/kBMtnh012I5tNnziP3G4WDGCGSIAgeqkOgkR59IQ0YDNrs1YW8GbApxrdMSRi/QClcA==", "deprecated": "ripple-lib is deprecated. Please migrate to xrpl.js using this migration guide: https://xrpl.org/xrpljs2-migration-guide.html", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@types/lodash": "^4.14.136", "@types/ws": "^7.2.0", @@ -6962,6 +7428,8 @@ "resolved": "https://registry.npmjs.org/ripple-lib-transactionparser/-/ripple-lib-transactionparser-0.8.2.tgz", "integrity": "sha512-1teosQLjYHLyOQrKUQfYyMjDR3MAq/Ga+MJuLUfpBMypl4LZB4bEoMcmG99/+WVTEiZOezJmH9iCSvm/MyxD+g==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "bignumber.js": "^9.0.0", "lodash": "^4.17.15" @@ -6972,6 +7440,8 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=8.3.0" }, @@ -6993,6 +7463,8 @@ "resolved": "https://registry.npmjs.org/rpc-websockets/-/rpc-websockets-9.1.1.tgz", "integrity": "sha512-1IXGM/TfPT6nfYMIXkJdzn+L4JEsmb0FL1O2OBjaH03V3yuUDdKFulGLMFG6ErV+8pZ5HVC0limve01RyO+saA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@swc/helpers": "^0.5.11", "@types/uuid": "^8.3.4", @@ -7016,6 +7488,8 @@ "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@types/node": "*" } @@ -7045,6 +7519,8 @@ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "call-bound": "^1.0.2", "es-errors": "^1.3.0", @@ -7067,7 +7543,9 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/semver": { "version": "6.3.1", @@ -7092,6 +7570,8 @@ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -7108,7 +7588,9 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/setprototypeof": { "version": "1.2.0", @@ -7121,6 +7603,8 @@ "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -7140,6 +7624,7 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "ansi-styles": "^4.0.0", @@ -7158,6 +7643,8 @@ "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -7168,6 +7655,8 @@ "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" @@ -7182,6 +7671,8 @@ "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "agent-base": "^7.1.1", "debug": "^4.3.4", @@ -7196,6 +7687,8 @@ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">= 14" } @@ -7262,7 +7755,9 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/stacktrace-parser": { "version": "0.1.11", @@ -7299,6 +7794,8 @@ "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "inherits": "~2.0.4", "readable-stream": "^3.5.0" @@ -7308,13 +7805,17 @@ "version": "2.2.5", "resolved": "https://registry.npmjs.org/stream-chain/-/stream-chain-2.2.5.tgz", "integrity": "sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/stream-json": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/stream-json/-/stream-json-1.9.1.tgz", "integrity": "sha512-uWkjJ+2Nt/LO9Z/JyKZbMusL8Dkh97uUBTv3AJQ74y07lVahLY4eEFsPsE97pxYBwr8nnjMAIch5eqI0gPShyw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "stream-chain": "^2.2.5" } @@ -7386,6 +7887,8 @@ "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-2.0.2.tgz", "integrity": "sha512-uV+TFRZdXsqXTL2pRvujROjdZQ4RAlBUS5BTh9IGm+jTqQntYThciG/qu57Gs69yjnVUSqdxF9YLmSnpupBW9A==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=14.0.0" } @@ -7410,6 +7913,7 @@ "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", "dev": true, + "license": "BSD-3-Clause", "peer": true, "dependencies": { "ajv": "^8.0.1", @@ -7459,7 +7963,9 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/text-encoding-utf-8/-/text-encoding-utf-8-1.0.2.tgz", "integrity": "sha512-8bw4MY9WjdsD2aMtO0OzOCY3pXGYNx2d2FfHRVUKkiCPDWjKuOlhLVASS+pD7VkLTVjW268LYJHwsnPFlBpbAg==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/tiny-secp256k1": { "version": "1.1.7", @@ -7467,6 +7973,8 @@ "integrity": "sha512-eb+F6NabSnjbLwNoC+2o5ItbmP1kg7HliWue71JgLegQt6A5mTN8YbvTLCazdlg6e5SV6A+r8OGvZYskdlmhqQ==", "dev": true, "hasInstallScript": true, + "optional": true, + "peer": true, "dependencies": { "bindings": "^1.3.0", "bn.js": "^4.11.8", @@ -7482,7 +7990,9 @@ "version": "4.12.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.1.tgz", "integrity": "sha512-k8TVBiPkPJT9uHLdOKfFpqcfprwBFOAAXXozRubr7R7PfIuKvQlzcI4M0pALeqXN09vdaMbUdUj+pass+uULAg==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/tinyglobby": { "version": "0.2.13", @@ -7537,7 +8047,9 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/ts-command-line-args": { "version": "2.5.1", @@ -7595,7 +8107,9 @@ "version": "6.0.4", "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz", "integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/ts-node": { "version": "10.9.2", @@ -7667,7 +8181,9 @@ "version": "2.8.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/tsort": { "version": "0.0.1", @@ -7805,7 +8321,9 @@ "version": "1.18.0", "resolved": "https://registry.npmjs.org/typeforce/-/typeforce-1.18.0.tgz", "integrity": "sha512-7uc1O8h1M1g0rArakJdf0uLRSSgFcYexrVoKo+bzJd32gd4gDy2L/Z+8/FjPnU9ydY3pEnVPtr9FyscYY60K1g==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/typescript": { "version": "5.8.3", @@ -7848,6 +8366,8 @@ "url": "https://github.com/sponsors/faisalman" } ], + "optional": true, + "peer": true, "bin": { "ua-parser-js": "script/cli.js" }, @@ -7860,6 +8380,8 @@ "resolved": "https://registry.npmjs.org/uint8array-tools/-/uint8array-tools-0.0.8.tgz", "integrity": "sha512-xS6+s8e0Xbx++5/0L+yyexukU7pz//Yg6IHg3BKhXotg1JcYtgxVcUctQ0HxLByiJzpAkNFawz1Nz5Xadzo82g==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=14.0.0" } @@ -7919,6 +8441,7 @@ "url": "https://github.com/sponsors/ai" } ], + "optional": true, "peer": true, "dependencies": { "escalade": "^3.2.0", @@ -7937,6 +8460,8 @@ "integrity": "sha512-BA9r7PFxyYp99wps1N70lIqdPb2Utcl2KkWohDtWUmhDBeM5hDH1Zl/L/CZvWxd5W3RUCNm1g+b+DEKZ6cHzqg==", "dev": true, "hasInstallScript": true, + "optional": true, + "peer": true, "dependencies": { "@types/w3c-web-usb": "^1.0.6", "node-addon-api": "^8.0.0", @@ -7951,6 +8476,8 @@ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-8.3.1.tgz", "integrity": "sha512-lytcDEdxKjGJPTLEfW4mYMigRezMlyJY8W4wxJK8zE533Jlb8L8dRuObJFWg2P+AuOIxoCgKF+2Oq4d4Zd0OUA==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": "^18 || ^20 || >= 21" } @@ -7962,6 +8489,7 @@ "dev": true, "hasInstallScript": true, "optional": true, + "peer": true, "dependencies": { "node-gyp-build": "^4.3.0" }, @@ -7974,6 +8502,8 @@ "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -8008,6 +8538,8 @@ "resolved": "https://registry.npmjs.org/varuint-bitcoin/-/varuint-bitcoin-2.0.0.tgz", "integrity": "sha512-6QZbU/rHO2ZQYpWFDALCDSRsXbAs1VOEmXAxtbtjLtKuMJ/FQ8YbhfxlaiKv5nklci0M6lZtlZyxo9Q+qNnyog==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "uint8array-tools": "^0.0.8" } @@ -8026,6 +8558,8 @@ "resolved": "https://registry.npmjs.org/web3/-/web3-4.16.0.tgz", "integrity": "sha512-SgoMSBo6EsJ5GFCGar2E/pR2lcR/xmUSuQ61iK6yDqzxmm42aPPxSqZfJz2z/UCR6pk03u77pU8TGV6lgMDdIQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "web3-core": "^4.7.1", "web3-errors": "^1.3.1", @@ -8055,6 +8589,8 @@ "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-4.7.1.tgz", "integrity": "sha512-9KSeASCb/y6BG7rwhgtYC4CvYY66JfkmGNEYb7q1xgjt9BWfkf09MJPaRyoyT5trdOxYDHkT9tDlypvQWaU8UQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "web3-errors": "^1.3.1", "web3-eth-accounts": "^4.3.1", @@ -8078,6 +8614,8 @@ "resolved": "https://registry.npmjs.org/web3-errors/-/web3-errors-1.3.1.tgz", "integrity": "sha512-w3NMJujH+ZSW4ltIZZKtdbkbyQEvBzyp3JRn59Ckli0Nz4VMsVq8aF1bLWM7A2kuQ+yVEm3ySeNU+7mSRwx7RQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "web3-types": "^1.10.0" }, @@ -8091,6 +8629,8 @@ "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-4.11.1.tgz", "integrity": "sha512-q9zOkzHnbLv44mwgLjLXuyqszHuUgZWsQayD2i/rus2uk0G7hMn11bE2Q3hOVnJS4ws4VCtUznlMxwKQ+38V2w==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "setimmediate": "^1.0.5", "web3-core": "^4.7.1", @@ -8114,6 +8654,8 @@ "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-4.4.1.tgz", "integrity": "sha512-60ecEkF6kQ9zAfbTY04Nc9q4eEYM0++BySpGi8wZ2PD1tw/c0SDvsKhV6IKURxLJhsDlb08dATc3iD6IbtWJmg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "abitype": "0.7.1", "web3-errors": "^1.3.1", @@ -8131,6 +8673,8 @@ "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-4.3.1.tgz", "integrity": "sha512-rTXf+H9OKze6lxi7WMMOF1/2cZvJb2AOnbNQxPhBDssKOllAMzLhg1FbZ4Mf3lWecWfN6luWgRhaeSqO1l+IBQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@ethereumjs/rlp": "^4.0.1", "crc-32": "^1.2.2", @@ -8150,6 +8694,8 @@ "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", "dev": true, + "optional": true, + "peer": true, "bin": { "rlp": "bin/rlp" }, @@ -8162,6 +8708,8 @@ "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-4.7.2.tgz", "integrity": "sha512-3ETqs2pMNPEAc7BVY/C3voOhTUeJdkf2aM3X1v+edbngJLHAxbvxKpOqrcO0cjXzC4uc2Q8Zpf8n8zT5r0eLnA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@ethereumjs/rlp": "^5.0.2", "web3-core": "^4.7.1", @@ -8182,6 +8730,8 @@ "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-4.4.0.tgz", "integrity": "sha512-DeyVIS060hNV9g8dnTx92syqvgbvPricE3MerCxe/DquNZT3tD8aVgFfq65GATtpCgDDJffO2bVeHp3XBemnSQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@adraffy/ens-normalize": "^1.8.8", "web3-core": "^4.5.0", @@ -8203,6 +8753,8 @@ "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-4.0.7.tgz", "integrity": "sha512-8weKLa9KuKRzibC87vNLdkinpUE30gn0IGY027F8doeJdcPUfsa4IlBgNC4k4HLBembBB2CTU0Kr/HAOqMeYVQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "web3-errors": "^1.1.3", "web3-types": "^1.3.0", @@ -8219,6 +8771,8 @@ "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-4.1.0.tgz", "integrity": "sha512-RFN83uMuvA5cu1zIwwJh9A/bAj0OBxmGN3tgx19OD/9ygeUZbifOL06jgFzN0t+1ekHqm3DXYQM8UfHpXi7yDQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "web3-core": "^4.6.0", "web3-eth": "^4.9.0", @@ -8237,6 +8791,8 @@ "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-4.1.0.tgz", "integrity": "sha512-WWmfvHVIXWEoBDWdgKNYKN8rAy6SgluZ0abyRyXOL3ESr7ym7pKWbfP4fjApIHlYTh8tNqkrdPfM4Dyi6CA0SA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "web3-core": "^4.4.0", "web3-rpc-methods": "^1.3.0", @@ -8253,6 +8809,8 @@ "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-4.2.0.tgz", "integrity": "sha512-IPMnDtHB7dVwaB7/mMxAZzyq7d5ezfO1+Vw0bNfAeIi7gaDlJiggp85SdyAfOgov8AMUA/dyiY72kQ0KmjXKvQ==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "cross-fetch": "^4.0.0", "web3-errors": "^1.3.0", @@ -8270,6 +8828,7 @@ "integrity": "sha512-YbNqY4zUvIaK2MHr1lQFE53/8t/ejHtJchrWn9zVbFMGXlTsOAbNoIoZWROrg1v+hCBvT2c9z8xt7e/+uz5p1g==", "dev": true, "optional": true, + "peer": true, "dependencies": { "web3-errors": "^1.1.3", "web3-types": "^1.3.0", @@ -8285,6 +8844,8 @@ "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-4.0.8.tgz", "integrity": "sha512-goJdgata7v4pyzHRsg9fSegUG4gVnHZSHODhNnn6J93ykHkBI1nz4fjlGpcQLUMi4jAMz6SHl9Ibzs2jj9xqPw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@types/ws": "8.5.3", "isomorphic-ws": "^5.0.0", @@ -8303,6 +8864,8 @@ "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "@types/node": "*" } @@ -8312,6 +8875,8 @@ "resolved": "https://registry.npmjs.org/web3-rpc-methods/-/web3-rpc-methods-1.3.0.tgz", "integrity": "sha512-/CHmzGN+IYgdBOme7PdqzF+FNeMleefzqs0LVOduncSaqsppeOEoskLXb2anSpzmQAP3xZJPaTrkQPWSJMORig==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "web3-core": "^4.4.0", "web3-types": "^1.6.0", @@ -8327,6 +8892,8 @@ "resolved": "https://registry.npmjs.org/web3-rpc-providers/-/web3-rpc-providers-1.0.0-rc.4.tgz", "integrity": "sha512-PXosCqHW0EADrYzgmueNHP3Y5jcSmSwH+Dkqvn7EYD0T2jcsdDAIHqk6szBiwIdhumM7gv9Raprsu/s/f7h1fw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "web3-errors": "^1.3.1", "web3-providers-http": "^4.2.0", @@ -8345,6 +8912,8 @@ "resolved": "https://registry.npmjs.org/web3-types/-/web3-types-1.10.0.tgz", "integrity": "sha512-0IXoaAFtFc8Yin7cCdQfB9ZmjafrbP6BO0f0KT/khMhXKUpoJ6yShrVhiNpyRBo8QQjuOagsWzwSK2H49I7sbw==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=14", "npm": ">=6.12.0" @@ -8355,6 +8924,8 @@ "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-4.3.3.tgz", "integrity": "sha512-kZUeCwaQm+RNc2Bf1V3BYbF29lQQKz28L0y+FA4G0lS8IxtJVGi5SeDTUkpwqqkdHHC7JcapPDnyyzJ1lfWlOw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "ethereum-cryptography": "^2.0.0", "eventemitter3": "^5.0.1", @@ -8372,6 +8943,8 @@ "resolved": "https://registry.npmjs.org/web3-validator/-/web3-validator-2.0.6.tgz", "integrity": "sha512-qn9id0/l1bWmvH4XfnG/JtGKKwut2Vokl6YXP5Kfg424npysmtRLe9DgiNBM9Op7QL/aSiaA0TVXibuIuWcizg==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "ethereum-cryptography": "^2.0.0", "util": "^0.12.5", @@ -8388,13 +8961,17 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true + "dev": true, + "optional": true, + "peer": true }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -8405,6 +8982,8 @@ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", @@ -8438,6 +9017,8 @@ "resolved": "https://registry.npmjs.org/wif/-/wif-5.0.0.tgz", "integrity": "sha512-iFzrC/9ne740qFbNjTZ2FciSRJlHIXoxqk/Y5EnE08QOXu1WjJyCCswwDTYbohAOEnlCtLaAAQBhyaLRFh2hMA==", "dev": true, + "optional": true, + "peer": true, "dependencies": { "bs58check": "^4.0.0" } @@ -8498,6 +9079,8 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", "dev": true, + "optional": true, + "peer": true, "engines": { "node": ">=10.0.0" }, @@ -8528,6 +9111,7 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true, + "optional": true, "peer": true }, "node_modules/yargs": { @@ -8598,6 +9182,8 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.3.tgz", "integrity": "sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg==", "dev": true, + "optional": true, + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/examples/equity-token/package.json b/examples/equity-token/package.json index 2c63987..b12be47 100644 --- a/examples/equity-token/package.json +++ b/examples/equity-token/package.json @@ -14,14 +14,14 @@ "lint-sol-fix": "prettier --write \"./**/*.sol\"" }, "dependencies": { - "@openzeppelin/contracts": "5.2.0", - "@openzeppelin/contracts-upgradeable": "5.2.0", - "@solarity/solidity-lib": "3.0.2", - "@tokenf/contracts": "0.3.0" + "@openzeppelin/contracts": "5.3.0", + "@openzeppelin/contracts-upgradeable": "5.3.0", + "@solarity/solidity-lib": "3.1.4", + "@tokenf/contracts": "0.4.0" }, "devDependencies": { "@nomicfoundation/hardhat-ethers": "^3.0.8", - "@solarity/hardhat-migrate": "^3.0.2", + "@solarity/hardhat-migrate": "^3.1.0", "@typechain/ethers-v6": "^0.5.1", "@typechain/hardhat": "^9.1.0", "@types/node": "^22.14.0", diff --git a/package-lock.json b/package-lock.json index 69c1be3..cd4ccc7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,17 +1,17 @@ { "name": "@tokenf/contracts", - "version": "0.3.0", + "version": "0.4.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@tokenf/contracts", - "version": "0.3.0", + "version": "0.4.0", "license": "MIT", "dependencies": { - "@openzeppelin/contracts": "5.2.0", - "@openzeppelin/contracts-upgradeable": "5.2.0", - "@solarity/solidity-lib": "3.0.2" + "@openzeppelin/contracts": "5.3.0", + "@openzeppelin/contracts-upgradeable": "5.3.0", + "@solarity/solidity-lib": "3.1.4" }, "devDependencies": { "@metamask/eth-sig-util": "^8.2.0", @@ -1045,16 +1045,18 @@ } }, "node_modules/@openzeppelin/contracts": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.2.0.tgz", - "integrity": "sha512-bxjNie5z89W1Ea0NZLZluFh8PrFNn9DH8DQlujEok2yjsOlraUPKID5p1Wk3qdNbf6XkQ1Os2RvfiHrrXLHWKA==" + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-5.3.0.tgz", + "integrity": "sha512-zj/KGoW7zxWUE8qOI++rUM18v+VeLTTzKs/DJFkSzHpQFPD/jKKF0TrMxBfGLl3kpdELCNccvB3zmofSzm4nlA==", + "license": "MIT" }, "node_modules/@openzeppelin/contracts-upgradeable": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-5.2.0.tgz", - "integrity": "sha512-mZIu9oa4tQTlGiOJHk6D3LdJlqFqF6oNOSn6S6UVJtzfs9UsY9/dhMEbAVTwElxUtJnjpf6yA062+oBp+eOyPg==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-5.3.0.tgz", + "integrity": "sha512-yVzSSyTMWO6rapGI5tuqkcLpcGGXA0UA1vScyV5EhE5yw8By3Ewex9rDUw8lfVw0iTkvR/egjfcW5vpk03lqZg==", + "license": "MIT", "peerDependencies": { - "@openzeppelin/contracts": "5.2.0" + "@openzeppelin/contracts": "5.3.0" } }, "node_modules/@pkgjs/parseargs": { @@ -1380,18 +1382,34 @@ "dev": true }, "node_modules/@solarity/solidity-lib": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@solarity/solidity-lib/-/solidity-lib-3.0.2.tgz", - "integrity": "sha512-8sru5Z+wPI5oBtxyj4OV2bPYKBy04/mpZrofEMY8PATr04gUWZ1L7LFdJKgAeJSsnRtknfl/Axszcp8l8Rbrmg==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@solarity/solidity-lib/-/solidity-lib-3.1.4.tgz", + "integrity": "sha512-RF+bxLiojtIBVq0TmAtI/EJE5IFlqW2v2cT0sP2yc91e9v59k7WPiJtVmsZk4tub9LvoUD1e2hweBVNZ8h5XIA==", + "license": "MIT", "dependencies": { - "@openzeppelin/contracts": "5.2.0", - "@openzeppelin/contracts-upgradeable": "5.2.0", + "@openzeppelin/contracts": "5.4.0", + "@openzeppelin/contracts-upgradeable": "5.4.0", "@uniswap/v2-core": "1.0.1", "@uniswap/v2-periphery": "1.1.0-beta.0", "@uniswap/v3-core": "1.0.1", "@uniswap/v3-periphery": "1.4.4" } }, + "node_modules/@solarity/solidity-lib/node_modules/@openzeppelin/contracts": { + "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/@solarity/solidity-lib/node_modules/@openzeppelin/contracts-upgradeable": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-5.4.0.tgz", + "integrity": "sha512-STJKyDzUcYuB35Zub1JpWW58JxvrFFVgQ+Ykdr8A9PGXgtq/obF5uoh07k2XmFyPxfnZdPdBdhkJ/n2YxJ87HQ==", + "license": "MIT", + "peerDependencies": { + "@openzeppelin/contracts": "5.4.0" + } + }, "node_modules/@solidity-parser/parser": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.19.0.tgz", diff --git a/package.json b/package.json index 46dfaf3..05b099a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@tokenf/contracts", - "version": "0.3.0", + "version": "0.4.0", "license": "MIT", "author": "Distributed Lab", "description": "On-chain Real World Assets Tokenization Framework", @@ -38,9 +38,9 @@ "publish-to-npm": "npm run lint-fix && bash ./scripts/publish.sh --public" }, "dependencies": { - "@openzeppelin/contracts": "5.2.0", - "@openzeppelin/contracts-upgradeable": "5.2.0", - "@solarity/solidity-lib": "3.0.2" + "@openzeppelin/contracts": "5.3.0", + "@openzeppelin/contracts-upgradeable": "5.3.0", + "@solarity/solidity-lib": "3.1.4" }, "devDependencies": { "@metamask/eth-sig-util": "^8.2.0", diff --git a/test/modules/AbstractModules.test.ts b/test/modules/AbstractModules.test.ts index dbcdcdb..8fdc556 100644 --- a/test/modules/AbstractModules.test.ts +++ b/test/modules/AbstractModules.test.ts @@ -75,7 +75,9 @@ describe("AbstractModules", () => { it("should not handle if handler is not set", async () => { await module .connect(agent) - .addHandlerTopics(await module.getContextKey(await tokenF.MINT_SELECTOR()), [await module.MOCK_TOPIC()]); + .addHandlerTopics(await module.getContextKeyBySelector(await tokenF.MINT_SELECTOR()), [ + await module.MOCK_TOPIC(), + ]); await expect( module.canTransfer({ @@ -93,7 +95,9 @@ describe("AbstractModules", () => { it("should handle if all conditions are met", async () => { await module .connect(agent) - .addHandlerTopics(await module.getContextKey(await tokenF.MINT_SELECTOR()), [await module.MOCK_TOPIC()]); + .addHandlerTopics(await module.getContextKeyBySelector(await tokenF.MINT_SELECTOR()), [ + await module.MOCK_TOPIC(), + ]); await module.handlerer(); diff --git a/test/modules/kyc/RarimoModule.test.ts b/test/modules/kyc/SimpleKYCModule.test.ts similarity index 73% rename from test/modules/kyc/RarimoModule.test.ts rename to test/modules/kyc/SimpleKYCModule.test.ts index b64a25b..f4bf54b 100644 --- a/test/modules/kyc/RarimoModule.test.ts +++ b/test/modules/kyc/SimpleKYCModule.test.ts @@ -2,12 +2,12 @@ import { ethers } from "hardhat"; import { SignerWithAddress } from "@nomicfoundation/hardhat-ethers/signers"; import { expect } from "chai"; import { Reverter } from "@/test/helpers/reverter"; -import { KYCComplianceMock, RarimoModuleMock, SBTMock, TokenFMock } from "@ethers-v6"; +import { KYCComplianceMock, SimpleKYCModuleMock, SBTMock, TokenFMock } from "@ethers-v6"; import { ZERO_ADDR } from "@/scripts/utils/constants"; import { KYC_COMPLIANCE_ROLE, MINT_ROLE } from "@/test/helpers/utils"; import { wei } from "@/scripts/utils/utils"; -describe("RarimoModule", () => { +describe("SimpleKYCModule", () => { const reverter = new Reverter(); let owner: SignerWithAddress; @@ -16,7 +16,7 @@ describe("RarimoModule", () => { let bob: SignerWithAddress; let tokenF: TokenFMock; - let rarimo: RarimoModuleMock; + let simpleKYCModule: SimpleKYCModuleMock; let sbt: SBTMock; before("setup", async () => { @@ -25,7 +25,7 @@ describe("RarimoModule", () => { const TokenFMock = await ethers.getContractFactory("TokenFMock"); const KYCComplianceMock = await ethers.getContractFactory("KYCComplianceMock"); const RegulatoryComplianceMock = await ethers.getContractFactory("RegulatoryComplianceMock"); - const RarimoModuleMock = await ethers.getContractFactory("RarimoModuleMock"); + const SimpleKYCModuleMock = await ethers.getContractFactory("SimpleKYCModuleMock"); const SBTMock = await ethers.getContractFactory("SBTMock"); tokenF = await TokenFMock.deploy(); @@ -45,10 +45,10 @@ describe("RarimoModule", () => { sbt = await SBTMock.deploy(); await sbt.__SBTMock_init(); - rarimo = await RarimoModuleMock.deploy(); - await rarimo.__RarimoModuleMock_init(tokenF, sbt); + simpleKYCModule = await SimpleKYCModuleMock.deploy(); + await simpleKYCModule.__SimpleKYCModuleMock_init(tokenF, sbt); - await kycComplianceProxy.connect(agent).addKYCModules([rarimo]); + await kycComplianceProxy.connect(agent).addKYCModules([simpleKYCModule]); await reverter.snapshot(); }); @@ -57,20 +57,23 @@ describe("RarimoModule", () => { describe("access", () => { it("should initialize only once", async () => { - await expect(rarimo.__RarimoModuleMock_init(ZERO_ADDR, ZERO_ADDR)).to.be.revertedWithCustomError( - rarimo, + await expect(simpleKYCModule.__SimpleKYCModuleMock_init(ZERO_ADDR, ZERO_ADDR)).to.be.revertedWithCustomError( + simpleKYCModule, "InvalidInitialization", ); }); it("should initialize only by top level contract", async () => { - await expect(rarimo.__RarimoModuleDirect_init()).to.be.revertedWithCustomError(rarimo, "NotInitializing"); + await expect(simpleKYCModule.__SimpleKYCModuleDirect_init()).to.be.revertedWithCustomError( + simpleKYCModule, + "NotInitializing", + ); }); }); describe("getters", () => { it("should return base data", async () => { - expect(await rarimo.getSBT()).to.eq(await sbt.getAddress()); + expect(await simpleKYCModule.getSBT()).to.eq(await sbt.getAddress()); }); }); @@ -79,20 +82,20 @@ describe("RarimoModule", () => { let transferFromKey: string; const setupHandlerTopics = async () => { - await rarimo.addHandlerTopics(transferKey, [ - await rarimo.HAS_SOUL_SENDER_TOPIC(), - await rarimo.HAS_SOUL_RECIPIENT_TOPIC(), + await simpleKYCModule.addHandlerTopics(transferKey, [ + await simpleKYCModule.HAS_SOUL_SENDER_TOPIC(), + await simpleKYCModule.HAS_SOUL_RECIPIENT_TOPIC(), ]); - await rarimo.addHandlerTopics(transferFromKey, [ - await rarimo.HAS_SOUL_SENDER_TOPIC(), - await rarimo.HAS_SOUL_RECIPIENT_TOPIC(), - await rarimo.HAS_SOUL_OPERATOR_TOPIC(), + await simpleKYCModule.addHandlerTopics(transferFromKey, [ + await simpleKYCModule.HAS_SOUL_SENDER_TOPIC(), + await simpleKYCModule.HAS_SOUL_RECIPIENT_TOPIC(), + await simpleKYCModule.HAS_SOUL_OPERATOR_TOPIC(), ]); }; beforeEach(async () => { - transferKey = await rarimo.getContextKey(await tokenF.TRANSFER_SELECTOR()); - transferFromKey = await rarimo.getContextKey(await tokenF.TRANSFER_FROM_SELECTOR()); + transferKey = await simpleKYCModule.getContextKeyBySelector(await tokenF.TRANSFER_SELECTOR()); + transferFromKey = await simpleKYCModule.getContextKeyBySelector(await tokenF.TRANSFER_FROM_SELECTOR()); }); it("should not apply kyc limits if context keys are not set", async () => { diff --git a/test/modules/regulatory/ERC20TransferLimitsModule.test.ts b/test/modules/regulatory/ERC20TransferLimitsModule.test.ts index 2f2b6ec..5235ec4 100644 --- a/test/modules/regulatory/ERC20TransferLimitsModule.test.ts +++ b/test/modules/regulatory/ERC20TransferLimitsModule.test.ts @@ -124,8 +124,8 @@ describe("ERC20TransferLimitsModule", () => { }; beforeEach(async () => { - transferKey = await transferLimits.getContextKey(await tokenF.TRANSFER_SELECTOR()); - transferFromKey = await transferLimits.getContextKey(await tokenF.TRANSFER_FROM_SELECTOR()); + transferKey = await transferLimits.getContextKeyBySelector(await tokenF.TRANSFER_SELECTOR()); + transferFromKey = await transferLimits.getContextKeyBySelector(await tokenF.TRANSFER_FROM_SELECTOR()); }); it("should not apply transfer limits if context keys are not set", async () => { diff --git a/test/modules/regulatory/ERC721TransferLimitsModule.test.ts b/test/modules/regulatory/ERC721TransferLimitsModule.test.ts index 1aa3bf9..3a55ede 100644 --- a/test/modules/regulatory/ERC721TransferLimitsModule.test.ts +++ b/test/modules/regulatory/ERC721TransferLimitsModule.test.ts @@ -130,17 +130,22 @@ describe("ERC721TransferLimitsModule", () => { describe("integration", () => { let transferKey: string; let transferFromKey: string; + let safeTransferFromKey: string; const tokenURI = ""; const setupHandlerTopics = async () => { await transferLimits.addHandlerTopics(transferKey, [await transferLimits.MAX_TRANSFERS_PER_PERIOD_TOPIC()]); await transferLimits.addHandlerTopics(transferFromKey, [await transferLimits.MAX_TRANSFERS_PER_PERIOD_TOPIC()]); + await transferLimits.addHandlerTopics(safeTransferFromKey, [ + await transferLimits.MAX_TRANSFERS_PER_PERIOD_TOPIC(), + ]); }; beforeEach(async () => { - transferKey = await transferLimits.getContextKey(await nftF.TRANSFER_SELECTOR()); - transferFromKey = await transferLimits.getContextKey(await nftF.TRANSFER_FROM_SELECTOR()); + transferKey = await transferLimits.getContextKeyBySelector(await nftF.TRANSFER_SELECTOR()); + transferFromKey = await transferLimits.getContextKeyBySelector(await nftF.TRANSFER_FROM_SELECTOR()); + safeTransferFromKey = await transferLimits.getContextKeyBySelector(await nftF.SAFE_TRANSFER_FROM_SELECTOR()); }); it("should not apply transfer limits if context keys are not set", async () => { @@ -214,5 +219,33 @@ describe("ERC721TransferLimitsModule", () => { await expect(await nftF.connect(bob).transferFrom(alice, bob, offLimitTokenId)).to.not.be.reverted; expect(await nftF.ownerOf(offLimitTokenId)).to.be.eq(bob); }); + + it("should apply transfer limits for a safeTransferFrom if context keys are set", async () => { + await setupHandlerTopics(); + + const offLimitTokenId = MAX_TRANSFER_LIMIT + 1n; + + for (let tokenId = 0; tokenId <= MAX_TRANSFER_LIMIT; tokenId++) { + await nftF.connect(agent).mint(alice, tokenId, tokenURI); + await nftF.connect(alice).approve(bob, tokenId); + + await expect(await nftF.connect(bob)["safeTransferFrom(address,address,uint256)"](alice, bob, tokenId)).to.not + .be.reverted; + expect(await nftF.ownerOf(tokenId)).to.be.eq(bob); + } + + await nftF.connect(agent).mint(alice, offLimitTokenId, tokenURI); + await nftF.connect(alice).approve(bob, offLimitTokenId); + + await expect( + nftF.connect(bob)["safeTransferFrom(address,address,uint256)"](alice, bob, offLimitTokenId), + ).to.be.revertedWithCustomError(nftF, "CannotTransfer"); + + await time.increase(TIME_PERIOD + 1); + + await expect(await nftF.connect(bob)["safeTransferFrom(address,address,uint256)"](alice, bob, offLimitTokenId)).to + .not.be.reverted; + expect(await nftF.ownerOf(offLimitTokenId)).to.be.eq(bob); + }); }); });