From e09004e816d8e477e25bcb6d7198a67fc9c10fb3 Mon Sep 17 00:00:00 2001 From: orionstardust Date: Mon, 2 Sep 2024 00:30:42 -0400 Subject: [PATCH 01/57] feat: add NFT bridge --- contracts/bridge/NFT/NFTBase.sol | 341 ++++++++++++++++++++++ contracts/bridge/NFT/NFTController.sol | 128 ++++++++ contracts/bridge/NFT/NFTVault.sol | 138 +++++++++ contracts/common/Constants.sol | 5 + contracts/common/NFTStructs.sol | 36 +++ contracts/interfaces/IMintableERC1155.sol | 8 + contracts/interfaces/IMintableERC721.sol | 8 + contracts/interfaces/INFTBridge.sol | 21 ++ contracts/interfaces/INFTHook.sol | 67 +++++ 9 files changed, 752 insertions(+) create mode 100644 contracts/bridge/NFT/NFTBase.sol create mode 100644 contracts/bridge/NFT/NFTController.sol create mode 100644 contracts/bridge/NFT/NFTVault.sol create mode 100644 contracts/common/NFTStructs.sol create mode 100644 contracts/interfaces/IMintableERC1155.sol create mode 100644 contracts/interfaces/IMintableERC721.sol create mode 100644 contracts/interfaces/INFTBridge.sol create mode 100644 contracts/interfaces/INFTHook.sol diff --git a/contracts/bridge/NFT/NFTBase.sol b/contracts/bridge/NFT/NFTBase.sol new file mode 100644 index 00000000..34f6fd98 --- /dev/null +++ b/contracts/bridge/NFT/NFTBase.sol @@ -0,0 +1,341 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.13; + +import "solmate/utils/ReentrancyGuard.sol"; +import "solmate/tokens/ERC721.sol"; +import "solmate/tokens/ERC1155.sol"; +import {IConnector} from "../../interfaces/IConnector.sol"; +import "../../interfaces/INFTHook.sol"; +import "../../interfaces/INFTBridge.sol"; +import "../../common/Errors.sol"; +import "../../common/Constants.sol"; +import "../../utils/AccessControl.sol"; + +abstract contract NFTBase is ReentrancyGuard, INFTBridge, AccessControl { + address public immutable token; + bytes32 public bridgeType; + INFTHook public hook__; + // message identifier => cache + mapping(bytes32 => bytes) public identifierCache; + + // connector => cache + mapping(address => bytes) public connectorCache; + + mapping(address => bool) public validConnectors; + + event ConnectorStatusUpdated(address connector, bool status); + + event HookUpdated(address newHook); + + event BridgingTokens( + address connector, + address sender, + address receiver, + uint256 tokenId, + uint256 amount, + bytes32 messageId + ); + event TokensBridged( + address connecter, + address receiver, + uint256 tokenId, + uint256 amount, + bytes32 messageId + ); + + constructor(address token_) AccessControl(msg.sender) { + if (token_ != ETH_ADDRESS && token_.code.length == 0) + revert InvalidTokenContract(); + token = token_; + } + + /** + * @notice this function is used to update hook + * @dev it can only be updated by owner + * @dev should be carefully migrated as it can risk user funds + * @param hook_ new hook address + */ + function updateHook( + address hook_, + bool approve_ + ) external virtual onlyOwner { + // remove the approval from the old hook + if (bridgeType == ERC721_VAULT) { + if (ERC721(token).isApprovedForAll(address(this), address(hook__))) { + ERC721(token).setApprovalForAll(address(hook__), false); + } + if (approve_) { + ERC721(token).setApprovalForAll(hook_, approve_); + } + } else { + if (ERC1155(token).isApprovedForAll(address(this), address(hook__))) { + ERC1155(token).setApprovalForAll(address(hook__), false); + } + if (approve_) { + ERC1155(token).setApprovalForAll(hook_, approve_); + } + } + hook__ = INFTHook(hook_); + + emit HookUpdated(hook_); + } + + function updateConnectorStatus( + address[] calldata connectors, + bool[] calldata statuses + ) external onlyOwner { + uint256 length = connectors.length; + for (uint256 i; i < length; i++) { + validConnectors[connectors[i]] = statuses[i]; + emit ConnectorStatusUpdated(connectors[i], statuses[i]); + } + } + + /** + * @notice Executes pre-bridge operations before initiating a token bridge transfer. + * @dev This internal function is called before initiating a token bridge transfer. + * It validates the receiver address and the connector, and if a pre-hook contract is defined, + * it executes the source pre-hook call. + * @param connector_ The address of the connector responsible for the transfer. + * @param transferInfo_ Information about the transfer. + * @return transferInfo Information about the transfer after pre-bridge operations. + * @return postHookData Data returned from the pre-hook call. + * @dev Reverts with `ZeroAddressReceiver` if the receiver address is zero. + * Reverts with `InvalidConnector` if the connector address is not valid. + */ + function _beforeBridge( + address connector_, + NFTTransferInfo memory transferInfo_ + ) + internal + returns (NFTTransferInfo memory transferInfo, bytes memory postHookData) + { + if (transferInfo_.receiver == address(0)) revert ZeroAddressReceiver(); + if (!validConnectors[connector_]) revert InvalidConnector(); + + if (address(hook__) != address(0)) { + (transferInfo, postHookData) = hook__.srcPreHookCall( + SrcPreHookNFTCallParams(connector_, msg.sender, transferInfo_) + ); + } else { + transferInfo = transferInfo_; + } + } + + /** + * @notice Executes post-bridge operations after completing a token bridge transfer. + * @dev This internal function is called after completing a token bridge transfer. + * It executes the source post-hook call if a hook contract is defined, calculates fees, + * calls the outbound function of the connector, and emits an event for tokens withdrawn. + * @param msgGasLimit_ The gas limit for the outbound call. + * @param connector_ The address of the connector responsible for the transfer. + * @param options_ Additional options for the outbound call. + * @param postHookData_ Data returned from the source post-hook call. + * @param transferInfo_ Information about the transfer. + * @dev Reverts with `MessageIdMisMatched` if the returned message ID does not match the expected message ID. + */ + function _afterBridge( + uint256 msgGasLimit_, + address connector_, + bytes memory options_, + bytes memory postHookData_, + NFTTransferInfo memory transferInfo_ + ) internal { + NFTTransferInfo memory transferInfo = transferInfo_; + if (address(hook__) != address(0)) { + transferInfo = hook__.srcPostHookCall( + SrcPostHookNFTCallParams( + connector_, + options_, + postHookData_, + transferInfo_ + ) + ); + } + + uint256 fees = msg.value; + bytes32 messageId = IConnector(connector_).getMessageId(); + bytes32 returnedMessageId = IConnector(connector_).outbound{ + value: fees + }( + msgGasLimit_, + abi.encode( + transferInfo.receiver, + transferInfo.tokenId, + transferInfo.amount, + messageId, + transferInfo.extraData + ), + options_ + ); + if (returnedMessageId != messageId) revert MessageIdMisMatched(); + + emit BridgingTokens( + connector_, + msg.sender, + transferInfo.receiver, + transferInfo.tokenId, + transferInfo.amount, + messageId + ); + } + + /** + * @notice Executes pre-mint operations before minting tokens. + * @dev This internal function is called before minting tokens. + * It validates the caller as a valid connector, checks if the receiver is not this contract, the bridge contract, + * or the token contract, and executes the destination pre-hook call if a hook contract is defined. + * @param transferInfo_ Information about the transfer. + * @return postHookData Data returned from the destination pre-hook call. + * @return transferInfo Information about the transfer after pre-mint operations. + * @dev Reverts with `InvalidConnector` if the caller is not a valid connector. + * Reverts with `CannotTransferOrExecuteOnBridgeContracts` if the receiver is this contract, the bridge contract, + * or the token contract. + */ + function _beforeMint( + uint32, + NFTTransferInfo memory transferInfo_ + ) + internal + returns (bytes memory postHookData, NFTTransferInfo memory transferInfo) + { + if (!validConnectors[msg.sender]) revert InvalidConnector(); + + // no need of source check here, as if invalid caller, will revert with InvalidPoolId + if ( + transferInfo_.receiver == address(this) || + // transferInfo_.receiver == address(bridge__) || + transferInfo_.receiver == token + ) revert CannotTransferOrExecuteOnBridgeContracts(); + + if (address(hook__) != address(0)) { + (postHookData, transferInfo) = hook__.dstPreHookCall( + DstPreHookNFTCallParams( + msg.sender, + connectorCache[msg.sender], + transferInfo_ + ) + ); + } else { + transferInfo = transferInfo_; + } + } + + /** + * @notice Executes post-mint operations after minting tokens. + * @dev This internal function is called after minting tokens. + * It executes the destination post-hook call if a hook contract is defined and updates cache data. + * @param messageId_ The unique identifier for the mint transaction. + * @param postHookData_ Data returned from the destination pre-hook call. + * @param transferInfo_ Information about the mint transaction. + */ + function _afterMint( + uint256, + bytes32 messageId_, + bytes memory postHookData_, + NFTTransferInfo memory transferInfo_ + ) internal { + if (address(hook__) != address(0)) { + CacheData memory cacheData = hook__.dstPostHookCall( + DstPostHookNFTCallParams( + msg.sender, + messageId_, + connectorCache[msg.sender], + postHookData_, + transferInfo_ + ) + ); + + identifierCache[messageId_] = cacheData.identifierCache; + connectorCache[msg.sender] = cacheData.connectorCache; + } + + emit TokensBridged( + msg.sender, + transferInfo_.receiver, + transferInfo_.tokenId, + transferInfo_.amount, + messageId_ + ); + } + + /** + * @notice Executes pre-retry operations before retrying a failed transaction. + * @dev This internal function is called before retrying a failed transaction. + * It validates the connector, retrieves cache data for the given message ID, + * and executes the pre-retry hook if defined. + * @param connector_ The address of the connector responsible for the failed transaction. + * @param messageId_ The unique identifier for the failed transaction. + * @return postHookData Data returned from the pre-retry hook call. + * @return transferInfo Information about the transfer. + * @dev Reverts with `InvalidConnector` if the connector is not valid. + * Reverts with `NoPendingData` if there is no pending data for the given message ID. + */ + function _beforeRetry( + address connector_, + bytes32 messageId_ + ) + internal + returns (bytes memory postHookData, NFTTransferInfo memory transferInfo) + { + if (!validConnectors[connector_]) revert InvalidConnector(); + + CacheData memory cacheData = CacheData( + identifierCache[messageId_], + connectorCache[connector_] + ); + + if (cacheData.identifierCache.length == 0) revert NoPendingData(); + (postHookData, transferInfo) = hook__.preRetryHook( + PreRetryHookCallParams(connector_, cacheData) + ); + } + + /** + * @notice Executes post-retry operations after retrying a failed transaction. + * @dev This internal function is called after retrying a failed transaction. + * It retrieves cache data for the given message ID, executes the post-retry hook if defined, + * and updates cache data. + * @param connector_ The address of the connector responsible for the failed transaction. + * @param messageId_ The unique identifier for the failed transaction. + * @param postHookData Data returned from the pre-retry hook call. + */ + function _afterRetry( + address connector_, + bytes32 messageId_, + bytes memory postHookData + ) internal { + CacheData memory cacheData = CacheData( + identifierCache[messageId_], + connectorCache[connector_] + ); + + (cacheData) = hook__.postRetryHook( + PostRetryHookCallParams( + connector_, + messageId_, + postHookData, + cacheData + ) + ); + identifierCache[messageId_] = cacheData.identifierCache; + connectorCache[connector_] = cacheData.connectorCache; + } + + /** + * @notice Retrieves the minimum fees required for a transaction from a connector. + * @dev This function returns the minimum fees required for a transaction from the specified connector, + * based on the provided message gas limit and payload size. + * @param connector_ The address of the connector. + * @param msgGasLimit_ The gas limit for the transaction. + * @param payloadSize_ The size of the payload for the transaction. + * @return totalFees The total minimum fees required for the transaction. + */ + function getMinFees( + address connector_, + uint256 msgGasLimit_, + uint256 payloadSize_ + ) external view returns (uint256 totalFees) { + return IConnector(connector_).getMinFees(msgGasLimit_, payloadSize_); + } +} diff --git a/contracts/bridge/NFT/NFTController.sol b/contracts/bridge/NFT/NFTController.sol new file mode 100644 index 00000000..0d209f49 --- /dev/null +++ b/contracts/bridge/NFT/NFTController.sol @@ -0,0 +1,128 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.13; + +import "./NFTBase.sol"; +import {IMintableERC721} from "../../interfaces/IMintableERC721.sol"; +import {IMintableERC1155} from "../../interfaces/IMintableERC1155.sol"; + +contract NFTController is NFTBase { + bytes4 private interfaceId; + + constructor(address token_, bytes4 interfaceId_) NFTBase(token_) { + if (interfaceId_ != ID_ERC721 && interfaceId_ != ID_ERC1155) + revert InvalidTokenContract(); + bridgeType = NORMAL_CONTROLLER; + interfaceId = interfaceId_; + } + + /** + * @notice Bridges tokens between chains. + * @dev This function allows bridging tokens between different chains. + * @param receiver_ The address to receive the bridged tokens. + * @param tokenId_ The id of token to bridge. + * @param amount_ The amount of tokens to bridge. + * @param msgGasLimit_ The gas limit for the execution of the bridging process. + * @param connector_ The address of the connector contract responsible for the bridge. + * @param extraData_ The extra data passed to hook functions. + * @param options_ Additional options for the bridging process. + */ + function bridge( + address receiver_, + uint256 tokenId_, + uint256 amount_, + uint256 msgGasLimit_, + address connector_, + bytes calldata extraData_, + bytes calldata options_ + ) external payable nonReentrant { + ( + NFTTransferInfo memory transferInfo, + bytes memory postHookData + ) = _beforeBridge( + connector_, + NFTTransferInfo(receiver_, tokenId_, amount_, extraData_) + ); + + // to maintain socket dl specific accounting for super token + _burn(msg.sender, transferInfo.tokenId, transferInfo.amount); + _afterBridge( + msgGasLimit_, + connector_, + options_, + postHookData, + transferInfo + ); + } + + /** + * @notice Receives inbound tokens from another chain. + * @dev This function is used to receive tokens from another chain. + * @param siblingChainSlug_ The identifier of the sibling chain. + * @param payload_ The payload containing the inbound tokens. + */ + function receiveInbound( + uint32 siblingChainSlug_, + bytes memory payload_ + ) external payable override nonReentrant { + ( + address receiver, + uint256 tokenId, + uint256 lockAmount, + bytes32 messageId, + bytes memory extraData + ) = abi.decode(payload_, (address, uint256, uint256, bytes32, bytes)); + + // convert to shares + NFTTransferInfo memory transferInfo = NFTTransferInfo( + receiver, + tokenId, + lockAmount, + extraData + ); + bytes memory postHookData; + (postHookData, transferInfo) = _beforeMint( + siblingChainSlug_, + transferInfo + ); + + _mint(transferInfo.receiver, transferInfo.tokenId, transferInfo.amount); + + _afterMint(lockAmount, messageId, postHookData, transferInfo); + } + + /** + * @notice Retry a failed transaction. + * @dev This function allows retrying a failed transaction sent through a connector. + * @param connector_ The address of the connector contract responsible for the failed transaction. + * @param messageId_ The unique identifier of the failed transaction. + */ + function retry( + address connector_, + bytes32 messageId_ + ) external nonReentrant { + ( + bytes memory postHookData, + NFTTransferInfo memory transferInfo + ) = _beforeRetry(connector_, messageId_); + _mint(transferInfo.receiver, transferInfo.tokenId, transferInfo.amount); + + _afterRetry(connector_, messageId_, postHookData); + } + + function _burn(address user_, uint256 burnTokenId_, uint256 burnAmount_) internal virtual { + if (interfaceId == ID_ERC721) { + IMintableERC721(token).burn(user_, burnTokenId_); + } else { + IMintableERC1155(token).burn(user_, burnTokenId_, burnAmount_); + } + } + + function _mint(address user_, uint256 mintTokenId_, uint256 mintAmount_) internal virtual { + if (mintAmount_ == 0) return; + if (interfaceId == ID_ERC721) { + IMintableERC721(token).mint(user_, mintTokenId_); + } else { + IMintableERC1155(token).mint(user_, mintTokenId_, mintAmount_); + } + } +} diff --git a/contracts/bridge/NFT/NFTVault.sol b/contracts/bridge/NFT/NFTVault.sol new file mode 100644 index 00000000..4971717a --- /dev/null +++ b/contracts/bridge/NFT/NFTVault.sol @@ -0,0 +1,138 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.13; + +import "./NFTBase.sol"; +import "../../interfaces/IConnector.sol"; +import "solmate/tokens/ERC721.sol"; +import "solmate/tokens/ERC1155.sol"; + +/** + * @title SuperToken + * @notice A contract which enables bridging a token to its sibling chains. + * @dev This contract implements ISuperTokenOrVault to support message bridging through IMessageBridge compliant contracts. + */ +contract NFTVault is NFTBase { + /** + * @notice constructor for creating a new SuperTokenVault. + * @param token_ token contract address which is to be bridged. + * @param interfaceId_ EIP-165 interface id of token contract which is to be bridged. + */ + + constructor(address token_, bytes4 interfaceId_) NFTBase(token_) { + if (interfaceId_ != ID_ERC721 && interfaceId_ != ID_ERC1155) + revert InvalidTokenContract(); + bridgeType = interfaceId_ == ID_ERC721 ? ERC721_VAULT : ERC1155_VAULT; + } + + /** + * @notice Bridges tokens between chains. + * @dev This function allows bridging tokens between different chains. + * @param receiver_ The address to receive the bridged tokens. + * @param tokenId_ The id of token to bridge. + * @param amount_ The amount of tokens to bridge. + * @param msgGasLimit_ The gas limit for the execution of the bridging process. + * @param connector_ The address of the connector contract responsible for the bridge. + * @param extraData_ The extra data passed to hook functions. + * @param options_ Additional options for the bridging process. + */ + function bridge( + address receiver_, + uint256 tokenId_, + uint256 amount_, + uint256 msgGasLimit_, + address connector_, + bytes calldata extraData_, + bytes calldata options_ + ) external payable nonReentrant { + ( + NFTTransferInfo memory transferInfo, + bytes memory postHookData + ) = _beforeBridge( + connector_, + NFTTransferInfo(receiver_, tokenId_, amount_, extraData_) + ); + + _receiveTokens(transferInfo.tokenId, transferInfo.amount); + + _afterBridge( + msgGasLimit_, + connector_, + options_, + postHookData, + transferInfo + ); + } + + /** + * @notice Receives inbound tokens from another chain. + * @dev This function is used to receive tokens from another chain. + * @param siblingChainSlug_ The identifier of the sibling chain. + * @param payload_ The payload containing the inbound tokens. + */ + function receiveInbound( + uint32 siblingChainSlug_, + bytes memory payload_ + ) external payable override nonReentrant { + ( + address receiver, + uint256 tokenId, + uint256 unlockAmount, + bytes32 messageId, + bytes memory extraData + ) = abi.decode(payload_, (address, uint256, uint256, bytes32, bytes)); + + NFTTransferInfo memory transferInfo = NFTTransferInfo( + receiver, + tokenId, + unlockAmount, + extraData + ); + + bytes memory postHookData; + (postHookData, transferInfo) = _beforeMint( + siblingChainSlug_, + transferInfo + ); + + _transferTokens(transferInfo.receiver, transferInfo.tokenId, transferInfo.amount); + + _afterMint(unlockAmount, messageId, postHookData, transferInfo); + } + + /** + * @notice Retry a failed transaction. + * @dev This function allows retrying a failed transaction sent through a connector. + * @param connector_ The address of the connector contract responsible for the failed transaction. + * @param messageId_ The unique identifier of the failed transaction. + */ + function retry( + address connector_, + bytes32 messageId_ + ) external nonReentrant { + ( + bytes memory postHookData, + NFTTransferInfo memory transferInfo + ) = _beforeRetry(connector_, messageId_); + _transferTokens(transferInfo.receiver, transferInfo.tokenId, transferInfo.amount); + + _afterRetry(connector_, messageId_, postHookData); + } + + function _transferTokens(address receiver_, uint256 tokenId_, uint256 amount_) internal { + if (amount_ == 0) return; + if (bridgeType == ERC721_VAULT) { + ERC721(token).safeTransferFrom(address(this), receiver_, tokenId_); + } else { + ERC1155(token).safeTransferFrom(address(this), receiver_, tokenId_, amount_, new bytes(0)); + } + } + + function _receiveTokens(uint256 tokenId_, uint256 amount_) internal { + if (amount_ == 0) return; + if (bridgeType == ERC721_VAULT) { + ERC721(token).safeTransferFrom(msg.sender, address(this), tokenId_); + } else { + ERC1155(token).safeTransferFrom(msg.sender, address(this), tokenId_, amount_, new bytes(0)); + } + } +} diff --git a/contracts/common/Constants.sol b/contracts/common/Constants.sol index d381dd4f..a7251dfe 100644 --- a/contracts/common/Constants.sol +++ b/contracts/common/Constants.sol @@ -19,3 +19,8 @@ bytes32 constant LIMIT_EXECUTION_YIELD_TOKEN_HOOK = keccak256( bytes32 constant ERC20_VAULT = keccak256("ERC20_VAULT"); bytes32 constant NATIVE_VAULT = keccak256("NATIVE_VAULT"); +bytes32 constant ERC721_VAULT = keccak256("ERC721_VAULT"); +bytes32 constant ERC1155_VAULT = keccak256("ERC1155_VAULT"); + +bytes4 constant ID_ERC721 = 0x80ac58cd; // EIP-165 interface id +bytes4 constant ID_ERC1155 = 0xd9b67a26; // EIP-165 interface id diff --git a/contracts/common/NFTStructs.sol b/contracts/common/NFTStructs.sol new file mode 100644 index 00000000..8ead2ca1 --- /dev/null +++ b/contracts/common/NFTStructs.sol @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.13; + +struct SrcPreHookNFTCallParams { + address connector; + address msgSender; + NFTTransferInfo transferInfo; +} + +struct SrcPostHookNFTCallParams { + address connector; + bytes options; + bytes postHookData; + NFTTransferInfo transferInfo; +} + +struct DstPreHookNFTCallParams { + address connector; + bytes connectorCache; + NFTTransferInfo transferInfo; +} + +struct DstPostHookNFTCallParams { + address connector; + bytes32 messageId; + bytes connectorCache; + bytes postHookData; + NFTTransferInfo transferInfo; +} + +struct NFTTransferInfo { + address receiver; + uint256 tokenId; + uint256 amount; + bytes extraData; +} diff --git a/contracts/interfaces/IMintableERC1155.sol b/contracts/interfaces/IMintableERC1155.sol new file mode 100644 index 00000000..1b4c73ff --- /dev/null +++ b/contracts/interfaces/IMintableERC1155.sol @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.13; + +interface IMintableERC1155 { + function mint(address receiver_, uint256 id_, uint256 amount_) external; + + function burn(address burner_, uint256 id_, uint256 amount_) external; +} diff --git a/contracts/interfaces/IMintableERC721.sol b/contracts/interfaces/IMintableERC721.sol new file mode 100644 index 00000000..c6e8a7d7 --- /dev/null +++ b/contracts/interfaces/IMintableERC721.sol @@ -0,0 +1,8 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.13; + +interface IMintableERC721 { + function mint(address receiver_, uint256 id_) external; + + function burn(address burner_, uint256 id_) external; +} diff --git a/contracts/interfaces/INFTBridge.sol b/contracts/interfaces/INFTBridge.sol new file mode 100644 index 00000000..43356bee --- /dev/null +++ b/contracts/interfaces/INFTBridge.sol @@ -0,0 +1,21 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.3; + +interface INFTBridge { + function bridge( + address receiver_, + uint256 tokenId_, + uint256 amount_, + uint256 msgGasLimit_, + address connector_, + bytes calldata extraData_, + bytes calldata options_ + ) external payable; + + function receiveInbound( + uint32 siblingChainSlug_, + bytes memory payload_ + ) external payable; + + function retry(address connector_, bytes32 messageId_) external; +} diff --git a/contracts/interfaces/INFTHook.sol b/contracts/interfaces/INFTHook.sol new file mode 100644 index 00000000..13d5bccc --- /dev/null +++ b/contracts/interfaces/INFTHook.sol @@ -0,0 +1,67 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.3; +import "../common/Structs.sol"; +import "../common/NFTStructs.sol"; + +interface INFTHook { + /** + * @notice Executes pre-hook call for source underlyingAsset. + * @dev This function is used to execute a pre-hook call for the source underlyingAsset before initiating a transfer. + * @param params_ Parameters for the pre-hook call. + * @return transferInfo Information about the transfer. + * @return postHookData returned from the pre-hook call. + */ + function srcPreHookCall( + SrcPreHookNFTCallParams calldata params_ + ) + external + returns (NFTTransferInfo memory transferInfo, bytes memory postHookData); + + function srcPostHookCall( + SrcPostHookNFTCallParams calldata params_ + ) external returns (NFTTransferInfo memory transferInfo); + + /** + * @notice Executes pre-hook call for destination underlyingAsset. + * @dev This function is used to execute a pre-hook call for the destination underlyingAsset before initiating a transfer. + * @param params_ Parameters for the pre-hook call. + */ + function dstPreHookCall( + DstPreHookNFTCallParams calldata params_ + ) + external + returns (bytes memory postHookData, NFTTransferInfo memory transferInfo); + + /** + * @notice Executes post-hook call for destination underlyingAsset. + * @dev This function is used to execute a post-hook call for the destination underlyingAsset after completing a transfer. + * @param params_ Parameters for the post-hook call. + * @return cacheData Cached data for the post-hook call. + */ + function dstPostHookCall( + DstPostHookNFTCallParams calldata params_ + ) external returns (CacheData memory cacheData); + + /** + * @notice Executes a pre-retry hook for a failed transaction. + * @dev This function is used to execute a pre-retry hook for a failed transaction. + * @param params_ Parameters for the pre-retry hook. + * @return postHookData Data from the post-retry hook. + * @return transferInfo Information about the transfer. + */ + function preRetryHook( + PreRetryHookCallParams calldata params_ + ) + external + returns (bytes memory postHookData, NFTTransferInfo memory transferInfo); + + /** + * @notice Executes a post-retry hook for a failed transaction. + * @dev This function is used to execute a post-retry hook for a failed transaction. + * @param params_ Parameters for the post-retry hook. + * @return cacheData Cached data for the post-retry hook. + */ + function postRetryHook( + PostRetryHookCallParams calldata params_ + ) external returns (CacheData memory cacheData); +} From 47bfac27bbabf1668cf3f6690db8a9454af7e7dd Mon Sep 17 00:00:00 2001 From: orionstardust Date: Mon, 2 Sep 2024 00:32:17 -0400 Subject: [PATCH 02/57] feat:add new cli for new NFT project --- package.json | 1 + script/script.ts | 6 +- script/setup/addNewNFT.ts | 149 +++++++++++++++++++++ script/setup/common.ts | 13 ++ script/setup/configUtils.ts | 47 +++++-- script/setup/enumMaps.ts | 9 +- script/setup/updateExistingNFTAddresses.ts | 43 ++++++ src/enums/existing-nft-addresses.ts | 14 ++ src/enums/index.ts | 3 + src/enums/nftName.ts | 9 ++ src/enums/nfts.ts | 7 + 11 files changed, 290 insertions(+), 11 deletions(-) create mode 100644 script/setup/addNewNFT.ts create mode 100644 script/setup/updateExistingNFTAddresses.ts create mode 100644 src/enums/existing-nft-addresses.ts create mode 100644 src/enums/nftName.ts create mode 100644 src/enums/nfts.ts diff --git a/package.json b/package.json index f65cb046..32378bf2 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "project:new": "npx ts-node script/script.ts new", "project:edit": "npx ts-node script/script.ts edit", "project:addToken": "npx ts-node script/script.ts addToken", + "project:addNFT": "npx ts-node script/script.ts addNFT", "bridge": "npx hardhat run script/bridge/bridge.ts" }, "pre-commit": [ diff --git a/script/script.ts b/script/script.ts index e0302769..e43d2cd1 100755 --- a/script/script.ts +++ b/script/script.ts @@ -4,6 +4,7 @@ import { initDeploymentConfig } from "./constants"; import { addProject } from "./setup/newProject/main"; import { addNewToken } from "./setup/addNewToken"; import { editProject } from "./setup/editProject"; +import { addNewNFT } from "./setup/addNewNFT"; async function main() { const args = process.argv.slice(2); @@ -16,9 +17,12 @@ async function main() { case "edit": await editProject(); break; - case "add_token": + case "addToken": await addNewToken(); break; + case "addNFT": + await addNewNFT(); + break; default: console.log("Unknown command"); } diff --git a/script/setup/addNewNFT.ts b/script/setup/addNewNFT.ts new file mode 100644 index 00000000..6192aad5 --- /dev/null +++ b/script/setup/addNewNFT.ts @@ -0,0 +1,149 @@ +import prompts from "prompts"; +import { appendToEnvFile, updateNFTEnums } from "./configUtils"; +import { ChainSlug, MainnetIds, TestnetIds } from "@socket.tech/dl-core"; +import { ExistingNFTAddresses, NFTs } from "../../src/enums"; +import { generateNFTAddressesFile } from "./updateExistingNFTAddresses"; +import { + NewNFTInfo, + NFTType, + validateEmptyValue, + validateEthereumAddress, + validateRPC, +} from "./common"; +import { chainSlugReverseMap } from "./enumMaps"; +import { rpcKeys } from "../helpers"; + +export const addNewNFT = async () => { + let chainOptions = [...MainnetIds, ...TestnetIds].map((chain) => ({ + title: chainSlugReverseMap.get(String(chain)), + value: chain, + })); + let newNFTInfo: NewNFTInfo = await getNewNFTInfo(chainOptions); + console.log("newNFTInfo", newNFTInfo); + if (!newNFTInfo.name) return; + console.log("Adding new token: ", newNFTInfo); + if (!Object.keys(NFTs).includes(newNFTInfo.symbol.toUpperCase())) { + await updateNFTEnums(newNFTInfo); + } + + const newNFTsEnum = { + ...NFTs, + [newNFTInfo.symbol.toUpperCase()]: newNFTInfo.symbol.toUpperCase(), + }; + + generateNFTAddressesFile( + [ + { + chainSlug: newNFTInfo.chainSlug as ChainSlug, + token: newNFTInfo.symbol.toUpperCase() as NFTs, + address: newNFTInfo.address, + }, + ], + newNFTsEnum + ); +}; + +export const getNewNFTInfo = async ( + chainOptions: { title: string; value: number }[] +) => { + let newNFTInfo: NewNFTInfo = { + name: "", + symbol: "", + type: NFTType.ERC721, + address: "", + chainSlug: 0 as ChainSlug, + }; + + const { name, symbol, type, chainSlug, address } = await prompts([ + { + name: "name", + type: "text", + message: "Enter NFT name", + validate: (value) => validateEmptyValue(value.trim()), + }, + { + name: "type", + type: "select", + message: "Select NFT type", + choices: [ + { + title: "ERC721", + value: NFTType.ERC721, + }, + { + title: "ERC1155", + value: NFTType.ERC1155, + }, + ], + }, + { + name: "symbol", + type: "text", + message: "Enter NFT symbol", + validate: (value) => validateEmptyValue(value.trim()), + }, + { + name: "chainSlug", + type: "select", + message: "Select chain where token is deployed", + choices: chainOptions, + }, + { + name: "address", + type: "text", + message: "Enter token address", + validate: (value) => validateEthereumAddress(value.trim()), + }, + ]); + newNFTInfo.name = name; + newNFTInfo.symbol = symbol; + newNFTInfo.type = type; + newNFTInfo.chainSlug = chainSlug as ChainSlug; + newNFTInfo.address = address.trim(); + + if (ExistingNFTAddresses[chainSlug]) { + for (let [symbol, address] of Object.entries( + ExistingNFTAddresses[newNFTInfo.chainSlug] + )) { + if (address.toLowerCase() === newNFTInfo.address.toLowerCase()) { + console.log( + `NFT already present in the repo as ${symbol} on chain ${chainSlugReverseMap.get( + String(chainSlug) + )}` + ); + return newNFTInfo; + } + } + } + + let rpcKey = rpcKeys(chainSlug); + let rpc = process.env[rpcKey]; + if (!rpc) { + const rpcInfo = await prompts([ + { + name: "rpc", + type: "text", + message: `Enter RPC url for the chain ${chainSlug} (for fetching token metadata)`, + validate: (value) => validateRPC(chainSlug, value.trim()), + }, + ]); + rpc = rpcInfo.rpc.trim(); + appendToEnvFile(rpcKey, rpc); + } + + newNFTInfo.address = newNFTInfo.address.trim(); + if ( + ExistingNFTAddresses[chainSlug]?.[ + newNFTInfo.symbol.toUpperCase() + ]?.toLowerCase() === newNFTInfo.address.toLowerCase() + ) { + console.log("Token already present in the list"); + return newNFTInfo; + } + newNFTInfo = { + ...newNFTInfo, + symbol: newNFTInfo.symbol.toUpperCase(), + chainSlug, + }; + return newNFTInfo; +}; diff --git a/script/setup/common.ts b/script/setup/common.ts index a95e4550..3706890f 100644 --- a/script/setup/common.ts +++ b/script/setup/common.ts @@ -26,6 +26,19 @@ export type NewTokenInfo = { address: string; }; +export enum NFTType { + ERC721 = "erc721", + ERC1155 = "erc1155", +} + +export type NewNFTInfo = { + name: string; + type: NFTType; + symbol: string; + chainSlug: ChainSlug; + address: string; +}; + type TokenRateLimits = Record< string, { sendingLimit: number; receivingLimit: number } diff --git a/script/setup/configUtils.ts b/script/setup/configUtils.ts index ce2680fb..b69a45ed 100644 --- a/script/setup/configUtils.ts +++ b/script/setup/configUtils.ts @@ -2,7 +2,7 @@ import path from "path"; import fs, { appendFile, appendFileSync, writeFileSync } from "fs"; import { writeFile } from "fs/promises"; import { ChainSlug } from "@socket.tech/dl-core"; -import { Tokens } from "../../src/enums"; +import { NFTs, Tokens } from "../../src/enums"; import { chainSlugReverseMap, getEnumMaps, @@ -154,6 +154,28 @@ export const updateTokenEnums = async (newTokenInfo: { console.log(`✔ Updated Enums : Tokens, Symbols, Decimals, Token Names`); }; +export const updateNFTEnums = async (newNFTInfo: { + name: string; + symbol: string; +}) => { + if (!newNFTInfo.name) return; + + let { name, symbol } = newNFTInfo; + await updateFile( + "nfts.ts", + `,\n ${symbol.toUpperCase()} = "${symbol.toUpperCase()}",\n}\n`, + ",\n}" + ); + + await updateFile( + "nftName.ts", + `,\n [NFTs.${symbol.toUpperCase()}]: "${name}",\n};\n`, + ",\n};" + ); + + console.log(`✔ Updated Enums : NFTs`); +}; + const updateFile = async (fileName, newChainDetails, replaceWith) => { const filePath = enumFolderPath + fileName; const outputExists = fs.existsSync(filePath); @@ -169,18 +191,25 @@ const updateFile = async (fileName, newChainDetails, replaceWith) => { fs.writeFileSync(filePath, newDataString); }; -const checkValueIfEnum = (value: any, tokensEnum: object = Tokens) => { +const checkValueIfEnum = ( + value: any, + tokensEnum: object = Tokens, + nftsEnum: object = NFTs +) => { const { chainSlugMap, tokensMap, + nftsMap, integrationTypesMap, deploymentModeMap, hookMap, - } = getEnumMaps(tokensEnum); + } = getEnumMaps(tokensEnum, nftsEnum); if (chainSlugMap.has(value)) { return "ChainSlug." + chainSlugMap.get(value); } else if (tokensMap.has(value)) { return "Tokens." + tokensMap.get(value); + } else if (nftsMap.has(value)) { + return "NFTs." + nftsMap.get(value); } else if (integrationTypesMap.has(value)) { return "IntegrationTypes." + integrationTypesMap.get(value); } else if (deploymentModeMap.has(value)) { @@ -194,30 +223,32 @@ const checkValueIfEnum = (value: any, tokensEnum: object = Tokens) => { export const serializeConstants = ( constants: any, depth: number = 0, - tokensEnum: object = Tokens + tokensEnum: object = Tokens, + nftsEnum: object = NFTs ): string => { const indent = " ".repeat(depth * 2); // Increase indent by 2 spaces per depth level const entries = Object.entries(constants); const serializedEntries = entries.map(([key, value]) => { - const enumKey = checkValueIfEnum(key, tokensEnum); + const enumKey = checkValueIfEnum(key, tokensEnum, nftsEnum); const newKey = enumKey ? `[${enumKey}]` : String(key); if (typeof value === "object" && !Array.isArray(value) && value !== null) { return `${indent}${newKey}: {\n${serializeConstants( value, depth + 1, - tokensEnum + tokensEnum, + nftsEnum )}\n${indent}}`; } else if (Array.isArray(value)) { return `${indent}${newKey}: [${value .map((v) => { - const enumValue = checkValueIfEnum(String(v), tokensEnum); + const enumValue = checkValueIfEnum(String(v), tokensEnum, nftsEnum); return enumValue ? `${enumValue}` : JSON.stringify(v); }) .join(", ")}]`; } else { - let valueEnum = checkValueIfEnum(String(value), tokensEnum); + let valueEnum = checkValueIfEnum(String(value), tokensEnum, nftsEnum); let newValue = valueEnum ? valueEnum : JSON.stringify(value); // Currently we don't have chain slugs as values, so can avoid them for now. This is a fix // for the case when we have chain slugs as values, for example sendingLimit = 1. diff --git a/script/setup/enumMaps.ts b/script/setup/enumMaps.ts index ce9fa913..217ab1aa 100644 --- a/script/setup/enumMaps.ts +++ b/script/setup/enumMaps.ts @@ -4,7 +4,7 @@ import { DeploymentMode, IntegrationTypes, } from "@socket.tech/dl-core"; -import { Project, Tokens } from "../../src/enums"; +import { NFTs, Project, Tokens } from "../../src/enums"; import { Hooks } from "../../src"; export const chainSlugReverseMap = createReverseEnumMap(ChainSlug); @@ -25,12 +25,17 @@ function createReverseEnumMap(enumObj: any) { return reverseMap; } -export const getEnumMaps = (tokensEnum: object = Tokens) => { +export const getEnumMaps = ( + tokensEnum: object = Tokens, + nftsEnum: object = NFTs +) => { // tokens is calculating separately because it is updated during setupScript with new token const tokensMap = createReverseEnumMap(tokensEnum); + const nftsMap = createReverseEnumMap(nftsEnum); return { chainSlugMap: chainSlugReverseMap, tokensMap, + nftsMap, integrationTypesMap: integrationTypesreverseMap, deploymentModeMap: deploymentModeReverseMap, hookMap: hookReverseMap, diff --git a/script/setup/updateExistingNFTAddresses.ts b/script/setup/updateExistingNFTAddresses.ts new file mode 100644 index 00000000..74248262 --- /dev/null +++ b/script/setup/updateExistingNFTAddresses.ts @@ -0,0 +1,43 @@ +import fs from "fs"; +import { ChainSlug } from "../../src"; +import { enumFolderPath, serializeConstants } from "./configUtils"; +import { NFTs } from "../../src/enums"; +import { ExistingNFTAddresses } from "../../src/enums"; + +export type NFTAddressObj = { + chainSlug: ChainSlug; + token: NFTs | string; + address: string; +}; +export const generateNFTAddressesFile = ( + tokenAddresses: NFTAddressObj[], + nftsEnum: object = NFTs +) => { + for (const tokenAddressObj of tokenAddresses) { + const { chainSlug, token, address } = tokenAddressObj; + if (!ExistingNFTAddresses[chainSlug]) ExistingNFTAddresses[chainSlug] = {}; + ExistingNFTAddresses[chainSlug][token] = address; + } + const serializedContent = serializeConstants( + ExistingNFTAddresses, + 0, + {}, + nftsEnum + ); + const content = ` + import { ChainSlug } from "@socket.tech/dl-core"; + import { NFTs } from "./nfts"; + + export const ExistingNFTAddresses: { + [key in ChainSlug]?: { [key in NFTs]?: string }; + } = { + ${serializedContent} +}; +`; + fs.writeFileSync(enumFolderPath + "existing-nft-addresses.ts", content); + console.log( + `✔ existing nft addresses file updated : ${ + enumFolderPath + "existing-nft-addresses.ts" + }` + ); +}; diff --git a/src/enums/existing-nft-addresses.ts b/src/enums/existing-nft-addresses.ts new file mode 100644 index 00000000..37ba4d8f --- /dev/null +++ b/src/enums/existing-nft-addresses.ts @@ -0,0 +1,14 @@ +import { ChainSlug } from "@socket.tech/dl-core"; +import { NFTs } from "./nfts"; + +export const ExistingNFTAddresses: { + [key in ChainSlug]?: { [key in NFTs]?: string }; +} = { + [ChainSlug.POLYGON_MAINNET]: { + [NFTs.GOTCHI]: "0x86935F11C86623deC8a25696E1C19a8659CbF95d", + [NFTs.GOTCHI_ITEM]: "0x58de9AaBCaeEC0f69883C94318810ad79Cc6a44f", + [NFTs.FORGE]: "0x4fDfc1B53Fd1D80d969C984ba7a8CE4c7bAaD442", + [NFTs.REALM]: "0x1D0360BaC7299C86Ec8E99d0c1C9A95FEfaF2a11", + [NFTs.INSTALLATION]: "0x19f870bD94A34b3adAa9CaA439d333DA18d6812A", + }, +}; diff --git a/src/enums/index.ts b/src/enums/index.ts index 2e98d740..098cd0fa 100644 --- a/src/enums/index.ts +++ b/src/enums/index.ts @@ -4,3 +4,6 @@ export * from "./existing-token-addresses"; export * from "./tokenSymbol"; export * from "./tokenName"; export * from "./tokenDecimals"; +export * from "./nfts"; +export * from "./nftName"; +export * from "./existing-nft-addresses"; diff --git a/src/enums/nftName.ts b/src/enums/nftName.ts new file mode 100644 index 00000000..1c301450 --- /dev/null +++ b/src/enums/nftName.ts @@ -0,0 +1,9 @@ +import { NFTs } from "./nfts"; + +export const nftName: { [key in NFTs]: string } = { + [NFTs.GOTCHI]: "Aavegotchi", + [NFTs.GOTCHI_ITEM]: "Aavegotchi Item", + [NFTs.FORGE]: "Aavegotchi Forge", + [NFTs.REALM]: "Gotchiverse Realm", + [NFTs.INSTALLATION]: "Gotchiverse Installation", +}; diff --git a/src/enums/nfts.ts b/src/enums/nfts.ts new file mode 100644 index 00000000..de8ef222 --- /dev/null +++ b/src/enums/nfts.ts @@ -0,0 +1,7 @@ +export enum NFTs { + GOTCHI = "GOTCHI", + GOTCHI_ITEM = "GOTCHI_ITEM", + FORGE = "FORGE", + REALM = "REALM", + INSTALLATION = "INSTALLATION", +} From ba9739acfc6802f728eb4f53493acdcd5b923b36 Mon Sep 17 00:00:00 2001 From: orionstardust Date: Mon, 2 Sep 2024 00:32:46 -0400 Subject: [PATCH 03/57] fix: lint --- contracts/bridge/NFT/NFTBase.sol | 8 +++-- contracts/bridge/NFT/NFTController.sol | 12 +++++-- contracts/bridge/NFT/NFTVault.sol | 44 ++++++++++++++++++++------ contracts/interfaces/INFTHook.sol | 15 +++++++-- 4 files changed, 62 insertions(+), 17 deletions(-) diff --git a/contracts/bridge/NFT/NFTBase.sol b/contracts/bridge/NFT/NFTBase.sol index 34f6fd98..e600e9b6 100644 --- a/contracts/bridge/NFT/NFTBase.sol +++ b/contracts/bridge/NFT/NFTBase.sol @@ -61,14 +61,18 @@ abstract contract NFTBase is ReentrancyGuard, INFTBridge, AccessControl { ) external virtual onlyOwner { // remove the approval from the old hook if (bridgeType == ERC721_VAULT) { - if (ERC721(token).isApprovedForAll(address(this), address(hook__))) { + if ( + ERC721(token).isApprovedForAll(address(this), address(hook__)) + ) { ERC721(token).setApprovalForAll(address(hook__), false); } if (approve_) { ERC721(token).setApprovalForAll(hook_, approve_); } } else { - if (ERC1155(token).isApprovedForAll(address(this), address(hook__))) { + if ( + ERC1155(token).isApprovedForAll(address(this), address(hook__)) + ) { ERC1155(token).setApprovalForAll(address(hook__), false); } if (approve_) { diff --git a/contracts/bridge/NFT/NFTController.sol b/contracts/bridge/NFT/NFTController.sol index 0d209f49..e5692398 100644 --- a/contracts/bridge/NFT/NFTController.sol +++ b/contracts/bridge/NFT/NFTController.sol @@ -109,7 +109,11 @@ contract NFTController is NFTBase { _afterRetry(connector_, messageId_, postHookData); } - function _burn(address user_, uint256 burnTokenId_, uint256 burnAmount_) internal virtual { + function _burn( + address user_, + uint256 burnTokenId_, + uint256 burnAmount_ + ) internal virtual { if (interfaceId == ID_ERC721) { IMintableERC721(token).burn(user_, burnTokenId_); } else { @@ -117,7 +121,11 @@ contract NFTController is NFTBase { } } - function _mint(address user_, uint256 mintTokenId_, uint256 mintAmount_) internal virtual { + function _mint( + address user_, + uint256 mintTokenId_, + uint256 mintAmount_ + ) internal virtual { if (mintAmount_ == 0) return; if (interfaceId == ID_ERC721) { IMintableERC721(token).mint(user_, mintTokenId_); diff --git a/contracts/bridge/NFT/NFTVault.sol b/contracts/bridge/NFT/NFTVault.sol index 4971717a..d9704cb2 100644 --- a/contracts/bridge/NFT/NFTVault.sol +++ b/contracts/bridge/NFT/NFTVault.sol @@ -12,11 +12,11 @@ import "solmate/tokens/ERC1155.sol"; * @dev This contract implements ISuperTokenOrVault to support message bridging through IMessageBridge compliant contracts. */ contract NFTVault is NFTBase { - /** - * @notice constructor for creating a new SuperTokenVault. - * @param token_ token contract address which is to be bridged. - * @param interfaceId_ EIP-165 interface id of token contract which is to be bridged. - */ + /** + * @notice constructor for creating a new SuperTokenVault. + * @param token_ token contract address which is to be bridged. + * @param interfaceId_ EIP-165 interface id of token contract which is to be bridged. + */ constructor(address token_, bytes4 interfaceId_) NFTBase(token_) { if (interfaceId_ != ID_ERC721 && interfaceId_ != ID_ERC1155) @@ -94,7 +94,11 @@ contract NFTVault is NFTBase { transferInfo ); - _transferTokens(transferInfo.receiver, transferInfo.tokenId, transferInfo.amount); + _transferTokens( + transferInfo.receiver, + transferInfo.tokenId, + transferInfo.amount + ); _afterMint(unlockAmount, messageId, postHookData, transferInfo); } @@ -113,17 +117,31 @@ contract NFTVault is NFTBase { bytes memory postHookData, NFTTransferInfo memory transferInfo ) = _beforeRetry(connector_, messageId_); - _transferTokens(transferInfo.receiver, transferInfo.tokenId, transferInfo.amount); + _transferTokens( + transferInfo.receiver, + transferInfo.tokenId, + transferInfo.amount + ); _afterRetry(connector_, messageId_, postHookData); } - function _transferTokens(address receiver_, uint256 tokenId_, uint256 amount_) internal { + function _transferTokens( + address receiver_, + uint256 tokenId_, + uint256 amount_ + ) internal { if (amount_ == 0) return; if (bridgeType == ERC721_VAULT) { ERC721(token).safeTransferFrom(address(this), receiver_, tokenId_); } else { - ERC1155(token).safeTransferFrom(address(this), receiver_, tokenId_, amount_, new bytes(0)); + ERC1155(token).safeTransferFrom( + address(this), + receiver_, + tokenId_, + amount_, + new bytes(0) + ); } } @@ -132,7 +150,13 @@ contract NFTVault is NFTBase { if (bridgeType == ERC721_VAULT) { ERC721(token).safeTransferFrom(msg.sender, address(this), tokenId_); } else { - ERC1155(token).safeTransferFrom(msg.sender, address(this), tokenId_, amount_, new bytes(0)); + ERC1155(token).safeTransferFrom( + msg.sender, + address(this), + tokenId_, + amount_, + new bytes(0) + ); } } } diff --git a/contracts/interfaces/INFTHook.sol b/contracts/interfaces/INFTHook.sol index 13d5bccc..acb12c37 100644 --- a/contracts/interfaces/INFTHook.sol +++ b/contracts/interfaces/INFTHook.sol @@ -15,7 +15,10 @@ interface INFTHook { SrcPreHookNFTCallParams calldata params_ ) external - returns (NFTTransferInfo memory transferInfo, bytes memory postHookData); + returns ( + NFTTransferInfo memory transferInfo, + bytes memory postHookData + ); function srcPostHookCall( SrcPostHookNFTCallParams calldata params_ @@ -30,7 +33,10 @@ interface INFTHook { DstPreHookNFTCallParams calldata params_ ) external - returns (bytes memory postHookData, NFTTransferInfo memory transferInfo); + returns ( + bytes memory postHookData, + NFTTransferInfo memory transferInfo + ); /** * @notice Executes post-hook call for destination underlyingAsset. @@ -53,7 +59,10 @@ interface INFTHook { PreRetryHookCallParams calldata params_ ) external - returns (bytes memory postHookData, NFTTransferInfo memory transferInfo); + returns ( + bytes memory postHookData, + NFTTransferInfo memory transferInfo + ); /** * @notice Executes a post-retry hook for a failed transaction. From 96758e0ba0f3b7236c406528a9f7a36638ba1d60 Mon Sep 17 00:00:00 2001 From: orionstardust Date: Tue, 3 Sep 2024 23:05:43 -0400 Subject: [PATCH 04/57] feat: add script for new NFT project --- script/setup/common.ts | 3 +- script/setup/configUtils.ts | 4 +- script/setup/generateConstants.ts | 9 ++- script/setup/newProject/main.ts | 101 +++++++++++++++++-------- script/setup/newProject/nftInfo.ts | 67 ++++++++++++++++ script/setup/newProject/projectInfo.ts | 21 ++++- script/setup/newProject/utils.ts | 30 +++++++- src/enum.ts | 6 ++ src/types.ts | 4 +- 9 files changed, 202 insertions(+), 43 deletions(-) create mode 100644 script/setup/newProject/nftInfo.ts diff --git a/script/setup/common.ts b/script/setup/common.ts index 3706890f..14819c81 100644 --- a/script/setup/common.ts +++ b/script/setup/common.ts @@ -5,7 +5,7 @@ import { isContractAtAddress, rpcKeys, } from "../helpers"; -import { Hooks, ProjectType } from "../../src"; +import { Hooks, ProjectType, TokenType } from "../../src"; import { StaticJsonRpcProvider } from "@ethersproject/providers"; import { Tokens } from "../../src/enums"; @@ -14,6 +14,7 @@ export type ProjectConfig = { projectName: string; hookType: Hooks; owner: string; + tokenType: TokenType; isMainnet: boolean; newToken?: boolean; }; diff --git a/script/setup/configUtils.ts b/script/setup/configUtils.ts index b69a45ed..615cbd03 100644 --- a/script/setup/configUtils.ts +++ b/script/setup/configUtils.ts @@ -19,7 +19,7 @@ export const buildEnvFile = async ( projectName: string, projectType: ProjectType, ownerAddress: string, - tokens: Tokens[], + tokens: Tokens[] | NFTs[], chains: ChainSlug[] ) => { let { publicEnvData, privateEnvData } = getProjectEnvData( @@ -60,7 +60,7 @@ export const getProjectEnvData = ( projectName: string, projectType: ProjectType, ownerAddress: string, - tokens: Tokens[], + tokens: Tokens[] | NFTs[], chains: ChainSlug[] ) => { let publicEnvData: Record = { diff --git a/script/setup/generateConstants.ts b/script/setup/generateConstants.ts index d238c056..9f7851c8 100644 --- a/script/setup/generateConstants.ts +++ b/script/setup/generateConstants.ts @@ -2,13 +2,14 @@ import fs from "fs"; import { ProjectConstants, ProjectType } from "../../src"; import path from "path"; import { serializeConstants } from "./configUtils"; -import { Tokens } from "../../src/enums"; +import { NFTs, Tokens } from "../../src/enums"; export const generateConstantsFile = ( projectType: ProjectType, projectName: string, projectConstants: ProjectConstants, - tokensEnum: object = Tokens + tokensEnum: object = Tokens, + nftsEnum: object = NFTs ) => { let filePath = path.join( __dirname, @@ -22,11 +23,11 @@ import { IntegrationTypes, } from "@socket.tech/dl-core"; import { Hooks, ProjectConstants } from "../../../../src"; -import { Tokens } from "../../../../src/enums"; +import { NFTs, Tokens } from "../../../../src/enums"; // For testnet deployments, ChainSlug enum may not have some chains, therefore some keys will look like {421614:{}} instead of {[ChainSlug.ARBITRUM_SEPOLIA]:{}}. This wont affect the functionality of the project. export const pc: ProjectConstants = { -${serializeConstants(projectConstants, 1, tokensEnum)} +${serializeConstants(projectConstants, 1, tokensEnum, nftsEnum)} }; `; fs.writeFileSync(filePath, content); diff --git a/script/setup/newProject/main.ts b/script/setup/newProject/main.ts index 97639955..83fd4df6 100644 --- a/script/setup/newProject/main.ts +++ b/script/setup/newProject/main.ts @@ -1,12 +1,14 @@ import { ChainSlug } from "@socket.tech/dl-core"; -import { Tokens } from "../../../src/enums"; +import { NFTs, Tokens } from "../../../src/enums"; import { buildEnvFile, updateProjectEnums } from "../configUtils"; import { generateConstantsFile } from "../generateConstants"; import { getChainsInfo } from "./chainInfo"; import { getHookRelatedInfo } from "./hookInfo"; import { getProjectInfo } from "./projectInfo"; import { getProjectTokenListInfo } from "./tokenInfo"; -import { buildProjectConstants } from "./utils"; +import { buildNFTProjectConstants, buildProjectConstants } from "./utils"; +import { TokenType } from "../../../src"; +import { getProjectNFTInfo } from "./nftInfo"; export type TokenRateLimits = Record< string, @@ -37,11 +39,21 @@ export type TokenInfo = { }; }; +export type NFTInfo = { + nft: NFTs; + nftAddresses?: { + [key in NFTs]?: { + [chainslug in ChainSlug]?: string; + }; + }; +}; + export type ChainsInfo = { vaultChains: ChainSlug[]; controllerChains: ChainSlug[]; }; export const tokenEnum = Tokens; +export const nftEnum = NFTs; export const addProject = async () => { const projectConfig = await getProjectInfo(); @@ -50,6 +62,7 @@ export const addProject = async () => { projectType, hookType, owner, + tokenType, isLimitsRequired, chainOptions, } = projectConfig; @@ -58,38 +71,62 @@ export const addProject = async () => { const { vaultChains, controllerChains } = chainsInfo; const allChains = [...chainsInfo.vaultChains, ...chainsInfo.controllerChains]; - const tokenInfo: TokenInfo = await getProjectTokenListInfo( - projectType, - owner, - vaultChains, - controllerChains - ); - const { tokenLimitInfo } = await getHookRelatedInfo( - projectType, - isLimitsRequired, - tokenInfo.tokens, - tokenInfo.superTokenInfoMap - ); - await updateProjectEnums(projectConfig.projectName, projectType); - console.log(`✔ Updated Enums :Project`); - await buildEnvFile( - projectConfig.projectName, - projectConfig.projectType, - projectConfig.owner, - tokenInfo.tokens, - allChains - ); + if (tokenType === TokenType.ERC20) { + const tokenInfo: TokenInfo = await getProjectTokenListInfo( + projectType, + owner, + vaultChains, + controllerChains + ); + const { tokenLimitInfo } = await getHookRelatedInfo( + projectType, + isLimitsRequired, + tokenInfo.tokens, + tokenInfo.superTokenInfoMap + ); + await updateProjectEnums(projectConfig.projectName, projectType); + console.log(`✔ Updated Enums :Project`); + await buildEnvFile( + projectConfig.projectName, + projectConfig.projectType, + projectConfig.owner, + tokenInfo.tokens, + allChains + ); - const projectConstants = await buildProjectConstants( - tokenInfo, - chainsInfo, - hookType, - isLimitsRequired, - tokenLimitInfo, - allChains - ); - generateConstantsFile(projectType, projectName, projectConstants); + const projectConstants = await buildProjectConstants( + tokenInfo, + chainsInfo, + hookType, + isLimitsRequired, + tokenLimitInfo, + allChains + ); + generateConstantsFile(projectType, projectName, projectConstants); + } else { + // ERC721, 1155 + const nftInfo: NFTInfo = await getProjectNFTInfo( + projectType, + vaultChains, + controllerChains + ); + await updateProjectEnums(projectConfig.projectName, projectType); + console.log(`✔ Updated Enums :Project`); + await buildEnvFile( + projectConfig.projectName, + projectConfig.projectType, + projectConfig.owner, + [nftInfo.nft], + allChains + ); + const projectConstants = await buildNFTProjectConstants( + nftInfo, + chainsInfo, + hookType + ); + generateConstantsFile(projectType, projectName, projectConstants); + } console.log( `✔ Setup done! You can run this script again to add new projects, add new tokens, or edit project` ); diff --git a/script/setup/newProject/nftInfo.ts b/script/setup/newProject/nftInfo.ts new file mode 100644 index 00000000..c357c648 --- /dev/null +++ b/script/setup/newProject/nftInfo.ts @@ -0,0 +1,67 @@ +import { ChainSlug } from "@socket.tech/dl-core"; +import prompts from "prompts"; +import { ProjectType } from "../../../src"; +import { ExistingNFTAddresses, NFTs } from "../../../src/enums"; +import { validateEthereumAddress } from "../common"; +import { nftEnum, NFTInfo } from "./main"; +import { getChainName } from "../../constants"; + +export const getProjectNFTInfo = async ( + projectType: ProjectType, + vaultChains: ChainSlug[], + controllerChains: ChainSlug[] +): Promise => { + const nftChoices = Object.keys(nftEnum).map((nft) => ({ + title: nft, + value: nftEnum[nft], + })); + if (projectType == ProjectType.SUPERBRIDGE) { + const response = await prompts([ + { + name: "nft", + type: "select", + message: + "Select the NFT to connect (the NFT we want to allow users to bridge to app chain)", + choices: nftChoices, + }, + ]); + const nft = response.nft as NFTs; + const nftAddresses = await getSuperbridgeMissingNFTAddresses(nft, [ + ...vaultChains, + ...controllerChains, + ]); + + return { nft, nftAddresses }; + } else if (projectType === ProjectType.SUPERTOKEN) { + console.log(`SUPERTOKEN project not supported for NFT now`); + } +}; + +export const getSuperbridgeMissingNFTAddresses = async ( + nft: NFTs, + chainList: number[] +) => { + const nftAddresses: { + [key in NFTs]?: { + [chainslug: number]: string; + }; + } = {}; + + nftAddresses[nft] = {}; + for (const chain of chainList) { + const currentAddress = ExistingNFTAddresses[chain]?.[nft]; + if (currentAddress) continue; + const response = await prompts([ + { + name: "address", + type: "text", + message: `Enter the address of the deployed NFT ${nft} on the chain ${getChainName( + chain + )}`, + validate: (value) => validateEthereumAddress(value.trim()), + }, + ]); + nftAddresses[nft][chain] = response.address; + } + return nftAddresses; +}; diff --git a/script/setup/newProject/projectInfo.ts b/script/setup/newProject/projectInfo.ts index 7ec5041f..120b2d9b 100644 --- a/script/setup/newProject/projectInfo.ts +++ b/script/setup/newProject/projectInfo.ts @@ -1,5 +1,5 @@ import prompts from "prompts"; -import { DeploymentMode, Hooks, ProjectType } from "../../../src"; +import { DeploymentMode, Hooks, ProjectType, TokenType } from "../../../src"; import { getChainName, getMainnetIds, @@ -60,6 +60,25 @@ export const getProjectInfo = async () => { ], message: "Select Hook type (Recommended: Limit Hook)", }, + { + name: "tokenType", + type: "select", + choices: [ + { + title: "ERC20", + value: TokenType.ERC20, + }, + { + title: "ERC721", + value: TokenType.ERC721, + }, + { + title: "ERC1155", + value: TokenType.ERC1155, + }, + ], + message: "Select Token type", + }, { name: "isMainnet", type: "toggle", diff --git a/script/setup/newProject/utils.ts b/script/setup/newProject/utils.ts index 4f116251..1635cf61 100644 --- a/script/setup/newProject/utils.ts +++ b/script/setup/newProject/utils.ts @@ -8,7 +8,13 @@ import { import { Tokens } from "../../../src/enums"; import { getMode } from "../../constants"; import { initialLimitsForSuperbridge } from "../common"; -import { ChainsInfo, SuperTokenInfo, TokenInfo, TokenRateLimits } from "./main"; +import { + ChainsInfo, + NFTInfo, + SuperTokenInfo, + TokenInfo, + TokenRateLimits, +} from "./main"; export const buildProjectConstants = async ( tokenInfo: TokenInfo, @@ -57,6 +63,28 @@ export const buildProjectConstants = async ( return JSON.parse(JSON.stringify(projectConstants)); // stringify and parse to remove undefined values }; +export const buildNFTProjectConstants = async ( + nftInfo: NFTInfo, + chainsInfo: ChainsInfo, + hookType: Hooks +) => { + const deploymentMode = getMode(); + const projectConstants: ProjectConstants = { + [deploymentMode]: {}, + }; + + const { nft, nftAddresses } = nftInfo; + projectConstants[deploymentMode][nft] = { + vaultChains: chainsInfo.vaultChains, + controllerChains: chainsInfo.controllerChains, + tokenAddresses: nftAddresses?.[nft], + hook: { + hookType, + }, + }; + return JSON.parse(JSON.stringify(projectConstants)); // stringify and parse to remove undefined values +}; + export const getInitialLimitValue = async ( projectType: ProjectType, token: Tokens, diff --git a/src/enum.ts b/src/enum.ts index 23c87dda..a7d735bf 100644 --- a/src/enum.ts +++ b/src/enum.ts @@ -45,3 +45,9 @@ export enum SuperTokenContracts { NonSuperToken = "NonSuperToken", SuperToken = "SuperToken", } + +export enum TokenType { + ERC20 = "ERC20", + ERC721 = "ERC721", + ERC1155 = "ERC1155", +} diff --git a/src/types.ts b/src/types.ts index 7db6d979..a67331e6 100644 --- a/src/types.ts +++ b/src/types.ts @@ -8,7 +8,7 @@ import { SuperBridgeContracts, SuperTokenContracts, } from "./enum"; -import { Project, Tokens } from "./enums"; +import { NFTs, Project, Tokens } from "./enums"; export type ProjectConstantsMap = { [key in Project]: ProjectConstants; @@ -16,7 +16,7 @@ export type ProjectConstantsMap = { export type ProjectConstants = { [key in DeploymentMode]?: { - [key in Tokens]?: TokenConstants; + [key in Tokens | NFTs]?: TokenConstants; }; }; From 82d66f18f355ca6302cce05f310e37755522717d Mon Sep 17 00:00:00 2001 From: orionstardust Date: Thu, 5 Sep 2024 23:50:06 -0400 Subject: [PATCH 05/57] fix --- script/constants/config.ts | 32 ++++++++++++++++++++++---------- script/setup/configUtils.ts | 6 +++++- script/setup/newProject/main.ts | 18 ++++++++++-------- src/types.ts | 6 +++--- 4 files changed, 40 insertions(+), 22 deletions(-) diff --git a/script/constants/config.ts b/script/constants/config.ts index 5f85871c..a7a52221 100644 --- a/script/constants/config.ts +++ b/script/constants/config.ts @@ -1,11 +1,12 @@ import { config as dotenvConfig } from "dotenv"; -dotenvConfig(); - import { DeploymentMode } from "@socket.tech/dl-core"; -import { Project, Tokens } from "../../src/enums"; -import { ProjectType } from "../../src"; +import { NFTs, Project, Tokens } from "../../src/enums"; +import { ProjectType, TokenType } from "../../src"; import { ProjectTypeMap } from "../../src/enums/projectType"; import { ProdTestnetProjects } from "../../src/enums/prodTestnetProjects"; + +dotenvConfig(); + // import { Project, ProjectType, Tokens } from "../../src"; export const getOwner = () => { @@ -73,16 +74,24 @@ export const isSuperToken = () => getProjectType() === ProjectType.SUPERTOKEN; export const getTokens = () => { if (!process.env.TOKENS) throw new Error("TOKENS not mentioned"); - let tokens = process.env.TOKENS.split(",").map( - (token) => token.trim() as Tokens - ); + let tokens = process.env.TOKENS.split(",").map((token) => token.trim()); tokens.forEach((token) => { - if (!Object.values(Tokens).includes(token as Tokens)) + if ( + !Object.values(Tokens).includes(token as Tokens) && + !Object.values(NFTs).includes(token as NFTs) + ) throw new Error("TOKENS are invalid"); }); return tokens; }; +export const getTokenTypes = () => { + if (!process.env.TOKEN_TYPES) throw new Error("TOKEN_TYPES not mentioned"); + return process.env.TOKEN_TYPES.split(",").map( + (tokenType) => tokenType.trim() as TokenType + ); +}; + export const getDryRun = () => { if (!process.env.DRY_RUN) return false; if (process.env.DRY_RUN !== "true" && process.env.DRY_RUN !== "false") @@ -94,17 +103,20 @@ export const getConfigs = () => { let projectType = getProjectType(); let projectName = getProjectName(); let tokens = getTokens(); + let tokenTypes = getTokenTypes(); let mode = getMode(); let socketOwner = getOwner(); - return { projectType, projectName, tokens, mode, socketOwner }; + return { projectType, projectName, tokens, tokenTypes, mode, socketOwner }; }; export const printConfigs = () => { - let { projectType, projectName, tokens, mode, socketOwner } = getConfigs(); + let { projectType, projectName, tokens, tokenTypes, mode, socketOwner } = + getConfigs(); console.log("========================================================"); console.log("PROJECT", projectName); console.log("PROJECT_TYPE", projectType); console.log("TOKENS", tokens); + console.log("TOKEN_TYPES", tokenTypes); console.log("MODE", mode); console.log( `Make sure ${mode}_${projectName}_addresses.json and ${mode}_${projectName}_verification.json is cleared for given networks if redeploying!!` diff --git a/script/setup/configUtils.ts b/script/setup/configUtils.ts index 615cbd03..d8196cf8 100644 --- a/script/setup/configUtils.ts +++ b/script/setup/configUtils.ts @@ -8,7 +8,7 @@ import { getEnumMaps, projectReverseMap, } from "./enumMaps"; -import { ProjectType } from "../../src"; +import { ProjectType, TokenType } from "../../src"; import { NewTokenInfo } from "./common"; import { getChainName } from "../constants"; @@ -20,6 +20,7 @@ export const buildEnvFile = async ( projectType: ProjectType, ownerAddress: string, tokens: Tokens[] | NFTs[], + tokenTypes: TokenType[], chains: ChainSlug[] ) => { let { publicEnvData, privateEnvData } = getProjectEnvData( @@ -27,6 +28,7 @@ export const buildEnvFile = async ( projectType, ownerAddress, tokens, + tokenTypes, chains ); let finalEnvData: Record; @@ -61,11 +63,13 @@ export const getProjectEnvData = ( projectType: ProjectType, ownerAddress: string, tokens: Tokens[] | NFTs[], + tokenTypes: TokenType[], chains: ChainSlug[] ) => { let publicEnvData: Record = { PROJECT: projectName, TOKENS: tokens.join(","), + TOKEN_TYPES: tokenTypes.join(","), OWNER_ADDRESS: ownerAddress, DRY_RUN: "false", }; diff --git a/script/setup/newProject/main.ts b/script/setup/newProject/main.ts index 83fd4df6..d2358e0c 100644 --- a/script/setup/newProject/main.ts +++ b/script/setup/newProject/main.ts @@ -84,13 +84,14 @@ export const addProject = async () => { tokenInfo.tokens, tokenInfo.superTokenInfoMap ); - await updateProjectEnums(projectConfig.projectName, projectType); + await updateProjectEnums(projectName, projectType); console.log(`✔ Updated Enums :Project`); await buildEnvFile( - projectConfig.projectName, - projectConfig.projectType, - projectConfig.owner, + projectName, + projectType, + owner, tokenInfo.tokens, + new Array(tokenInfo.tokens.length).fill(tokenType), allChains ); @@ -110,13 +111,14 @@ export const addProject = async () => { vaultChains, controllerChains ); - await updateProjectEnums(projectConfig.projectName, projectType); + await updateProjectEnums(projectName, projectType); console.log(`✔ Updated Enums :Project`); await buildEnvFile( - projectConfig.projectName, - projectConfig.projectType, - projectConfig.owner, + projectName, + projectType, + owner, [nftInfo.nft], + [tokenType], allChains ); diff --git a/src/types.ts b/src/types.ts index a67331e6..7cdc4d0d 100644 --- a/src/types.ts +++ b/src/types.ts @@ -101,7 +101,7 @@ export type SBTokenAddresses = AppChainAddresses | NonAppChainAddresses; export type SBAddresses = { [chainSlug in ChainSlug]?: { - [token in Tokens]?: SBTokenAddresses; + [token in Tokens | NFTs]?: SBTokenAddresses; }; }; @@ -121,7 +121,7 @@ export type STTokenAddresses = export type STAddresses = { [chainSlug in ChainSlug]?: { - [token in Tokens]?: STTokenAddresses; + [token in Tokens | NFTs]?: STTokenAddresses; }; }; @@ -129,7 +129,7 @@ export interface DeployParams { addresses: SBTokenAddresses | STTokenAddresses; signer: Wallet; currentChainSlug: number; - currentToken: Tokens; + currentToken: Tokens | NFTs; hookType?: Hooks; mergeInboundWithTokens: Tokens[]; tc: TokenConstants; From d3ad866d4ccb5cdb9ddfa4daa01d7c9874c5701d Mon Sep 17 00:00:00 2001 From: orionstardust Date: Fri, 6 Sep 2024 02:31:27 -0400 Subject: [PATCH 06/57] feat: add deploy script for NFT Superbridge --- script/deploy/deploy.ts | 104 ++++++++++++++++++++++++++-------------- src/enum.ts | 2 + src/types.ts | 2 + 3 files changed, 73 insertions(+), 35 deletions(-) diff --git a/script/deploy/deploy.ts b/script/deploy/deploy.ts index e6730df4..3618862c 100644 --- a/script/deploy/deploy.ts +++ b/script/deploy/deploy.ts @@ -1,19 +1,15 @@ import { config as dotenvConfig } from "dotenv"; -dotenvConfig(); - import { EventEmitter } from "events"; -EventEmitter.defaultMaxListeners = 20; - -import { Contract, Wallet } from "ethers"; +import { constants, Contract, Wallet } from "ethers"; import { getSignerFromChainSlug } from "../helpers/networks"; import { ChainSlug, IntegrationTypes } from "@socket.tech/dl-core"; import { + getConfigs, + getDryRun, getMode, isSuperBridge, isSuperToken, - getConfigs, printConfigs, - getDryRun, } from "../constants/config"; import { createObj, @@ -24,47 +20,54 @@ import { storeTokenAddresses, } from "../helpers"; import { - SuperBridgeContracts, + CommonContracts, + DeployParams, Hooks, ProjectType, - TokenContracts, - CommonContracts, - SuperTokenContracts, - TokenConstants, - STTokenAddresses, - SBTokenAddresses, + ReturnObj, SBAddresses, + SBTokenAddresses, STAddresses, - DeployParams, - ReturnObj, + STTokenAddresses, + SuperBridgeContracts, + SuperTokenContracts, + TokenConstants, + TokenContracts, + TokenType, } from "../../src"; -import { isSBAppChain, getTokenConstants } from "../helpers/projectConstants"; +import { getTokenConstants, isSBAppChain } from "../helpers/projectConstants"; import { ExistingTokenAddresses } from "../../src/enums/existing-token-addresses"; import { deployHookContracts } from "./deployHook"; import { verifyConstants } from "../helpers/verifyConstants"; import { getBridgeContract } from "../helpers/common"; -import { Project, Tokens } from "../../src/enums"; +import { NFTs, Project, Tokens } from "../../src/enums"; import { parseUnits } from "ethers/lib/utils"; - -import { constants } from "ethers"; import { getAddresses } from "../constants"; + +dotenvConfig(); + +EventEmitter.defaultMaxListeners = 20; + const { AddressZero } = constants; let projectType: ProjectType; let pc: { [token: string]: TokenConstants } = {}; let projectName: string; -let tokens: Tokens[]; +let tokens: string[]; +let tokenTypes: TokenType[]; /** * Deploys contracts for all networks */ export const deploy = async () => { await verifyConstants(); - ({ projectName, projectType, tokens } = getConfigs()); + ({ projectName, projectType, tokens, tokenTypes } = getConfigs()); printConfigs(); let allAddresses: SBAddresses | STAddresses = {}; - for (let token of tokens) { + for (let index = 0; index < tokens.length; index++) { + const token = tokens[index]; + const tokenType = tokenTypes[index]; console.log(`Deploying contracts for ${token}...`); pc[token] = getTokenConstants(token); @@ -109,6 +112,7 @@ export const deploy = async () => { signer, chain, token, + tokenType, siblings, hookType, tokenAddresses, @@ -134,7 +138,8 @@ const deployChainContracts = async ( isVaultChain: boolean, socketSigner: Wallet, chainSlug: number, - token: Tokens, + token: Tokens | NFTs, + tokenType: TokenType, siblings: number[], hookType: Hooks, deployedAddresses: SBTokenAddresses | STTokenAddresses, @@ -148,6 +153,7 @@ const deployChainContracts = async ( signer: socketSigner, currentChainSlug: chainSlug, currentToken: token, + currentTokenType: tokenType, hookType, mergeInboundWithTokens: tc.mergeInboundWithTokens ?? [], tc, @@ -281,7 +287,8 @@ export const deployControllerChainContracts = async ( controller: Contract, contractName: string = "", controllerAddress: string = "", - contractPath: string = ""; + contractPath: string = "", + contractArgs: any[]; if (isSuperToken()) { deployParams = await deploySuperToken(deployParams); @@ -308,13 +315,26 @@ export const deployControllerChainContracts = async ( deployParams.addresses[SuperBridgeContracts.MintableToken] = mintableToken; - contractName = deployParams.tc.isFiatTokenV2_1 - ? SuperBridgeContracts.FiatTokenV2_1_Controller - : SuperBridgeContracts.Controller; - contractPath = deployParams.tc.isFiatTokenV2_1 - ? "contracts/bridge/FiatTokenV2_1/FiatTokenV2_1_Controller.sol" - : "contracts/bridge/Controller.sol"; + contractName = + deployParams.currentTokenType === TokenType.ERC20 + ? deployParams.tc.isFiatTokenV2_1 + ? SuperBridgeContracts.FiatTokenV2_1_Controller + : SuperBridgeContracts.Controller + : SuperBridgeContracts.NFTController; + contractPath = + deployParams.currentTokenType === TokenType.ERC20 + ? deployParams.tc.isFiatTokenV2_1 + ? "contracts/bridge/FiatTokenV2_1/FiatTokenV2_1_Controller.sol" + : "contracts/bridge/Controller.sol" + : "contracts/bridge/NFT/NFTController.sol"; + contractArgs = + deployParams.currentTokenType === TokenType.ERC721 + ? [mintableToken, "0x73ad2146"] + : deployParams.currentTokenType === TokenType.ERC1155 + ? [mintableToken, "0x973bb640"] + : [mintableToken]; } + if (!contractArgs) contractArgs = [mintableToken]; // If controller address is already in addresses object, skip // If mergeInboundWithTokens is provided, pick the first token's controller address which is present. @@ -345,7 +365,7 @@ export const deployControllerChainContracts = async ( controller = await getOrDeploy( contractName, contractPath, - [mintableToken], + contractArgs, deployParams ); @@ -389,10 +409,24 @@ export const deployVaultChainContracts = async ( deployParams.addresses[SuperBridgeContracts.NonMintableToken] = nonMintableToken; + const contractName = + deployParams.currentTokenType === TokenType.ERC20 + ? SuperBridgeContracts.Vault + : SuperBridgeContracts.NFTVault; + const contractPath = + deployParams.currentTokenType === TokenType.ERC20 + ? "contracts/bridge/Vault.sol" + : "contracts/bridge/NFT/NFTVault.sol"; + const contractArgs = + deployParams.currentTokenType === TokenType.ERC721 + ? [nonMintableToken, "0x73ad2146"] + : deployParams.currentTokenType === TokenType.ERC1155 + ? [nonMintableToken, "0x973bb640"] + : [nonMintableToken]; const vault: Contract = await getOrDeploy( - SuperBridgeContracts.Vault, - "contracts/bridge/Vault.sol", - [nonMintableToken], + contractName, + contractPath, + contractArgs, deployParams ); diff --git a/src/enum.ts b/src/enum.ts index a7d735bf..d584a827 100644 --- a/src/enum.ts +++ b/src/enum.ts @@ -32,6 +32,8 @@ export enum SuperBridgeContracts { FiatTokenV2_1_Controller = "FiatTokenV2_1_Controller", ExchangeRate = "ExchangeRate", ConnectorPlug = "ConnectorPlug", + NFTVault = "NFTVault", + NFTController = "NFTController", } export enum HookContracts { diff --git a/src/types.ts b/src/types.ts index 7cdc4d0d..c17270a9 100644 --- a/src/types.ts +++ b/src/types.ts @@ -7,6 +7,7 @@ import { ProjectType, SuperBridgeContracts, SuperTokenContracts, + TokenType, } from "./enum"; import { NFTs, Project, Tokens } from "./enums"; @@ -130,6 +131,7 @@ export interface DeployParams { signer: Wallet; currentChainSlug: number; currentToken: Tokens | NFTs; + currentTokenType: TokenType; hookType?: Hooks; mergeInboundWithTokens: Tokens[]; tc: TokenConstants; From 9dd3ce6f60cc89cb95d7ae17eb14ef1e4796cbd1 Mon Sep 17 00:00:00 2001 From: orionstardust Date: Wed, 11 Sep 2024 14:56:20 -0400 Subject: [PATCH 07/57] feat: add totalMinted for new NFT project --- contracts/bridge/NFT/NFTController.sol | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/contracts/bridge/NFT/NFTController.sol b/contracts/bridge/NFT/NFTController.sol index e5692398..1c60b249 100644 --- a/contracts/bridge/NFT/NFTController.sol +++ b/contracts/bridge/NFT/NFTController.sol @@ -6,6 +6,7 @@ import {IMintableERC721} from "../../interfaces/IMintableERC721.sol"; import {IMintableERC1155} from "../../interfaces/IMintableERC1155.sol"; contract NFTController is NFTBase { + mapping(uint256 => uint256) public totalMinted; bytes4 private interfaceId; constructor(address token_, bytes4 interfaceId_) NFTBase(token_) { @@ -44,6 +45,7 @@ contract NFTController is NFTBase { ); // to maintain socket dl specific accounting for super token + totalMinted[transferInfo.tokenId] -= transferInfo.amount; _burn(msg.sender, transferInfo.tokenId, transferInfo.amount); _afterBridge( msgGasLimit_, @@ -86,6 +88,7 @@ contract NFTController is NFTBase { ); _mint(transferInfo.receiver, transferInfo.tokenId, transferInfo.amount); + totalMinted[transferInfo.tokenId] += transferInfo.amount; _afterMint(lockAmount, messageId, postHookData, transferInfo); } @@ -105,6 +108,7 @@ contract NFTController is NFTBase { NFTTransferInfo memory transferInfo ) = _beforeRetry(connector_, messageId_); _mint(transferInfo.receiver, transferInfo.tokenId, transferInfo.amount); + totalMinted[transferInfo.tokenId] += transferInfo.amount; _afterRetry(connector_, messageId_, postHookData); } From e53dbfa92fa503765c17c928e181d9cc8ddf46f8 Mon Sep 17 00:00:00 2001 From: orionstardust Date: Thu, 19 Sep 2024 10:30:47 -0400 Subject: [PATCH 08/57] feat: add interface for NFT metadata --- contracts/bridge/NFT/NFTBase.sol | 8 ++++++++ contracts/interfaces/INFTMetadata.sol | 6 ++++++ 2 files changed, 14 insertions(+) create mode 100644 contracts/interfaces/INFTMetadata.sol diff --git a/contracts/bridge/NFT/NFTBase.sol b/contracts/bridge/NFT/NFTBase.sol index e600e9b6..db7b7bef 100644 --- a/contracts/bridge/NFT/NFTBase.sol +++ b/contracts/bridge/NFT/NFTBase.sol @@ -7,6 +7,7 @@ import "solmate/tokens/ERC1155.sol"; import {IConnector} from "../../interfaces/IConnector.sol"; import "../../interfaces/INFTHook.sol"; import "../../interfaces/INFTBridge.sol"; +import "../../interfaces/INFTMetadata.sol"; import "../../common/Errors.sol"; import "../../common/Constants.sol"; import "../../utils/AccessControl.sol"; @@ -254,6 +255,13 @@ abstract contract NFTBase is ReentrancyGuard, INFTBridge, AccessControl { connectorCache[msg.sender] = cacheData.connectorCache; } + if (transferInfo_.extraData.length > 0) { + INFTMetadata(token).setMetadata( + transferInfo_.tokenId, + transferInfo_.extraData + ); + } + emit TokensBridged( msg.sender, transferInfo_.receiver, diff --git a/contracts/interfaces/INFTMetadata.sol b/contracts/interfaces/INFTMetadata.sol new file mode 100644 index 00000000..c4fad67e --- /dev/null +++ b/contracts/interfaces/INFTMetadata.sol @@ -0,0 +1,6 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.3; + +interface INFTMetadata { + function setMetadata(uint256 tokenId, bytes memory data) external; +} From 95dae49dfa0083fa80f02cabfb6fc6bc534b8419 Mon Sep 17 00:00:00 2001 From: orionstardust Date: Fri, 20 Sep 2024 08:39:53 -0400 Subject: [PATCH 09/57] fix: nft bridge --- contracts/bridge/NFT/NFTController.sol | 4 +++- contracts/bridge/NFT/NFTVault.sol | 18 ++++++++++++++---- contracts/interfaces/INFTBridge.sol | 1 + 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/contracts/bridge/NFT/NFTController.sol b/contracts/bridge/NFT/NFTController.sol index 1c60b249..1aaf4258 100644 --- a/contracts/bridge/NFT/NFTController.sol +++ b/contracts/bridge/NFT/NFTController.sol @@ -20,6 +20,7 @@ contract NFTController is NFTBase { * @notice Bridges tokens between chains. * @dev This function allows bridging tokens between different chains. * @param receiver_ The address to receive the bridged tokens. + * @param tokenOwner_ The owner address of tokens to bridge. * @param tokenId_ The id of token to bridge. * @param amount_ The amount of tokens to bridge. * @param msgGasLimit_ The gas limit for the execution of the bridging process. @@ -29,6 +30,7 @@ contract NFTController is NFTBase { */ function bridge( address receiver_, + address tokenOwner_, uint256 tokenId_, uint256 amount_, uint256 msgGasLimit_, @@ -46,7 +48,7 @@ contract NFTController is NFTBase { // to maintain socket dl specific accounting for super token totalMinted[transferInfo.tokenId] -= transferInfo.amount; - _burn(msg.sender, transferInfo.tokenId, transferInfo.amount); + _burn(tokenOwner_, transferInfo.tokenId, transferInfo.amount); _afterBridge( msgGasLimit_, connector_, diff --git a/contracts/bridge/NFT/NFTVault.sol b/contracts/bridge/NFT/NFTVault.sol index d9704cb2..d701db43 100644 --- a/contracts/bridge/NFT/NFTVault.sol +++ b/contracts/bridge/NFT/NFTVault.sol @@ -28,6 +28,7 @@ contract NFTVault is NFTBase { * @notice Bridges tokens between chains. * @dev This function allows bridging tokens between different chains. * @param receiver_ The address to receive the bridged tokens. + * @param tokenOwner_ The owner address of tokens to bridge. * @param tokenId_ The id of token to bridge. * @param amount_ The amount of tokens to bridge. * @param msgGasLimit_ The gas limit for the execution of the bridging process. @@ -37,6 +38,7 @@ contract NFTVault is NFTBase { */ function bridge( address receiver_, + address tokenOwner_, uint256 tokenId_, uint256 amount_, uint256 msgGasLimit_, @@ -52,7 +54,7 @@ contract NFTVault is NFTBase { NFTTransferInfo(receiver_, tokenId_, amount_, extraData_) ); - _receiveTokens(transferInfo.tokenId, transferInfo.amount); + _receiveTokens(tokenOwner_, transferInfo.tokenId, transferInfo.amount); _afterBridge( msgGasLimit_, @@ -145,13 +147,21 @@ contract NFTVault is NFTBase { } } - function _receiveTokens(uint256 tokenId_, uint256 amount_) internal { + function _receiveTokens( + address tokenOwner_, + uint256 tokenId_, + uint256 amount_ + ) internal { if (amount_ == 0) return; if (bridgeType == ERC721_VAULT) { - ERC721(token).safeTransferFrom(msg.sender, address(this), tokenId_); + ERC721(token).safeTransferFrom( + tokenOwner_, + address(this), + tokenId_ + ); } else { ERC1155(token).safeTransferFrom( - msg.sender, + tokenOwner_, address(this), tokenId_, amount_, diff --git a/contracts/interfaces/INFTBridge.sol b/contracts/interfaces/INFTBridge.sol index 43356bee..cb57a111 100644 --- a/contracts/interfaces/INFTBridge.sol +++ b/contracts/interfaces/INFTBridge.sol @@ -4,6 +4,7 @@ pragma solidity ^0.8.3; interface INFTBridge { function bridge( address receiver_, + address tokenOwner_, uint256 tokenId_, uint256 amount_, uint256 msgGasLimit_, From bacb3fe291af60ec6dbece596862bbe74667aec7 Mon Sep 17 00:00:00 2001 From: orionstardust Date: Mon, 23 Sep 2024 22:50:55 -0400 Subject: [PATCH 10/57] fix: build --- contracts/utils/Faucet.sol | 40 +-------------------------- script/admin/updateConnectorStatus.ts | 2 +- script/admin/updateLimits.ts | 4 +-- script/deploy/configure.ts | 6 ++-- script/deploy/deploy.ts | 2 +- script/helpers/common.ts | 4 +-- script/helpers/deployUtils.ts | 2 +- script/helpers/verifyConstants.ts | 2 +- src/types.ts | 2 +- 9 files changed, 13 insertions(+), 51 deletions(-) diff --git a/contracts/utils/Faucet.sol b/contracts/utils/Faucet.sol index 2f6d4ea6..db23ef78 100644 --- a/contracts/utils/Faucet.sol +++ b/contracts/utils/Faucet.sol @@ -2,6 +2,7 @@ pragma solidity 0.8.13; import "solmate/tokens/ERC20.sol"; +import {RescueFundsLib} from "../libraries/RescueFundsLib.sol"; /// @notice Safe ETH and ERC20 transfer library that gracefully handles missing return values. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/SafeTransferLib.sol) @@ -151,45 +152,6 @@ library SafeTransferLib { error ZeroAddress(); -/** - * @title RescueFundsLib - * @dev A library that provides a function to rescue funds from a contract. - */ - -library RescueFundsLib { - /** - * @dev The address used to identify ETH. - */ - address public constant ETH_ADDRESS = - address(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE); - - /** - * @dev thrown when the given token address don't have any code - */ - error InvalidTokenAddress(); - - /** - * @dev Rescues funds from a contract. - * @param token_ The address of the token contract. - * @param rescueTo_ The address of the user. - * @param amount_ The amount of tokens to be rescued. - */ - function rescueFunds( - address token_, - address rescueTo_, - uint256 amount_ - ) internal { - if (rescueTo_ == address(0)) revert ZeroAddress(); - - if (token_ == ETH_ADDRESS) { - SafeTransferLib.safeTransferETH(rescueTo_, amount_); - } else { - if (token_.code.length == 0) revert InvalidTokenAddress(); - SafeTransferLib.safeTransfer(ERC20(token_), rescueTo_, amount_); - } - } -} - /** * @title Ownable * @dev The Ownable contract provides a simple way to manage ownership of a contract diff --git a/script/admin/updateConnectorStatus.ts b/script/admin/updateConnectorStatus.ts index cefea896..98e73941 100644 --- a/script/admin/updateConnectorStatus.ts +++ b/script/admin/updateConnectorStatus.ts @@ -25,7 +25,7 @@ export enum ConnectorStatus { let projectType: ProjectType; let pc: { [token: string]: TokenConstants } = {}; let projectName: string; -let tokens: Tokens[]; +let tokens: string[]; export const main = async () => { try { diff --git a/script/admin/updateLimits.ts b/script/admin/updateLimits.ts index 7e4dd333..1b875f5e 100644 --- a/script/admin/updateLimits.ts +++ b/script/admin/updateLimits.ts @@ -22,7 +22,7 @@ import { import { Tokens } from "../../src/enums"; let pc: { [token: string]: TokenConstants } = {}; -let tokens: Tokens[]; +let tokens: string[]; export const main = async () => { try { @@ -75,7 +75,7 @@ export const main = async () => { ) { await updateLimitsAndPoolId( chain, - token, + token as Tokens, siblingSlugs, addr, connectors, diff --git a/script/deploy/configure.ts b/script/deploy/configure.ts index 5680b421..07a4b391 100644 --- a/script/deploy/configure.ts +++ b/script/deploy/configure.ts @@ -43,7 +43,7 @@ import { getAddresses } from "../constants"; let projectType: ProjectType; let pc: { [token: string]: TokenConstants } = {}; let projectName: string; -let tokens: Tokens[]; +let tokens: string[]; let socketSignerAddress: string; @@ -126,7 +126,7 @@ export const configure = async (allAddresses: SBAddresses | STAddresses) => { await configureHooks( chain, - token, + token as Tokens, bridgeContract, socketSigner, siblingSlugs, @@ -161,7 +161,7 @@ const connect = async ( addr: SBTokenAddresses | STTokenAddresses, addresses: SBAddresses | STAddresses, chain: ChainSlug, - token: Tokens, + token: string, siblingSlugs: ChainSlug[], socketSigner: Wallet ) => { diff --git a/script/deploy/deploy.ts b/script/deploy/deploy.ts index 3618862c..db681193 100644 --- a/script/deploy/deploy.ts +++ b/script/deploy/deploy.ts @@ -138,7 +138,7 @@ const deployChainContracts = async ( isVaultChain: boolean, socketSigner: Wallet, chainSlug: number, - token: Tokens | NFTs, + token: string, tokenType: TokenType, siblings: number[], hookType: Hooks, diff --git a/script/helpers/common.ts b/script/helpers/common.ts index 62b0c777..324e43f6 100644 --- a/script/helpers/common.ts +++ b/script/helpers/common.ts @@ -81,7 +81,7 @@ export const updateConnectorStatus = async ( export const getBridgeContract = async ( chain: ChainSlug, - token: Tokens, + token: string, addr: SBTokenAddresses | STTokenAddresses ) => { const socketSigner = getSignerFromChainSlug(chain); @@ -161,7 +161,7 @@ export const getTokenContract = async ( export const getHookContract = async ( chain: ChainSlug, - token: Tokens, + token: string, addr: SBTokenAddresses | STTokenAddresses ) => { const socketSigner = getSignerFromChainSlug(chain); diff --git a/script/helpers/deployUtils.ts b/script/helpers/deployUtils.ts index 2a9b1896..159f9add 100644 --- a/script/helpers/deployUtils.ts +++ b/script/helpers/deployUtils.ts @@ -219,7 +219,7 @@ export const getSocket = (chain: ChainSlug, signer: Wallet): Contract => { export const storeTokenAddresses = async ( addresses: SBTokenAddresses, chainSlug: ChainSlug, - tokenName: Tokens + tokenName: string ) => { if (getDryRun()) return; diff --git a/script/helpers/verifyConstants.ts b/script/helpers/verifyConstants.ts index 6c226c20..194f2a32 100644 --- a/script/helpers/verifyConstants.ts +++ b/script/helpers/verifyConstants.ts @@ -11,7 +11,7 @@ import { Tokens } from "../../src/enums"; let projectType: ProjectType; let pc: { [token: string]: TokenConstants } = {}; let projectName: string; -let tokens: Tokens[]; +let tokens: string[]; export const verifyConstants = async () => { ({ projectName, projectType, tokens } = getConfigs()); diff --git a/src/types.ts b/src/types.ts index c17270a9..108b9a94 100644 --- a/src/types.ts +++ b/src/types.ts @@ -130,7 +130,7 @@ export interface DeployParams { addresses: SBTokenAddresses | STTokenAddresses; signer: Wallet; currentChainSlug: number; - currentToken: Tokens | NFTs; + currentToken: string; currentTokenType: TokenType; hookType?: Hooks; mergeInboundWithTokens: Tokens[]; From 18626ad022f132d394e058e270cd032de94849ff Mon Sep 17 00:00:00 2001 From: orionstardust Date: Thu, 26 Sep 2024 22:10:22 -0400 Subject: [PATCH 11/57] fix: issues --- script/deploy/deploy.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/script/deploy/deploy.ts b/script/deploy/deploy.ts index db681193..1466c1e4 100644 --- a/script/deploy/deploy.ts +++ b/script/deploy/deploy.ts @@ -329,9 +329,9 @@ export const deployControllerChainContracts = async ( : "contracts/bridge/NFT/NFTController.sol"; contractArgs = deployParams.currentTokenType === TokenType.ERC721 - ? [mintableToken, "0x73ad2146"] + ? [mintableToken, "0x80ac58cd"] : deployParams.currentTokenType === TokenType.ERC1155 - ? [mintableToken, "0x973bb640"] + ? [mintableToken, "0xd9b67a26"] : [mintableToken]; } if (!contractArgs) contractArgs = [mintableToken]; @@ -419,9 +419,9 @@ export const deployVaultChainContracts = async ( : "contracts/bridge/NFT/NFTVault.sol"; const contractArgs = deployParams.currentTokenType === TokenType.ERC721 - ? [nonMintableToken, "0x73ad2146"] + ? [nonMintableToken, "0x80ac58cd"] : deployParams.currentTokenType === TokenType.ERC1155 - ? [nonMintableToken, "0x973bb640"] + ? [nonMintableToken, "0xd9b67a26"] : [nonMintableToken]; const vault: Contract = await getOrDeploy( contractName, From da29b9b99f9fbffdaf3d2148552798f3ff7138ad Mon Sep 17 00:00:00 2001 From: orionstardust Date: Thu, 26 Sep 2024 22:12:08 -0400 Subject: [PATCH 12/57] feat: add script for new NFT project --- ...e_aavegotchi_bridge_testnet_addresses.json | 26 ++++++++++ ...avegotchi_bridge_testnet_verification.json | 52 +++++++++++++++++++ deployments/superbridge/surge_addresses.json | 26 ++++++++++ .../superbridge/aavegotchi_bridge_testnet.ts | 24 +++++++++ socket-plugs-details.json | 5 +- src/enums/projectType.ts | 1 + src/enums/projects.ts | 1 + 7 files changed, 133 insertions(+), 2 deletions(-) create mode 100644 deployments/superbridge/surge_aavegotchi_bridge_testnet_addresses.json create mode 100644 deployments/superbridge/surge_aavegotchi_bridge_testnet_verification.json create mode 100644 script/constants/projectConstants/superbridge/aavegotchi_bridge_testnet.ts diff --git a/deployments/superbridge/surge_aavegotchi_bridge_testnet_addresses.json b/deployments/superbridge/surge_aavegotchi_bridge_testnet_addresses.json new file mode 100644 index 00000000..7c21f4ff --- /dev/null +++ b/deployments/superbridge/surge_aavegotchi_bridge_testnet_addresses.json @@ -0,0 +1,26 @@ +{ + "80002": { + "GOTCHI": { + "isAppChain": false, + "NonMintableToken": "0xC80DB01aeDAD5F6E3088c75F60E52f579Cf1D3Cb", + "Vault": "0xfc1a9d9898e7a48D75EF6f18F5c042f8fc2E9055", + "connectors": { + "398274": { + "FAST": "0x04e77F231c933df16B4cd24fC8B4F33713E8e79c" + } + } + } + }, + "398274": { + "GOTCHI": { + "isAppChain": true, + "MintableToken": "0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", + "Controller": "0xEa4BE882A0105E44DEF336F8B2d4FB2E317e6877", + "connectors": { + "80002": { + "FAST": "0x672ebFd9dC326211cAC7f91465a576cf0B0aB609" + } + } + } + } +} diff --git a/deployments/superbridge/surge_aavegotchi_bridge_testnet_verification.json b/deployments/superbridge/surge_aavegotchi_bridge_testnet_verification.json new file mode 100644 index 00000000..3d38ef36 --- /dev/null +++ b/deployments/superbridge/surge_aavegotchi_bridge_testnet_verification.json @@ -0,0 +1,52 @@ +{ + "80002": [ + [ + "0x04e77F231c933df16B4cd24fC8B4F33713E8e79c", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0xfc1a9d9898e7a48D75EF6f18F5c042f8fc2E9055", + "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", + 398274, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0xfc1a9d9898e7a48D75EF6f18F5c042f8fc2E9055", + "NFTVault", + "contracts/bridge/NFT/NFTVault.sol", + ["0xC80DB01aeDAD5F6E3088c75F60E52f579Cf1D3Cb", "0x80ac58cd"] + ] + ], + "398274": [ + [ + "0xEa4BE882A0105E44DEF336F8B2d4FB2E317e6877", + "NFTController", + "contracts/bridge/NFT/NFTController.sol", + ["0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", "0x80ac58cd"] + ], + [ + "0x1D19bA288802A1029a6523F5Ff2eb20A4E77bF78", + "NFTController", + "contracts/bridge/NFT/NFTController.sol", + ["0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", "0x80ac58cd"] + ], + [ + "0x672ebFd9dC326211cAC7f91465a576cf0B0aB609", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0x917F1B9Dc82018b10644C4199580c657c81dAbC2", + "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", + 80002, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0x917F1B9Dc82018b10644C4199580c657c81dAbC2", + "NFTController", + "contracts/bridge/NFT/NFTController.sol", + ["0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", "0x80ac58cd"] + ] + ] +} diff --git a/deployments/superbridge/surge_addresses.json b/deployments/superbridge/surge_addresses.json index 4feb2952..180d4b66 100644 --- a/deployments/superbridge/surge_addresses.json +++ b/deployments/superbridge/surge_addresses.json @@ -26,5 +26,31 @@ } } } + }, + "aavegotchi_bridge_testnet": { + "80002": { + "GOTCHI": { + "isAppChain": false, + "NonMintableToken": "0xC80DB01aeDAD5F6E3088c75F60E52f579Cf1D3Cb", + "Vault": "0xfc1a9d9898e7a48D75EF6f18F5c042f8fc2E9055", + "connectors": { + "398274": { + "FAST": "0x04e77F231c933df16B4cd24fC8B4F33713E8e79c" + } + } + } + }, + "398274": { + "GOTCHI": { + "isAppChain": true, + "MintableToken": "0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", + "Controller": "0xEa4BE882A0105E44DEF336F8B2d4FB2E317e6877", + "connectors": { + "80002": { + "FAST": "0x672ebFd9dC326211cAC7f91465a576cf0B0aB609" + } + } + } + } } } diff --git a/script/constants/projectConstants/superbridge/aavegotchi_bridge_testnet.ts b/script/constants/projectConstants/superbridge/aavegotchi_bridge_testnet.ts new file mode 100644 index 00000000..c5c7c832 --- /dev/null +++ b/script/constants/projectConstants/superbridge/aavegotchi_bridge_testnet.ts @@ -0,0 +1,24 @@ +import { + ChainSlug, + DeploymentMode, + IntegrationTypes, +} from "@socket.tech/dl-core"; +import { Hooks, ProjectConstants } from "../../../../src"; +import { Tokens, NFTs } from "../../../../src/enums"; + +// For testnet deployments, ChainSlug enum may not have some chains, therefore some keys will look like {421614:{}} instead of {[ChainSlug.ARBITRUM_SEPOLIA]:{}}. This wont affect the functionality of the project. +export const pc: ProjectConstants = { + [DeploymentMode.SURGE]: { + [NFTs.GOTCHI]: { + vaultChains: [80002], + controllerChains: [398274], + tokenAddresses: { + 80002: "0xC80DB01aeDAD5F6E3088c75F60E52f579Cf1D3Cb", + 398274: "0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", + }, + hook: { + hookType: Hooks.NO_HOOK, + }, + }, + }, +}; diff --git a/socket-plugs-details.json b/socket-plugs-details.json index 073ec5e8..2ff6d2f9 100644 --- a/socket-plugs-details.json +++ b/socket-plugs-details.json @@ -158,7 +158,8 @@ "timeswap_test_mainnet", "testing_testnet", "magic_mainnet", - "polter_testnet" + "polter_testnet", + "aavegotchi_bridge_testnet" ], "tokens": [ "USDC.e", @@ -183,4 +184,4 @@ "MAGIC", "SUSDE" ] -} \ No newline at end of file +} diff --git a/src/enums/projectType.ts b/src/enums/projectType.ts index 4b91c851..4a7023e5 100644 --- a/src/enums/projectType.ts +++ b/src/enums/projectType.ts @@ -23,4 +23,5 @@ export const ProjectTypeMap: Record = { [Project.TESTING_TESTNET]: ProjectType.SUPERTOKEN, [Project.MAGIC_MAINNET]: ProjectType.SUPERTOKEN, [Project.POLTER_TESTNET]: ProjectType.SUPERBRIDGE, + [Project.AAVEGOTCHI_BRIDGE_TESTNET]: ProjectType.SUPERBRIDGE, }; diff --git a/src/enums/projects.ts b/src/enums/projects.ts index 04ec0f2f..8b693d64 100644 --- a/src/enums/projects.ts +++ b/src/enums/projects.ts @@ -20,4 +20,5 @@ export enum Project { TESTING_TESTNET = "testing_testnet", MAGIC_MAINNET = "magic_mainnet", POLTER_TESTNET = "polter_testnet", + AAVEGOTCHI_BRIDGE_TESTNET = "aavegotchi_bridge_testnet", } From 49ee3e9f8ae3f43ad5a2c995b7b3d1fce6bc13cf Mon Sep 17 00:00:00 2001 From: orionstardust Date: Tue, 1 Oct 2024 07:06:41 -0400 Subject: [PATCH 13/57] fix: redeploy --- contracts/bridge/NFT/NFTBase.sol | 8 ++++- ...e_aavegotchi_bridge_testnet_addresses.json | 4 +-- ...avegotchi_bridge_testnet_verification.json | 36 +++++++++++++++++++ deployments/superbridge/surge_addresses.json | 4 +-- 4 files changed, 47 insertions(+), 5 deletions(-) diff --git a/contracts/bridge/NFT/NFTBase.sol b/contracts/bridge/NFT/NFTBase.sol index db7b7bef..57bf93bf 100644 --- a/contracts/bridge/NFT/NFTBase.sol +++ b/contracts/bridge/NFT/NFTBase.sol @@ -12,7 +12,13 @@ import "../../common/Errors.sol"; import "../../common/Constants.sol"; import "../../utils/AccessControl.sol"; -abstract contract NFTBase is ReentrancyGuard, INFTBridge, AccessControl { +abstract contract NFTBase is + ReentrancyGuard, + INFTBridge, + ERC721TokenReceiver, + ERC1155TokenReceiver, + AccessControl +{ address public immutable token; bytes32 public bridgeType; INFTHook public hook__; diff --git a/deployments/superbridge/surge_aavegotchi_bridge_testnet_addresses.json b/deployments/superbridge/surge_aavegotchi_bridge_testnet_addresses.json index 7c21f4ff..56a74187 100644 --- a/deployments/superbridge/surge_aavegotchi_bridge_testnet_addresses.json +++ b/deployments/superbridge/surge_aavegotchi_bridge_testnet_addresses.json @@ -3,7 +3,7 @@ "GOTCHI": { "isAppChain": false, "NonMintableToken": "0xC80DB01aeDAD5F6E3088c75F60E52f579Cf1D3Cb", - "Vault": "0xfc1a9d9898e7a48D75EF6f18F5c042f8fc2E9055", + "Vault": "0xe07bCa11D493c6f151AE35DdC31EA0Ce1B54Fe9E", "connectors": { "398274": { "FAST": "0x04e77F231c933df16B4cd24fC8B4F33713E8e79c" @@ -15,7 +15,7 @@ "GOTCHI": { "isAppChain": true, "MintableToken": "0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", - "Controller": "0xEa4BE882A0105E44DEF336F8B2d4FB2E317e6877", + "Controller": "0x9C7e1dc50c944272a69Ff900E3cB9A59b33E9042", "connectors": { "80002": { "FAST": "0x672ebFd9dC326211cAC7f91465a576cf0B0aB609" diff --git a/deployments/superbridge/surge_aavegotchi_bridge_testnet_verification.json b/deployments/superbridge/surge_aavegotchi_bridge_testnet_verification.json index 3d38ef36..8f658dac 100644 --- a/deployments/superbridge/surge_aavegotchi_bridge_testnet_verification.json +++ b/deployments/superbridge/surge_aavegotchi_bridge_testnet_verification.json @@ -1,5 +1,17 @@ { "80002": [ + [ + "0xe07bCa11D493c6f151AE35DdC31EA0Ce1B54Fe9E", + "NFTVault", + "contracts/bridge/NFT/NFTVault.sol", + ["0xC80DB01aeDAD5F6E3088c75F60E52f579Cf1D3Cb", "0x80ac58cd"] + ], + [ + "0x719C25CAdd17534D77e68f2864df5C9465485c46", + "NFTVault", + "contracts/bridge/NFT/NFTVault.sol", + ["0xC80DB01aeDAD5F6E3088c75F60E52f579Cf1D3Cb", "0x80ac58cd"] + ], [ "0x04e77F231c933df16B4cd24fC8B4F33713E8e79c", "ConnectorPlug", @@ -19,6 +31,30 @@ ] ], "398274": [ + [ + "0x9C7e1dc50c944272a69Ff900E3cB9A59b33E9042", + "NFTController", + "contracts/bridge/NFT/NFTController.sol", + ["0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", "0x80ac58cd"] + ], + [ + "0xc79B1F531DdFd8121CE1E987C30aAC2ae0947ceb", + "NFTController", + "contracts/bridge/NFT/NFTController.sol", + ["0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", "0x80ac58cd"] + ], + [ + "0x6a5D0A7FF14b9603DaD9cDc84fea1212E3055825", + "NFTController", + "contracts/bridge/NFT/NFTController.sol", + ["0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", "0x80ac58cd"] + ], + [ + "0x71926eB6ce66949c0b0F078b4Fc88efeE236e563", + "NFTController", + "contracts/bridge/NFT/NFTController.sol", + ["0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", "0x80ac58cd"] + ], [ "0xEa4BE882A0105E44DEF336F8B2d4FB2E317e6877", "NFTController", diff --git a/deployments/superbridge/surge_addresses.json b/deployments/superbridge/surge_addresses.json index 180d4b66..2348579e 100644 --- a/deployments/superbridge/surge_addresses.json +++ b/deployments/superbridge/surge_addresses.json @@ -32,7 +32,7 @@ "GOTCHI": { "isAppChain": false, "NonMintableToken": "0xC80DB01aeDAD5F6E3088c75F60E52f579Cf1D3Cb", - "Vault": "0xfc1a9d9898e7a48D75EF6f18F5c042f8fc2E9055", + "Vault": "0xe07bCa11D493c6f151AE35DdC31EA0Ce1B54Fe9E", "connectors": { "398274": { "FAST": "0x04e77F231c933df16B4cd24fC8B4F33713E8e79c" @@ -44,7 +44,7 @@ "GOTCHI": { "isAppChain": true, "MintableToken": "0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", - "Controller": "0xEa4BE882A0105E44DEF336F8B2d4FB2E317e6877", + "Controller": "0x9C7e1dc50c944272a69Ff900E3cB9A59b33E9042", "connectors": { "80002": { "FAST": "0x672ebFd9dC326211cAC7f91465a576cf0B0aB609" From 9702a595d8b6b999e3d8299a8070b1e1b569844d Mon Sep 17 00:00:00 2001 From: orionstardust Date: Tue, 1 Oct 2024 07:15:36 -0400 Subject: [PATCH 14/57] fix: deployed addresses --- ...avegotchi_bridge_testnet_verification.json | 48 ------------------- 1 file changed, 48 deletions(-) diff --git a/deployments/superbridge/surge_aavegotchi_bridge_testnet_verification.json b/deployments/superbridge/surge_aavegotchi_bridge_testnet_verification.json index 8f658dac..46e9b9bf 100644 --- a/deployments/superbridge/surge_aavegotchi_bridge_testnet_verification.json +++ b/deployments/superbridge/surge_aavegotchi_bridge_testnet_verification.json @@ -6,12 +6,6 @@ "contracts/bridge/NFT/NFTVault.sol", ["0xC80DB01aeDAD5F6E3088c75F60E52f579Cf1D3Cb", "0x80ac58cd"] ], - [ - "0x719C25CAdd17534D77e68f2864df5C9465485c46", - "NFTVault", - "contracts/bridge/NFT/NFTVault.sol", - ["0xC80DB01aeDAD5F6E3088c75F60E52f579Cf1D3Cb", "0x80ac58cd"] - ], [ "0x04e77F231c933df16B4cd24fC8B4F33713E8e79c", "ConnectorPlug", @@ -22,12 +16,6 @@ 398274, "0x0000000000000000000000000000000000000000000000000000000000000000" ] - ], - [ - "0xfc1a9d9898e7a48D75EF6f18F5c042f8fc2E9055", - "NFTVault", - "contracts/bridge/NFT/NFTVault.sol", - ["0xC80DB01aeDAD5F6E3088c75F60E52f579Cf1D3Cb", "0x80ac58cd"] ] ], "398274": [ @@ -37,36 +25,6 @@ "contracts/bridge/NFT/NFTController.sol", ["0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", "0x80ac58cd"] ], - [ - "0xc79B1F531DdFd8121CE1E987C30aAC2ae0947ceb", - "NFTController", - "contracts/bridge/NFT/NFTController.sol", - ["0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", "0x80ac58cd"] - ], - [ - "0x6a5D0A7FF14b9603DaD9cDc84fea1212E3055825", - "NFTController", - "contracts/bridge/NFT/NFTController.sol", - ["0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", "0x80ac58cd"] - ], - [ - "0x71926eB6ce66949c0b0F078b4Fc88efeE236e563", - "NFTController", - "contracts/bridge/NFT/NFTController.sol", - ["0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", "0x80ac58cd"] - ], - [ - "0xEa4BE882A0105E44DEF336F8B2d4FB2E317e6877", - "NFTController", - "contracts/bridge/NFT/NFTController.sol", - ["0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", "0x80ac58cd"] - ], - [ - "0x1D19bA288802A1029a6523F5Ff2eb20A4E77bF78", - "NFTController", - "contracts/bridge/NFT/NFTController.sol", - ["0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", "0x80ac58cd"] - ], [ "0x672ebFd9dC326211cAC7f91465a576cf0B0aB609", "ConnectorPlug", @@ -77,12 +35,6 @@ 80002, "0x0000000000000000000000000000000000000000000000000000000000000000" ] - ], - [ - "0x917F1B9Dc82018b10644C4199580c657c81dAbC2", - "NFTController", - "contracts/bridge/NFT/NFTController.sol", - ["0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", "0x80ac58cd"] ] ] } From de1df1355c261f38884e611f66432adcc0c7c6ad Mon Sep 17 00:00:00 2001 From: orionstardust Date: Tue, 1 Oct 2024 15:55:58 -0400 Subject: [PATCH 15/57] fix: deployed addresses --- ...e_aavegotchi_bridge_testnet_addresses.json | 26 ------------ ...avegotchi_bridge_testnet_verification.json | 40 ------------------- deployments/superbridge/surge_addresses.json | 10 ++--- 3 files changed, 5 insertions(+), 71 deletions(-) delete mode 100644 deployments/superbridge/surge_aavegotchi_bridge_testnet_addresses.json delete mode 100644 deployments/superbridge/surge_aavegotchi_bridge_testnet_verification.json diff --git a/deployments/superbridge/surge_aavegotchi_bridge_testnet_addresses.json b/deployments/superbridge/surge_aavegotchi_bridge_testnet_addresses.json deleted file mode 100644 index 56a74187..00000000 --- a/deployments/superbridge/surge_aavegotchi_bridge_testnet_addresses.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "80002": { - "GOTCHI": { - "isAppChain": false, - "NonMintableToken": "0xC80DB01aeDAD5F6E3088c75F60E52f579Cf1D3Cb", - "Vault": "0xe07bCa11D493c6f151AE35DdC31EA0Ce1B54Fe9E", - "connectors": { - "398274": { - "FAST": "0x04e77F231c933df16B4cd24fC8B4F33713E8e79c" - } - } - } - }, - "398274": { - "GOTCHI": { - "isAppChain": true, - "MintableToken": "0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", - "Controller": "0x9C7e1dc50c944272a69Ff900E3cB9A59b33E9042", - "connectors": { - "80002": { - "FAST": "0x672ebFd9dC326211cAC7f91465a576cf0B0aB609" - } - } - } - } -} diff --git a/deployments/superbridge/surge_aavegotchi_bridge_testnet_verification.json b/deployments/superbridge/surge_aavegotchi_bridge_testnet_verification.json deleted file mode 100644 index 46e9b9bf..00000000 --- a/deployments/superbridge/surge_aavegotchi_bridge_testnet_verification.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "80002": [ - [ - "0xe07bCa11D493c6f151AE35DdC31EA0Ce1B54Fe9E", - "NFTVault", - "contracts/bridge/NFT/NFTVault.sol", - ["0xC80DB01aeDAD5F6E3088c75F60E52f579Cf1D3Cb", "0x80ac58cd"] - ], - [ - "0x04e77F231c933df16B4cd24fC8B4F33713E8e79c", - "ConnectorPlug", - "contracts/ConnectorPlug.sol", - [ - "0xfc1a9d9898e7a48D75EF6f18F5c042f8fc2E9055", - "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", - 398274, - "0x0000000000000000000000000000000000000000000000000000000000000000" - ] - ] - ], - "398274": [ - [ - "0x9C7e1dc50c944272a69Ff900E3cB9A59b33E9042", - "NFTController", - "contracts/bridge/NFT/NFTController.sol", - ["0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", "0x80ac58cd"] - ], - [ - "0x672ebFd9dC326211cAC7f91465a576cf0B0aB609", - "ConnectorPlug", - "contracts/ConnectorPlug.sol", - [ - "0x917F1B9Dc82018b10644C4199580c657c81dAbC2", - "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", - 80002, - "0x0000000000000000000000000000000000000000000000000000000000000000" - ] - ] - ] -} diff --git a/deployments/superbridge/surge_addresses.json b/deployments/superbridge/surge_addresses.json index 2348579e..5f0f8c1a 100644 --- a/deployments/superbridge/surge_addresses.json +++ b/deployments/superbridge/surge_addresses.json @@ -32,10 +32,10 @@ "GOTCHI": { "isAppChain": false, "NonMintableToken": "0xC80DB01aeDAD5F6E3088c75F60E52f579Cf1D3Cb", - "Vault": "0xe07bCa11D493c6f151AE35DdC31EA0Ce1B54Fe9E", + "Vault": "0x09011fcA980Df5d22E5ff2262051Bc28C430E11c", "connectors": { "398274": { - "FAST": "0x04e77F231c933df16B4cd24fC8B4F33713E8e79c" + "FAST": "0x6f1978CF0D213eFBF4A173d499219AbeEa01e597" } } } @@ -44,13 +44,13 @@ "GOTCHI": { "isAppChain": true, "MintableToken": "0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", - "Controller": "0x9C7e1dc50c944272a69Ff900E3cB9A59b33E9042", + "Controller": "0x38161F1a033D86aea6D222AEdE57702046414CA5", "connectors": { "80002": { - "FAST": "0x672ebFd9dC326211cAC7f91465a576cf0B0aB609" + "FAST": "0xCfDA1E919F0b9B9fAbb6863dBF662B7fa688D2fD" } } } } } -} +} \ No newline at end of file From 46d379e09eb003b18f0b02f1560fca40e5b2b95e Mon Sep 17 00:00:00 2001 From: orionstardust Date: Wed, 16 Oct 2024 16:15:15 -0400 Subject: [PATCH 16/57] fix: mint wearables --- contracts/bridge/NFT/NFTBase.sol | 7 +++++-- contracts/bridge/NFT/NFTController.sol | 2 +- contracts/bridge/NFT/NFTVault.sol | 2 +- contracts/interfaces/INFTMetadata.sol | 6 +++++- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/contracts/bridge/NFT/NFTBase.sol b/contracts/bridge/NFT/NFTBase.sol index 57bf93bf..6c7e400d 100644 --- a/contracts/bridge/NFT/NFTBase.sol +++ b/contracts/bridge/NFT/NFTBase.sol @@ -239,12 +239,14 @@ abstract contract NFTBase is * @param messageId_ The unique identifier for the mint transaction. * @param postHookData_ Data returned from the destination pre-hook call. * @param transferInfo_ Information about the mint transaction. + * @param isMint_ mint or transfer */ function _afterMint( uint256, bytes32 messageId_, bytes memory postHookData_, - NFTTransferInfo memory transferInfo_ + NFTTransferInfo memory transferInfo_, + bool isMint_ ) internal { if (address(hook__) != address(0)) { CacheData memory cacheData = hook__.dstPostHookCall( @@ -264,7 +266,8 @@ abstract contract NFTBase is if (transferInfo_.extraData.length > 0) { INFTMetadata(token).setMetadata( transferInfo_.tokenId, - transferInfo_.extraData + transferInfo_.extraData, + isMint_ ); } diff --git a/contracts/bridge/NFT/NFTController.sol b/contracts/bridge/NFT/NFTController.sol index 1aaf4258..0944b5a4 100644 --- a/contracts/bridge/NFT/NFTController.sol +++ b/contracts/bridge/NFT/NFTController.sol @@ -92,7 +92,7 @@ contract NFTController is NFTBase { _mint(transferInfo.receiver, transferInfo.tokenId, transferInfo.amount); totalMinted[transferInfo.tokenId] += transferInfo.amount; - _afterMint(lockAmount, messageId, postHookData, transferInfo); + _afterMint(lockAmount, messageId, postHookData, transferInfo, true); } /** diff --git a/contracts/bridge/NFT/NFTVault.sol b/contracts/bridge/NFT/NFTVault.sol index d701db43..78f6f9a9 100644 --- a/contracts/bridge/NFT/NFTVault.sol +++ b/contracts/bridge/NFT/NFTVault.sol @@ -102,7 +102,7 @@ contract NFTVault is NFTBase { transferInfo.amount ); - _afterMint(unlockAmount, messageId, postHookData, transferInfo); + _afterMint(unlockAmount, messageId, postHookData, transferInfo, false); } /** diff --git a/contracts/interfaces/INFTMetadata.sol b/contracts/interfaces/INFTMetadata.sol index c4fad67e..1a466773 100644 --- a/contracts/interfaces/INFTMetadata.sol +++ b/contracts/interfaces/INFTMetadata.sol @@ -2,5 +2,9 @@ pragma solidity ^0.8.3; interface INFTMetadata { - function setMetadata(uint256 tokenId, bytes memory data) external; + function setMetadata( + uint256 tokenId, + bytes memory data, + bool isMint + ) external; } From 5ccf1109669cd559d7db96fee95813f769edeb8b Mon Sep 17 00:00:00 2001 From: Coderdan Date: Fri, 25 Oct 2024 18:19:13 +0800 Subject: [PATCH 17/57] chore: work on wrapping supertoken --- contracts/token/SuperToken.sol | 40 +- contracts/utils/RescueBase.sol | 2 +- deployments/supertoken/surge_addresses.json | 28 + .../surge_socket_ghst_testnet_addresses.json | 26 + ...urge_socket_ghst_testnet_verification.json | 80 + package-lock.json | 5834 +++++++++++++++++ .../supertoken/socket_ghst_testnet.ts | 43 + script/helpers/networks.ts | 8 + src/enums/existing-token-addresses.ts | 202 +- src/enums/projectType.ts | 1 + src/enums/projects.ts | 1 + src/enums/tokenDecimals.ts | 1 + src/enums/tokenName.ts | 1 + src/enums/tokenSymbol.ts | 1 + src/enums/tokens.ts | 1 + test/supertoken/Supertoken.t.sol | 109 + yarn.lock | 1014 ++- 17 files changed, 6775 insertions(+), 617 deletions(-) create mode 100644 deployments/supertoken/surge_addresses.json create mode 100644 deployments/supertoken/surge_socket_ghst_testnet_addresses.json create mode 100644 deployments/supertoken/surge_socket_ghst_testnet_verification.json create mode 100644 package-lock.json create mode 100644 script/constants/projectConstants/supertoken/socket_ghst_testnet.ts create mode 100644 test/supertoken/Supertoken.t.sol diff --git a/contracts/token/SuperToken.sol b/contracts/token/SuperToken.sol index 8dc619b8..d818fa90 100644 --- a/contracts/token/SuperToken.sol +++ b/contracts/token/SuperToken.sol @@ -1,9 +1,10 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.13; -import "solmate/tokens/ERC20.sol"; import "../utils/RescueBase.sol"; import "../interfaces/IHook.sol"; +import {ERC20} from "solmate/tokens/ERC20.sol"; +import {SafeTransferLib} from "solmate/utils/SafeTransferLib.sol"; /** * @title SuperToken @@ -11,8 +12,14 @@ import "../interfaces/IHook.sol"; * @dev This contract implements ISuperTokenOrVault to support message bridging through IMessageBridge compliant contracts. */ contract SuperToken is ERC20, RescueBase { + using SafeTransferLib for address; + + event Deposit(address indexed from, uint256 amount); + event Withdrawal(address indexed to, uint256 amount); + // for all controller access (mint, burn) - bytes32 constant CONTROLLER_ROLE = keccak256("CONTROLLER_ROLE"); + bytes32 public constant CONTROLLER_ROLE = keccak256("CONTROLLER_ROLE"); + // bytes32 public constant RESCUE_ROLE = keccak256("RESCUE_ROLE"); /** * @notice constructor for creating a new SuperToken. @@ -35,6 +42,9 @@ contract SuperToken is ERC20, RescueBase { _grantRole(RESCUE_ROLE, owner_); } + //Controller Functions + + //burns the supertoken and and unlocks it on the parent chain chain function burn( address user_, uint256 amount_ @@ -42,10 +52,36 @@ contract SuperToken is ERC20, RescueBase { _burn(user_, amount_); } + //lock the NonMintable ERC20 token on the source chain and mint it on the child chain function mint( address receiver_, uint256 amount_ ) external onlyRole(CONTROLLER_ROLE) { _mint(receiver_, amount_); } + + //Wrapping Functions + + //deposits native GHST and mints the supertoken + function deposit() public payable { + _mint(msg.sender, msg.value); + emit Deposit(msg.sender, msg.value); + } + + //withdraws native GHST and burns the supertoken + function withdraw(uint256 amount_) external { + _burn(msg.sender, amount_); + msg.sender.safeTransferETH(amount_); + emit Withdrawal(msg.sender, amount_); + } + + receive() external payable { + deposit(); + } } + +//So the flow is: +//1. User locks their GHST on Polygon, which triggers the mint function on Geist, minting the supertoken version of GHST. +//2. Next, we need to automatically unwrap the supertoken GHST into native GHST. +//3. To do this, we call the withdraw function. This burns the supertoken and sends the native GHST back to the user. +//4. But if there isn't enough native GHST in the contract, the withdraw will fail. So we need to deposit more native GHST to the contract. diff --git a/contracts/utils/RescueBase.sol b/contracts/utils/RescueBase.sol index 352d3453..b429e1f3 100644 --- a/contracts/utils/RescueBase.sol +++ b/contracts/utils/RescueBase.sol @@ -10,7 +10,7 @@ import {AccessControl} from "./AccessControl.sol"; * to support any type of message bridge. */ abstract contract RescueBase is AccessControl { - bytes32 constant RESCUE_ROLE = keccak256("RESCUE_ROLE"); + bytes32 public constant RESCUE_ROLE = keccak256("RESCUE_ROLE"); /** * @notice Rescues funds from the contract if they are locked by mistake. diff --git a/deployments/supertoken/surge_addresses.json b/deployments/supertoken/surge_addresses.json new file mode 100644 index 00000000..514d8b5c --- /dev/null +++ b/deployments/supertoken/surge_addresses.json @@ -0,0 +1,28 @@ +{ + "socket_ghst_testnet": { + "80002": { + "SGHST": { + "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", + "Vault": "0x596A75D94d1Bf0b63af9F4a67Ce5Eeb427EeDdcE", + "LimitHook": "0x2a9e7A2A9FeD4A83F59125cFf72761E467cEa419", + "connectors": { + "631571": { + "FAST": "0xA32137bfb57d2b6A9Fd2956Ba4B54741a6D54b58" + } + } + } + }, + "631571": { + "SGHST": { + "SuperToken": "0x0B08aCd19d96B5fAfb9dbDc4b935B58B7A50F16A", + "Controller": "0xA421Ed8a4E3cfbFbFd2F621b27bd3C27D71C8b97", + "LimitHook": "0x1A9E2D17122B747871a1088FC38952c7dc5d8334", + "connectors": { + "80002": { + "FAST": "0x19d62CFdB02Db59758E477264c218CCa0F10c6B5" + } + } + } + } + } +} \ No newline at end of file diff --git a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json new file mode 100644 index 00000000..bb2ae8c7 --- /dev/null +++ b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json @@ -0,0 +1,26 @@ +{ + "80002": { + "SGHST": { + "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", + "Vault": "0x596A75D94d1Bf0b63af9F4a67Ce5Eeb427EeDdcE", + "LimitHook": "0x2a9e7A2A9FeD4A83F59125cFf72761E467cEa419", + "connectors": { + "631571": { + "FAST": "0xA32137bfb57d2b6A9Fd2956Ba4B54741a6D54b58" + } + } + } + }, + "631571": { + "SGHST": { + "SuperToken": "0x0B08aCd19d96B5fAfb9dbDc4b935B58B7A50F16A", + "Controller": "0xA421Ed8a4E3cfbFbFd2F621b27bd3C27D71C8b97", + "LimitHook": "0x1A9E2D17122B747871a1088FC38952c7dc5d8334", + "connectors": { + "80002": { + "FAST": "0x19d62CFdB02Db59758E477264c218CCa0F10c6B5" + } + } + } + } +} \ No newline at end of file diff --git a/deployments/supertoken/surge_socket_ghst_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_testnet_verification.json new file mode 100644 index 00000000..3d6f48cf --- /dev/null +++ b/deployments/supertoken/surge_socket_ghst_testnet_verification.json @@ -0,0 +1,80 @@ +{ + "80002": [ + [ + "0xA32137bfb57d2b6A9Fd2956Ba4B54741a6D54b58", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0x596A75D94d1Bf0b63af9F4a67Ce5Eeb427EeDdcE", + "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", + 631571, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0x2a9e7A2A9FeD4A83F59125cFf72761E467cEa419", + "LimitHook", + "contracts/hooks/LimitHook.sol", + [ + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0x596A75D94d1Bf0b63af9F4a67Ce5Eeb427EeDdcE", + false + ] + ], + [ + "0x596A75D94d1Bf0b63af9F4a67Ce5Eeb427EeDdcE", + "Vault", + "contracts/bridge/Vault.sol", + [ + "0xF679b8D109b2d23931237Ce948a7D784727c0897" + ] + ] + ], + "631571": [ + [ + "0x19d62CFdB02Db59758E477264c218CCa0F10c6B5", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0xA421Ed8a4E3cfbFbFd2F621b27bd3C27D71C8b97", + "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", + 80002, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0x1A9E2D17122B747871a1088FC38952c7dc5d8334", + "LimitHook", + "contracts/hooks/LimitHook.sol", + [ + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0xA421Ed8a4E3cfbFbFd2F621b27bd3C27D71C8b97", + false + ] + ], + [ + "0xA421Ed8a4E3cfbFbFd2F621b27bd3C27D71C8b97", + "Controller", + "contracts/bridge/Controller.sol", + [ + "0x0B08aCd19d96B5fAfb9dbDc4b935B58B7A50F16A" + ] + ], + [ + "0x0B08aCd19d96B5fAfb9dbDc4b935B58B7A50F16A", + "SuperToken", + "contracts/token/SuperToken.sol", + [ + "Socket GHST", + "SGHST", + 18, + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + { + "type": "BigNumber", + "hex": "0x00" + } + ] + ] + ] +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..d8953974 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5834 @@ +{ + "name": "@socket.tech/socket-plugs", + "version": "1.0.29", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@socket.tech/socket-plugs", + "version": "1.0.29", + "license": "MIT", + "dependencies": { + "@arbitrum/sdk": "^3.7.0", + "@eth-optimism/sdk": "^3.3.2", + "@socket.tech/dl-core": "^2.28.0", + "lodash": "^4.17.21", + "prompts": "^2.4.2" + }, + "devDependencies": { + "@ethersproject/bytes": "^5.7.0", + "@nomicfoundation/hardhat-foundry": "^1.1.2", + "@nomiclabs/hardhat-ethers": "^2.1.1", + "@nomiclabs/hardhat-etherscan": "^3.1.0", + "@typechain/ethers-v5": "^10.0.0", + "@typechain/hardhat": "^6.0.0", + "@types/mocha": "^9.1.0", + "@types/node": "^18.11.9", + "@types/prompts": "^2.4.9", + "@types/yargs": "^17.0.22", + "dotenv": "^16.0.3", + "ethers": "^5.6.6", + "hardhat": "^2.17.2", + "hardhat-abi-exporter": "^2.10.1", + "hardhat-change-network": "^0.0.7", + "hardhat-deploy": "^0.11.20", + "hardhat-preprocessor": "^0.1.4", + "pre-commit": "^1.2.2", + "prettier": "^2.6.1", + "prettier-plugin-solidity": "^1.0.0-beta.13", + "ts-node": "^10.7.0", + "typechain": "^8.0.0", + "typescript": "^4.6.4" + } + }, + "node_modules/@arbitrum/sdk": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@arbitrum/sdk/-/sdk-3.7.0.tgz", + "integrity": "sha512-7Omaqd8xfhCatxyyFZC3k7S9HE8pTVuk9tg+snqk8ojDVqO8kiD3YrYS9STJqbKxLBQ1TRktbRaUOAiH3+Y0zg==", + "dependencies": { + "@ethersproject/address": "^5.0.8", + "@ethersproject/bignumber": "^5.1.1", + "@ethersproject/bytes": "^5.0.8", + "async-mutex": "^0.4.0", + "ethers": "^5.1.0" + }, + "engines": { + "node": ">=v11", + "npm": "please-use-yarn", + "yarn": ">= 1.0.0" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@eth-optimism/contracts": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.6.0.tgz", + "integrity": "sha512-vQ04wfG9kMf1Fwy3FEMqH2QZbgS0gldKhcBeBUPfO8zu68L61VI97UDXmsMQXzTsEAxK8HnokW3/gosl4/NW3w==", + "dependencies": { + "@eth-optimism/core-utils": "0.12.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0" + }, + "peerDependencies": { + "ethers": "^5" + } + }, + "node_modules/@eth-optimism/contracts/node_modules/@eth-optimism/core-utils": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@eth-optimism/core-utils/-/core-utils-0.12.0.tgz", + "integrity": "sha512-qW+7LZYCz7i8dRa7SRlUKIo1VBU8lvN0HeXCxJR+z+xtMzMQpPds20XJNCMclszxYQHkXY00fOT6GvFw9ZL6nw==", + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/contracts": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/providers": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bufio": "^1.0.7", + "chai": "^4.3.4" + } + }, + "node_modules/@eth-optimism/core-utils": { + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/@eth-optimism/core-utils/-/core-utils-0.13.2.tgz", + "integrity": "sha512-u7TOKm1RxH1V5zw7dHmfy91bOuEAZU68LT/9vJPkuWEjaTl+BgvPDRDTurjzclHzN0GbWdcpOqPZg4ftjkJGaw==", + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/contracts": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/web": "^5.7.1", + "chai": "^4.3.10", + "ethers": "^5.7.2", + "node-fetch": "^2.6.7" + } + }, + "node_modules/@eth-optimism/sdk": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@eth-optimism/sdk/-/sdk-3.3.2.tgz", + "integrity": "sha512-+zhxT0YkBIEzHsuIayQGjr8g9NawZo6/HYfzg1NSEFsE2Yt0NyCWqVDFTuuak0T6AvIa2kNcl3r0Z8drdb2QmQ==", + "dependencies": { + "@eth-optimism/contracts": "0.6.0", + "@eth-optimism/core-utils": "^0.13.2", + "lodash": "^4.17.21", + "merkletreejs": "^0.3.11", + "rlp": "^2.2.7", + "semver": "^7.6.0" + }, + "peerDependencies": { + "ethers": "^5" + } + }, + "node_modules/@ethereumjs/rlp": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz", + "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==", + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/util": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz", + "integrity": "sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==", + "dependencies": { + "@ethereumjs/rlp": "^4.0.1", + "ethereum-cryptography": "^2.0.0", + "micro-ftch": "^0.3.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@ethereumjs/util/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "dependencies": { + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "dependencies": { + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@ethereumjs/util/node_modules/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "dependencies": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, + "node_modules/@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ] + }, + "node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@metamask/eth-sig-util": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", + "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", + "dev": true, + "dependencies": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^6.2.1", + "ethjs-util": "^0.1.6", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz", + "integrity": "sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@noble/secp256k1": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz", + "integrity": "sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@nomicfoundation/edr": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.3.8.tgz", + "integrity": "sha512-u2UJ5QpznSHVkZRh6ePWoeVb6kmPrrqh08gCnZ9FHlJV9CITqlrTQHJkacd+INH31jx88pTAJnxePE4XAiH5qg==", + "dev": true, + "dependencies": { + "@nomicfoundation/edr-darwin-arm64": "0.3.8", + "@nomicfoundation/edr-darwin-x64": "0.3.8", + "@nomicfoundation/edr-linux-arm64-gnu": "0.3.8", + "@nomicfoundation/edr-linux-arm64-musl": "0.3.8", + "@nomicfoundation/edr-linux-x64-gnu": "0.3.8", + "@nomicfoundation/edr-linux-x64-musl": "0.3.8", + "@nomicfoundation/edr-win32-x64-msvc": "0.3.8" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-darwin-arm64": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.3.8.tgz", + "integrity": "sha512-eB0leCexS8sQEmfyD72cdvLj9djkBzQGP4wSQw6SNf2I4Sw4Cnzb3d45caG2FqFFjbvfqL0t+badUUIceqQuMw==", + "dev": true, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-darwin-x64": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.3.8.tgz", + "integrity": "sha512-JksVCS1N5ClwVF14EvO25HCQ+Laljh/KRfHERMVAC9ZwPbTuAd/9BtKvToCBi29uCHWqsXMI4lxCApYQv2nznw==", + "dev": true, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-linux-arm64-gnu": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.3.8.tgz", + "integrity": "sha512-raCE+fOeNXhVBLUo87cgsHSGvYYRB6arih4eG6B9KGACWK5Veebtm9xtKeiD8YCsdUlUfat6F7ibpeNm91fpsA==", + "dev": true, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-linux-arm64-musl": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.3.8.tgz", + "integrity": "sha512-PwiDp4wBZWMCIy29eKkv8moTKRrpiSDlrc+GQMSZLhOAm8T33JKKXPwD/2EbplbhCygJDGXZdtEKl9x9PaH66A==", + "dev": true, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-linux-x64-gnu": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.3.8.tgz", + "integrity": "sha512-6AcvA/XKoipGap5jJmQ9Y6yT7Uf39D9lu2hBcDCXnXbMcXaDGw4mn1/L4R63D+9VGZyu1PqlcJixCUZlGGIWlg==", + "dev": true, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-linux-x64-musl": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.3.8.tgz", + "integrity": "sha512-cxb0sEmZjlwhYWO28sPsV64VDx31ekskhC1IsDXU1p9ntjHSJRmW4KEIqJ2O3QwJap/kLKfMS6TckvY10gjc6w==", + "dev": true, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/edr-win32-x64-msvc": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.3.8.tgz", + "integrity": "sha512-yVuVPqRRNLZk7TbBMkKw7lzCvI8XO8fNTPTYxymGadjr9rEGRuNTU1yBXjfJ59I1jJU/X2TSkRk1OFX0P5tpZQ==", + "dev": true, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@nomicfoundation/ethereumjs-common": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz", + "integrity": "sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-util": "9.0.4" + } + }, + "node_modules/@nomicfoundation/ethereumjs-rlp": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz", + "integrity": "sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==", + "dev": true, + "bin": { + "rlp": "bin/rlp.cjs" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@nomicfoundation/ethereumjs-tx": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.4.tgz", + "integrity": "sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "c-kzg": "^2.1.2" + }, + "peerDependenciesMeta": { + "c-kzg": { + "optional": true + } + } + }, + "node_modules/@nomicfoundation/ethereumjs-tx/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-util": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.4.tgz", + "integrity": "sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-rlp": "5.0.4", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "c-kzg": "^2.1.2" + }, + "peerDependenciesMeta": { + "c-kzg": { + "optional": true + } + } + }, + "node_modules/@nomicfoundation/ethereumjs-util/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/hardhat-foundry": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@nomicfoundation/hardhat-foundry/-/hardhat-foundry-1.1.2.tgz", + "integrity": "sha512-f5Vhj3m2qvKGpr6NAINYwNgILDsai8dVCsFb1rAVLkJxOmD2pAtfCmOH5SBVr9yUI5B1z9rbTwPBJVrqnb+PXQ==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2" + }, + "peerDependencies": { + "hardhat": "^2.17.2" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz", + "integrity": "sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg==", + "dev": true, + "engines": { + "node": ">= 12" + }, + "optionalDependencies": { + "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.1", + "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.1", + "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.1", + "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.1", + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.1" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-darwin-arm64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz", + "integrity": "sha512-KcTodaQw8ivDZyF+D76FokN/HdpgGpfjc/gFCImdLUyqB6eSWVaZPazMbeAjmfhx3R0zm/NYVzxwAokFKgrc0w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-darwin-x64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz", + "integrity": "sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-freebsd-x64": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.1.tgz", + "integrity": "sha512-GHF1VKRdHW3G8CndkwdaeLkVBi5A9u2jwtlS7SLhBc8b5U/GcoL39Q+1CSO3hYqePNP+eV5YI7Zgm0ea6kMHoA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.1.tgz", + "integrity": "sha512-g4Cv2fO37ZsUENQ2vwPnZc2zRenHyAxHcyBjKcjaSmmkKrFr64yvzeNO8S3GBFCo90rfochLs99wFVGT/0owpg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-musl": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.1.tgz", + "integrity": "sha512-WJ3CE5Oek25OGE3WwzK7oaopY8xMw9Lhb0mlYuJl/maZVo+WtP36XoQTb7bW/i8aAdHW5Z+BqrHMux23pvxG3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-gnu": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.1.tgz", + "integrity": "sha512-5WN7leSr5fkUBBjE4f3wKENUy9HQStu7HmWqbtknfXkkil+eNWiBV275IOlpXku7v3uLsXTOKpnnGHJYI2qsdA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-musl": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.1.tgz", + "integrity": "sha512-KdYMkJOq0SYPQMmErv/63CwGwMm5XHenEna9X9aB8mQmhDBrYrlAOSsIPgFCUSL0hjxE3xHP65/EPXR/InD2+w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.1.tgz", + "integrity": "sha512-VFZASBfl4qiBYwW5xeY20exWhmv6ww9sWu/krWSesv3q5hA0o1JuzmPHR4LPN6SUZj5vcqci0O6JOL8BPw+APg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.1.tgz", + "integrity": "sha512-JnFkYuyCSA70j6Si6cS1A9Gh1aHTEb8kOTBApp/c7NRTFGNMH8eaInKlyuuiIbvYFhlXW4LicqyYuWNNq9hkpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-x64-msvc": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.1.tgz", + "integrity": "sha512-HrVJr6+WjIXGnw3Q9u6KQcbZCtk0caVWhCdFADySvRyUxJ8PnzlaP+MhwNE8oyT8OZ6ejHBRrrgjSqDCFXGirw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomiclabs/hardhat-ethers": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz", + "integrity": "sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg==", + "dev": true, + "peerDependencies": { + "ethers": "^5.0.0", + "hardhat": "^2.0.0" + } + }, + "node_modules/@nomiclabs/hardhat-etherscan": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.7.tgz", + "integrity": "sha512-tZ3TvSgpvsQ6B6OGmo1/Au6u8BrAkvs1mIC/eURA3xgIfznUZBhmpne8hv7BXUzw9xNL3fXdpOYgOQlVMTcoHQ==", + "deprecated": "The @nomiclabs/hardhat-etherscan package is deprecated, please use @nomicfoundation/hardhat-verify instead", + "dev": true, + "dependencies": { + "@ethersproject/abi": "^5.1.2", + "@ethersproject/address": "^5.0.2", + "cbor": "^8.1.0", + "chalk": "^2.4.2", + "debug": "^4.1.1", + "fs-extra": "^7.0.1", + "lodash": "^4.17.11", + "semver": "^6.3.0", + "table": "^6.8.0", + "undici": "^5.14.0" + }, + "peerDependencies": { + "hardhat": "^2.0.4" + } + }, + "node_modules/@nomiclabs/hardhat-etherscan/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@scure/base": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.7.tgz", + "integrity": "sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g==", + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@scure/bip32": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz", + "integrity": "sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.2.0", + "@noble/secp256k1": "~1.7.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/@scure/bip39": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz", + "integrity": "sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.2.0", + "@scure/base": "~1.1.0" + } + }, + "node_modules/@sentry/core": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", + "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", + "dev": true, + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/core/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@sentry/hub": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", + "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", + "dev": true, + "dependencies": { + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/hub/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@sentry/minimal": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", + "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", + "dev": true, + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/minimal/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@sentry/node": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", + "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", + "dev": true, + "dependencies": { + "@sentry/core": "5.30.0", + "@sentry/hub": "5.30.0", + "@sentry/tracing": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/node/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@sentry/tracing": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", + "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", + "dev": true, + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/tracing/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@sentry/types": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", + "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/utils": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", + "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", + "dev": true, + "dependencies": { + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/utils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@socket.tech/dl-core": { + "version": "2.28.0", + "resolved": "https://registry.npmjs.org/@socket.tech/dl-core/-/dl-core-2.28.0.tgz", + "integrity": "sha512-muKcbfyXqqQGHFWrCb5NecqeTY5A2zZneSRTFTOhg4lFrHsQ64H51II1iPkjhlUQhD+Gw6Nc/VXU9hwSJ+dG3g==", + "dependencies": { + "axios": "^1.3.6", + "prompts": "^2.4.2", + "yargs": "^17.7.1" + } + }, + "node_modules/@solidity-parser/parser": { + "version": "0.16.1", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.1.tgz", + "integrity": "sha512-PdhRFNhbTtu3x8Axm0uYpqOy/lODYQK+MlYSgqIsq2L8SFYEHJPHNUiOTAJbDGzNjjr1/n9AcIayxafR/fWmYw==", + "dev": true, + "dependencies": { + "antlr4ts": "^0.5.0-alpha.4" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@typechain/ethers-v5": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-10.2.1.tgz", + "integrity": "sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A==", + "dev": true, + "dependencies": { + "lodash": "^4.17.15", + "ts-essentials": "^7.0.1" + }, + "peerDependencies": { + "@ethersproject/abi": "^5.0.0", + "@ethersproject/providers": "^5.0.0", + "ethers": "^5.1.3", + "typechain": "^8.1.1", + "typescript": ">=4.3.0" + } + }, + "node_modules/@typechain/hardhat": { + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-6.1.6.tgz", + "integrity": "sha512-BiVnegSs+ZHVymyidtK472syodx1sXYlYJJixZfRstHVGYTi8V1O7QG4nsjyb0PC/LORcq7sfBUcHto1y6UgJA==", + "dev": true, + "dependencies": { + "fs-extra": "^9.1.0" + }, + "peerDependencies": { + "@ethersproject/abi": "^5.4.7", + "@ethersproject/providers": "^5.4.7", + "@typechain/ethers-v5": "^10.2.1", + "ethers": "^5.4.7", + "hardhat": "^2.9.9", + "typechain": "^8.1.1" + } + }, + "node_modules/@typechain/hardhat/node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typechain/hardhat/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@typechain/hardhat/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@types/bn.js": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "dev": true + }, + "node_modules/@types/mocha": { + "version": "9.1.1", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz", + "integrity": "sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.17.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.4.tgz", + "integrity": "sha512-ATL4WLgr7/W40+Sp1WnNTSKbgVn6Pvhc/2RHAdt8fl6NsQyp4oPCi2eKcGOvA494bwf1K/W6nGgZ9TwDqvpjdw==", + "dev": true + }, + "node_modules/@types/pbkdf2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true + }, + "node_modules/@types/prompts": { + "version": "2.4.9", + "resolved": "https://registry.npmjs.org/@types/prompts/-/prompts-2.4.9.tgz", + "integrity": "sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==", + "dev": true, + "dependencies": { + "@types/node": "*", + "kleur": "^3.0.3" + } + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.24", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz", + "integrity": "sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz", + "integrity": "sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true, + "engines": { + "node": ">=0.3.0" + } + }, + "node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==" + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/antlr4ts": { + "version": "0.5.0-alpha.4", + "resolved": "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz", + "integrity": "sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "engines": { + "node": "*" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async-mutex": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.1.tgz", + "integrity": "sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/axios": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz", + "integrity": "sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==" + }, + "node_modules/bignumber.js": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz", + "integrity": "sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug==", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "dev": true + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + }, + "node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dev": true, + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/boxen/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/boxen/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/boxen/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/boxen/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/boxen/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dev": true, + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/buffer-reverse": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-reverse/-/buffer-reverse-1.0.1.tgz", + "integrity": "sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg==" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "node_modules/bufio": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bufio/-/bufio-1.2.1.tgz", + "integrity": "sha512-9oR3zNdupcg/Ge2sSHQF3GX+kmvL/fTPvD0nd5AGLq8SjUYnTz+SlFjK/GXidndbZtIj+pVKXiWeR9w6e9wKCA==", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dev": true, + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cbor": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz", + "integrity": "sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==", + "dev": true, + "dependencies": { + "nofilter": "^3.1.0" + }, + "engines": { + "node": ">=12.19" + } + }, + "node_modules/chai": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz", + "integrity": "sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==", + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.0.8" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dependencies": { + "get-func-name": "^2.0.2" + }, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true + }, + "node_modules/command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "dev": true, + "dependencies": { + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/command-line-usage": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz", + "integrity": "sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==", + "dev": true, + "dependencies": { + "array-back": "^4.0.2", + "chalk": "^2.4.2", + "table-layout": "^1.0.2", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/command-line-usage/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/command-line-usage/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/concat-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "dev": true, + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delete-empty": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/delete-empty/-/delete-empty-3.0.0.tgz", + "integrity": "sha512-ZUyiwo76W+DYnKsL3Kim6M/UOavPdBJgDYWOmuQhYaZvJH0AXAHbUNyEDtRbBra8wqqr686+63/0azfEk1ebUQ==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.0", + "minimist": "^1.2.0", + "path-starts-with": "^2.0.0", + "rimraf": "^2.6.2" + }, + "bin": { + "delete-empty": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dotenv": { + "version": "16.3.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz", + "integrity": "sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/motdotla/dotenv?sponsor=1" + } + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==", + "dev": true + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ethereum-bloom-filters": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.1.0.tgz", + "integrity": "sha512-J1gDRkLpuGNvWYzWslBQR9cDV4nd4kfvVTE/Wy4Kkm4yb3EYRSlyi0eB/inTsSTTVyA0+HyzHgbr95Fn/Z1fSw==", + "deprecated": "do not use this package use package versions above as this can miss some topics", + "dependencies": { + "@noble/hashes": "^1.4.0" + } + }, + "node_modules/ethereum-bloom-filters/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ethereum-cryptography": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz", + "integrity": "sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==", + "dev": true, + "dependencies": { + "@noble/hashes": "1.2.0", + "@noble/secp256k1": "1.7.1", + "@scure/bip32": "1.1.5", + "@scure/bip39": "1.1.1" + } + }, + "node_modules/ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + } + }, + "node_modules/ethereumjs-abi/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/ethereumjs-util/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ethereumjs-util/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/ethereumjs-util/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" + } + }, + "node_modules/ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "dependencies": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ethjs-unit/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==" + }, + "node_modules/ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "dev": true, + "dependencies": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "dev": true, + "dependencies": { + "array-back": "^3.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/fmix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/fmix/-/fmix-0.1.0.tgz", + "integrity": "sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==", + "dev": true, + "dependencies": { + "imul": "^1.0.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fp-ts": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/hardhat": { + "version": "2.22.4", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.22.4.tgz", + "integrity": "sha512-09qcXJFBHQUaraJkYNr7XlmwjOj27xBB0SL2rYS024hTj9tPMbp26AFjlf5quBMO9SR4AJFg+4qWahcYcvXBuQ==", + "dev": true, + "dependencies": { + "@ethersproject/abi": "^5.1.2", + "@metamask/eth-sig-util": "^4.0.0", + "@nomicfoundation/edr": "^0.3.7", + "@nomicfoundation/ethereumjs-common": "4.0.4", + "@nomicfoundation/ethereumjs-tx": "5.0.4", + "@nomicfoundation/ethereumjs-util": "9.0.4", + "@nomicfoundation/solidity-analyzer": "^0.1.0", + "@sentry/node": "^5.18.1", + "@types/bn.js": "^5.1.0", + "@types/lru-cache": "^5.1.0", + "adm-zip": "^0.4.16", + "aggregate-error": "^3.0.0", + "ansi-escapes": "^4.3.0", + "boxen": "^5.1.2", + "chalk": "^2.4.2", + "chokidar": "^3.4.0", + "ci-info": "^2.0.0", + "debug": "^4.1.1", + "enquirer": "^2.3.0", + "env-paths": "^2.2.0", + "ethereum-cryptography": "^1.0.3", + "ethereumjs-abi": "^0.6.8", + "find-up": "^2.1.0", + "fp-ts": "1.19.3", + "fs-extra": "^7.0.1", + "glob": "7.2.0", + "immutable": "^4.0.0-rc.12", + "io-ts": "1.10.4", + "keccak": "^3.0.2", + "lodash": "^4.17.11", + "mnemonist": "^0.38.0", + "mocha": "^10.0.0", + "p-map": "^4.0.0", + "raw-body": "^2.4.1", + "resolve": "1.17.0", + "semver": "^6.3.0", + "solc": "0.7.3", + "source-map-support": "^0.5.13", + "stacktrace-parser": "^0.1.10", + "tsort": "0.0.1", + "undici": "^5.14.0", + "uuid": "^8.3.2", + "ws": "^7.4.6" + }, + "bin": { + "hardhat": "internal/cli/bootstrap.js" + }, + "peerDependencies": { + "ts-node": "*", + "typescript": "*" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/hardhat-abi-exporter": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/hardhat-abi-exporter/-/hardhat-abi-exporter-2.10.1.tgz", + "integrity": "sha512-X8GRxUTtebMAd2k4fcPyVnCdPa6dYK4lBsrwzKP5yiSq4i+WadWPIumaLfce53TUf/o2TnLpLOduyO1ylE2NHQ==", + "dev": true, + "dependencies": { + "@ethersproject/abi": "^5.5.0", + "delete-empty": "^3.0.0" + }, + "engines": { + "node": ">=14.14.0" + }, + "peerDependencies": { + "hardhat": "^2.0.0" + } + }, + "node_modules/hardhat-change-network": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/hardhat-change-network/-/hardhat-change-network-0.0.7.tgz", + "integrity": "sha512-Usp9fJan9SOJnOlVcv/jMJDchseE7bIDA5ZsBnracgVk4MiBwkvMqpmLWn5G1aDBvnUCthvS2gO3odfahgkV0Q==", + "dev": true, + "peerDependencies": { + "hardhat": "^2.0.0" + } + }, + "node_modules/hardhat-deploy": { + "version": "0.11.34", + "resolved": "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.11.34.tgz", + "integrity": "sha512-N6xcwD8LSMV/IyfEr8TfR2YRbOh9Q4QvitR9MKZRTXQmgQiiMGjX+2efMjKgNMxwCVlmpfnE1tyDxOJOOUseLQ==", + "dev": true, + "dependencies": { + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/contracts": "^5.7.0", + "@ethersproject/providers": "^5.7.2", + "@ethersproject/solidity": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wallet": "^5.7.0", + "@types/qs": "^6.9.7", + "axios": "^0.21.1", + "chalk": "^4.1.2", + "chokidar": "^3.5.2", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "ethers": "^5.5.3", + "form-data": "^4.0.0", + "fs-extra": "^10.0.0", + "match-all": "^1.2.6", + "murmur-128": "^0.2.1", + "qs": "^6.9.4", + "zksync-web3": "^0.14.3" + } + }, + "node_modules/hardhat-deploy/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/hardhat-deploy/node_modules/axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.0" + } + }, + "node_modules/hardhat-deploy/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/hardhat-deploy/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/hardhat-deploy/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/hardhat-deploy/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/hardhat-deploy/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/hardhat-deploy/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/hardhat-deploy/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/hardhat-deploy/node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/hardhat-preprocessor": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/hardhat-preprocessor/-/hardhat-preprocessor-0.1.5.tgz", + "integrity": "sha512-j8m44mmPxpxAAd0G8fPHRHOas/INZdzptSur0TNJvMEGcFdLDhbHHxBcqZVQ/bmiW42q4gC60AP4CXn9EF018g==", + "dev": true, + "dependencies": { + "murmur-128": "^0.2.1" + }, + "peerDependencies": { + "hardhat": "^2.0.5" + } + }, + "node_modules/hardhat/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immutable": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.2.tgz", + "integrity": "sha512-oGXzbEDem9OOpDWZu88jGiYCvIsLHMvGw+8OXlpsvTFvIQplQbjg1B1cvKg8f7Hoch6+NGjpPsH1Fr+Mc2D1aA==", + "dev": true + }, + "node_modules/imul": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/imul/-/imul-1.0.1.tgz", + "integrity": "sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/io-ts": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", + "dev": true, + "dependencies": { + "fp-ts": "^1.0.0" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keccak": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz", + "integrity": "sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "engines": { + "node": ">=6" + } + }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dependencies": { + "get-func-name": "^2.0.1" + } + }, + "node_modules/lru_map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/match-all": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/match-all/-/match-all-1.2.6.tgz", + "integrity": "sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==", + "dev": true + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/merkletreejs": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/merkletreejs/-/merkletreejs-0.3.11.tgz", + "integrity": "sha512-LJKTl4iVNTndhL+3Uz/tfkjD0klIWsHlUzgtuNnNrsf7bAlXR30m+xYB7lHr5Z/l6e/yAIsr26Dabx6Buo4VGQ==", + "dependencies": { + "bignumber.js": "^9.0.1", + "buffer-reverse": "^1.0.1", + "crypto-js": "^4.2.0", + "treeify": "^1.1.0", + "web3-utils": "^1.3.4" + }, + "engines": { + "node": ">= 7.6.0" + } + }, + "node_modules/micro-ftch": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz", + "integrity": "sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==" + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==" + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mnemonist": { + "version": "0.38.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", + "dev": true, + "dependencies": { + "obliterator": "^2.0.0" + } + }, + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/mocha/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/murmur-128": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/murmur-128/-/murmur-128-0.2.1.tgz", + "integrity": "sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg==", + "dev": true, + "dependencies": { + "encode-utf8": "^1.0.2", + "fmix": "^0.1.0", + "imul": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true + }, + "node_modules/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==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-gyp-build": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", + "dev": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/nofilter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz", + "integrity": "sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==", + "dev": true, + "engines": { + "node": ">=12.19" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", + "dependencies": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/number-to-bn/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==" + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obliterator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/os-shim": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz", + "integrity": "sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-starts-with": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-starts-with/-/path-starts-with-2.0.1.tgz", + "integrity": "sha512-wZ3AeiRBRlNwkdUxvBANh0+esnt38DLffHDujZyRHkqkaKHTglnY2EP5UX3b8rdeiSutgO4y9NEJwXezNP5vHg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "engines": { + "node": "*" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pre-commit": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/pre-commit/-/pre-commit-1.2.2.tgz", + "integrity": "sha512-qokTiqxD6GjODy5ETAIgzsRgnBWWQHQH2ghy86PU7mIn/wuWeTwF3otyNQZxWBwVn8XNr8Tdzj/QfUXpH+gRZA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "cross-spawn": "^5.0.1", + "spawn-sync": "^1.0.15", + "which": "1.2.x" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-plugin-solidity": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.1.3.tgz", + "integrity": "sha512-fQ9yucPi2sBbA2U2Xjh6m4isUTJ7S7QLc/XDDsktqqxYfTwdYKJ0EnnywXHwCGAaYbQNK+HIYPL1OemxuMsgeg==", + "dev": true, + "dependencies": { + "@solidity-parser/parser": "^0.16.0", + "semver": "^7.3.8", + "solidity-comments-extractor": "^0.0.7" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "prettier": ">=2.3.0 || >=3.0.0-alpha.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "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==" + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reduce-flatten": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz", + "integrity": "sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "dependencies": { + "bn.js": "^5.2.0" + }, + "bin": { + "rlp": "bin/rlp" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" + }, + "node_modules/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/setimmediate": { + "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 + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/slice-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/solc": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", + "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", + "dev": true, + "dependencies": { + "command-exists": "^1.2.8", + "commander": "3.0.2", + "follow-redirects": "^1.12.1", + "fs-extra": "^0.30.0", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "bin": { + "solcjs": "solcjs" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/solc/node_modules/fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "node_modules/solc/node_modules/jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/solc/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/solidity-comments-extractor": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz", + "integrity": "sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spawn-sync": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz", + "integrity": "sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "concat-stream": "^1.4.7", + "os-shim": "^0.1.2" + } + }, + "node_modules/stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "dev": true, + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-format": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz", + "integrity": "sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==", + "dev": true + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/table": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", + "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table-layout": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz", + "integrity": "sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==", + "dev": true, + "dependencies": { + "array-back": "^4.0.1", + "deep-extend": "~0.6.0", + "typical": "^5.2.0", + "wordwrapjs": "^4.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/table-layout/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/table-layout/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/treeify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz", + "integrity": "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ts-command-line-args": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz", + "integrity": "sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^6.1.0", + "string-format": "^2.0.0" + }, + "bin": { + "write-markdown": "dist/write-markdown.js" + } + }, + "node_modules/ts-command-line-args/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-command-line-args/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ts-command-line-args/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-command-line-args/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ts-command-line-args/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-command-line-args/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-essentials": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz", + "integrity": "sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==", + "dev": true, + "peerDependencies": { + "typescript": ">=3.7.0" + } + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/tsort": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", + "dev": true + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, + "node_modules/tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "dev": true + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typechain": { + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/typechain/-/typechain-8.3.1.tgz", + "integrity": "sha512-fA7clol2IP/56yq6vkMTR+4URF1nGjV82Wx6Rf09EsqD4tkzMAvEaqYxVFCavJm/1xaRga/oD55K+4FtuXwQOQ==", + "dev": true, + "dependencies": { + "@types/prettier": "^2.1.1", + "debug": "^4.3.1", + "fs-extra": "^7.0.0", + "glob": "7.1.7", + "js-sha3": "^0.8.0", + "lodash": "^4.17.15", + "mkdirp": "^1.0.4", + "prettier": "^2.3.1", + "ts-command-line-args": "^2.2.0", + "ts-essentials": "^7.0.1" + }, + "bin": { + "typechain": "dist/cli/cli.js" + }, + "peerDependencies": { + "typescript": ">=4.3.0" + } + }, + "node_modules/typechain/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/undici": { + "version": "5.23.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.23.0.tgz", + "integrity": "sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg==", + "dev": true, + "dependencies": { + "busboy": "^1.6.0" + }, + "engines": { + "node": ">=14.0" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/web3-utils": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.4.tgz", + "integrity": "sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==", + "dependencies": { + "@ethereumjs/util": "^8.1.0", + "bn.js": "^5.2.1", + "ethereum-bloom-filters": "^1.0.6", + "ethereum-cryptography": "^2.1.2", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/web3-utils/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-utils/node_modules/@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "dependencies": { + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-utils/node_modules/@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "dependencies": { + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-utils/node_modules/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "dependencies": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "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==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "1.2.14", + "resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz", + "integrity": "sha512-16uPglFkRPzgiUXYMi1Jf8Z5EzN1iB4V0ZtMXcHZnwsBtQhhHeCqoWw7tsUY42hJGNDWtUsVLTjakIa5BgAxCw==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dev": true, + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wordwrapjs": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz", + "integrity": "sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==", + "dev": true, + "dependencies": { + "reduce-flatten": "^2.0.0", + "typical": "^5.2.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/wordwrapjs/node_modules/typical": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz", + "integrity": "sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zksync-web3": { + "version": "0.14.3", + "resolved": "https://registry.npmjs.org/zksync-web3/-/zksync-web3-0.14.3.tgz", + "integrity": "sha512-hT72th4AnqyLW1d5Jlv8N2B/qhEnl2NePK2A3org7tAa24niem/UAaHMkEvmWI3SF9waYUPtqAtjpf+yvQ9zvQ==", + "deprecated": "This package has been deprecated in favor of zksync-ethers@5.0.0", + "dev": true, + "peerDependencies": { + "ethers": "^5.7.0" + } + } + } +} diff --git a/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts b/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts new file mode 100644 index 00000000..9ccd7b96 --- /dev/null +++ b/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts @@ -0,0 +1,43 @@ + +import { + ChainSlug, + DeploymentMode, + IntegrationTypes, +} from "@socket.tech/dl-core"; +import { Hooks, ProjectConstants } from "../../../../src"; +import { NFTs, Tokens } from "../../../../src/enums"; + +// For testnet deployments, ChainSlug enum may not have some chains, therefore some keys will look like {421614:{}} instead of {[ChainSlug.ARBITRUM_SEPOLIA]:{}}. This wont affect the functionality of the project. +export const pc: ProjectConstants = { + [DeploymentMode.SURGE]: { + [Tokens.SGHST]: { + vaultChains: [80002], + controllerChains: [631571], + hook: { + hookType: Hooks.LIMIT_HOOK, + limitsAndPoolId: { + 80002: { + [IntegrationTypes.fast]: { + sendingLimit: "1000000.0", + receivingLimit: "1000000.0" + } + }, + 631571: { + [IntegrationTypes.fast]: { + sendingLimit: "1000000.0", + receivingLimit: "1000000.0" + } + } + } + }, + superTokenInfo: { + name: "Socket GHST", + symbol: Tokens.SGHST, + decimals: 18, + owner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + initialSupplyOwner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + initialSupply: "0" + } + } + } +}; diff --git a/script/helpers/networks.ts b/script/helpers/networks.ts index 60b8e6a4..ac2f397f 100644 --- a/script/helpers/networks.ts +++ b/script/helpers/networks.ts @@ -111,6 +111,14 @@ export const overrides: { }; export const getOverrides = (chainSlug: ChainSlug): Overrides => { + if ((chainSlug as number) == 80002) { + return { + type: 1, + gasLimit, + gasPrice: 25000000000, + }; + } + // First check from the overrides object. Prod chains config should be here. if (overrides[chainSlug]) return overrides[chainSlug]; diff --git a/src/enums/existing-token-addresses.ts b/src/enums/existing-token-addresses.ts index 6933316a..4a68cbb9 100644 --- a/src/enums/existing-token-addresses.ts +++ b/src/enums/existing-token-addresses.ts @@ -1,101 +1,105 @@ -import { ChainSlug } from "@socket.tech/dl-core"; -import { Tokens } from "./tokens"; -export const ExistingTokenAddresses: { - [key in ChainSlug]?: { [key in Tokens]?: string }; -} = { - [ChainSlug.MAINNET]: { - [Tokens.USDC]: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - [Tokens.USDT]: "0xdac17f958d2ee523a2206206994597c13d831ec7", - [Tokens.WETH]: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - [Tokens.WBTC]: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - [Tokens.SNX]: "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", - [Tokens.WSTETH]: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", - [Tokens.DAI]: "0x6B175474E89094C44Da98b954EedeAC495271d0F", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.USDE]: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", - [Tokens.SUSDE]: "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", - [Tokens.SDEUSD]: "0x5c5b196abe0d54485975d1ec29617d42d9198326", - [Tokens.DEUSD]: "0x15700b564ca08d9439c58ca5053166e8317aa138", - }, - [ChainSlug.OPTIMISM]: { - [Tokens.USDC]: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", - [Tokens.USDCE]: "0x7f5c764cbc14f9669b88837ca1490cca17c31607", - [Tokens.USDT]: "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", - [Tokens.WETH]: "0x4200000000000000000000000000000000000006", - [Tokens.WBTC]: "0x68f180fcce6836688e9084f035309e29bf0a2095", - [Tokens.SNX]: "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", - [Tokens.WSTETH]: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", - [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", - }, - [ChainSlug.POLYGON_MAINNET]: { - [Tokens.USDC]: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", - [Tokens.USDCE]: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", - [Tokens.FUD]: "0x403e967b044d4be25170310157cb1a4bf10bdd0f", - [Tokens.FOMO]: "0x44a6e0be76e1d9620a7f76588e4509fe4fa8e8c8", - [Tokens.ALPHA]: "0x6a3E7C3c6EF65Ee26975b12293cA1AAD7e1dAeD2", - [Tokens.KEK]: "0x42E5E06EF5b90Fe15F853F59299Fc96259209c5C", - [Tokens.GLTR]: "0x3801C3B3B5c98F88a9c9005966AA96aa440B9Afc", - [Tokens.USDT]: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", - [Tokens.DAI]: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - [Tokens.WETH]: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", - [Tokens.WBTC]: "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6", - }, - [ChainSlug.BASE]: { - [Tokens.USDC]: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", - [Tokens.WETH]: "0x4200000000000000000000000000000000000006", - [Tokens.WSTETH]: "0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452", - [Tokens.DAI]: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", - }, - [ChainSlug.ARBITRUM]: { - [Tokens.USDC]: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", - [Tokens.USDCE]: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", - [Tokens.USDT]: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", - [Tokens.WETH]: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", - [Tokens.WBTC]: "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", - [Tokens.WSTETH]: "0x5979D7b546E38E414F7E9822514be443A4800529", - [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", - [Tokens.STIME]: "0x17AfF554423D2C40A1BBF51b443E9d43dd8AE1eb", - [Tokens.MAGIC]: "0x539bde0d7dbd336b79148aa742883198bbf60342", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", - }, - [ChainSlug.ARBITRUM_SEPOLIA]: { - [Tokens.USDC]: "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", - [Tokens.USDT]: "0x66DFb9987C36c4be232156e70B085f664367599A", - [Tokens.DAI]: "0x9a573B27D7298c6E2f4d2D4a41c37A0C8AF6accA", - [Tokens.WETH]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", - [Tokens.WBTC]: "0x1019958C2BD43B882a4e1349337a32Ef9563FC4D", - }, - [ChainSlug.SEPOLIA]: { - [Tokens.USDC]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - [Tokens.USDT]: "0xB4130e87A180b9448286B291331aEe8A9C154A3A", - [Tokens.DAI]: "0x255745E5C7Ae620b7f523F5E4A0Ead37660EC5d6", - [Tokens.WETH]: "0x771d1Ae208377453D478dF08BbC38034F72aC833", - [Tokens.WBTC]: "0x94BEff5da6201cB2C8F489196FD970B3DF5aA32A", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - }, - [ChainSlug.AEVO_TESTNET]: { - [Tokens.USDC]: "0x4D435C00E09034ec2113F63088CCD0be0a0fd06e", - }, - [ChainSlug.OPTIMISM_SEPOLIA]: { - [Tokens.USDC]: "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", - [Tokens.USDT]: "0x2d1abA6FaBAe80bF5C1C9EA433AAe9030E07CB22", - [Tokens.DAI]: "0xDC0258dc3dB980090E97EbF4f1FD9Cc3C5AD5894", - [Tokens.WETH]: "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.WBTC]: "0xfC5CC93d85861ac82d89fc2D3e56315540E9C8A7", - }, - [ChainSlug.REYA]: { - [Tokens.SUSDE]: "0x2339D41f410EA761F346a14c184385d15f7266c4", - [Tokens.DEUSD]: "0x809B99df4DDd6fA90F2CF305E2cDC310C6AD3C2c", - [Tokens.SDEUSD]: "0x4D3fEB76ab1C7eF40388Cd7a2066edacE1a2237D", - }, + import { ChainSlug } from "@socket.tech/dl-core"; + import { Tokens } from "./tokens"; + + export const ExistingTokenAddresses: { + [key in ChainSlug]?: { [key in Tokens]?: string }; + } = { + [ChainSlug.MAINNET]: { + [Tokens.USDC]: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + [Tokens.USDT]: "0xdac17f958d2ee523a2206206994597c13d831ec7", + [Tokens.WETH]: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + [Tokens.WBTC]: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + [Tokens.SNX]: "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", + [Tokens.WSTETH]: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + [Tokens.DAI]: "0x6B175474E89094C44Da98b954EedeAC495271d0F", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.USDE]: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", + [Tokens.SUSDE]: "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", + [Tokens.SDEUSD]: "0x5c5b196abe0d54485975d1ec29617d42d9198326", + [Tokens.DEUSD]: "0x15700b564ca08d9439c58ca5053166e8317aa138" +}, +[ChainSlug.OPTIMISM]: { + [Tokens.USDC]: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", + [Tokens.USDCE]: "0x7f5c764cbc14f9669b88837ca1490cca17c31607", + [Tokens.USDT]: "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", + [Tokens.WETH]: "0x4200000000000000000000000000000000000006", + [Tokens.WBTC]: "0x68f180fcce6836688e9084f035309e29bf0a2095", + [Tokens.SNX]: "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", + [Tokens.WSTETH]: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", + [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" +}, +[ChainSlug.POLYGON_MAINNET]: { + [Tokens.USDC]: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", + [Tokens.USDCE]: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + [Tokens.FUD]: "0x403e967b044d4be25170310157cb1a4bf10bdd0f", + [Tokens.FOMO]: "0x44a6e0be76e1d9620a7f76588e4509fe4fa8e8c8", + [Tokens.ALPHA]: "0x6a3E7C3c6EF65Ee26975b12293cA1AAD7e1dAeD2", + [Tokens.KEK]: "0x42E5E06EF5b90Fe15F853F59299Fc96259209c5C", + [Tokens.GLTR]: "0x3801C3B3B5c98F88a9c9005966AA96aa440B9Afc", + [Tokens.USDT]: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", + [Tokens.DAI]: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", + [Tokens.WETH]: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", + [Tokens.WBTC]: "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6" +}, +[ChainSlug.BASE]: { + [Tokens.USDC]: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", + [Tokens.WETH]: "0x4200000000000000000000000000000000000006", + [Tokens.WSTETH]: "0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452", + [Tokens.DAI]: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" +}, +[ChainSlug.ARBITRUM]: { + [Tokens.USDC]: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", + [Tokens.USDCE]: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", + [Tokens.USDT]: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", + [Tokens.WETH]: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", + [Tokens.WBTC]: "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", + [Tokens.WSTETH]: "0x5979D7b546E38E414F7E9822514be443A4800529", + [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", + [Tokens.STIME]: "0x17AfF554423D2C40A1BBF51b443E9d43dd8AE1eb", + [Tokens.MAGIC]: "0x539bde0d7dbd336b79148aa742883198bbf60342", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" +}, +80002: { + [Tokens.SGHST]: "0xF679b8D109b2d23931237Ce948a7D784727c0897" +}, +[ChainSlug.ARBITRUM_SEPOLIA]: { + [Tokens.USDC]: "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", + [Tokens.USDT]: "0x66DFb9987C36c4be232156e70B085f664367599A", + [Tokens.DAI]: "0x9a573B27D7298c6E2f4d2D4a41c37A0C8AF6accA", + [Tokens.WETH]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", + [Tokens.WBTC]: "0x1019958C2BD43B882a4e1349337a32Ef9563FC4D" +}, +[ChainSlug.SEPOLIA]: { + [Tokens.USDC]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", + [Tokens.USDT]: "0xB4130e87A180b9448286B291331aEe8A9C154A3A", + [Tokens.DAI]: "0x255745E5C7Ae620b7f523F5E4A0Ead37660EC5d6", + [Tokens.WETH]: "0x771d1Ae208377453D478dF08BbC38034F72aC833", + [Tokens.WBTC]: "0x94BEff5da6201cB2C8F489196FD970B3DF5aA32A", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" +}, +[ChainSlug.AEVO_TESTNET]: { + [Tokens.USDC]: "0x4D435C00E09034ec2113F63088CCD0be0a0fd06e" +}, +[ChainSlug.OPTIMISM_SEPOLIA]: { + [Tokens.USDC]: "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", + [Tokens.USDT]: "0x2d1abA6FaBAe80bF5C1C9EA433AAe9030E07CB22", + [Tokens.DAI]: "0xDC0258dc3dB980090E97EbF4f1FD9Cc3C5AD5894", + [Tokens.WETH]: "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.WBTC]: "0xfC5CC93d85861ac82d89fc2D3e56315540E9C8A7" +}, +[ChainSlug.REYA]: { + [Tokens.SUSDE]: "0x2339D41f410EA761F346a14c184385d15f7266c4", + [Tokens.DEUSD]: "0x809B99df4DDd6fA90F2CF305E2cDC310C6AD3C2c", + [Tokens.SDEUSD]: "0x4D3fEB76ab1C7eF40388Cd7a2066edacE1a2237D" +} }; diff --git a/src/enums/projectType.ts b/src/enums/projectType.ts index 4a7023e5..0566475a 100644 --- a/src/enums/projectType.ts +++ b/src/enums/projectType.ts @@ -24,4 +24,5 @@ export const ProjectTypeMap: Record = { [Project.MAGIC_MAINNET]: ProjectType.SUPERTOKEN, [Project.POLTER_TESTNET]: ProjectType.SUPERBRIDGE, [Project.AAVEGOTCHI_BRIDGE_TESTNET]: ProjectType.SUPERBRIDGE, + [Project.SOCKET_GHST_TESTNET]: ProjectType.SUPERTOKEN, }; diff --git a/src/enums/projects.ts b/src/enums/projects.ts index 8b693d64..71d6de06 100644 --- a/src/enums/projects.ts +++ b/src/enums/projects.ts @@ -21,4 +21,5 @@ export enum Project { MAGIC_MAINNET = "magic_mainnet", POLTER_TESTNET = "polter_testnet", AAVEGOTCHI_BRIDGE_TESTNET = "aavegotchi_bridge_testnet", + SOCKET_GHST_TESTNET = "socket_ghst_testnet", } diff --git a/src/enums/tokenDecimals.ts b/src/enums/tokenDecimals.ts index 58024bad..706a3c86 100644 --- a/src/enums/tokenDecimals.ts +++ b/src/enums/tokenDecimals.ts @@ -24,4 +24,5 @@ export const tokenDecimals: { [key in Tokens]: number } = { [Tokens.SUSDE]: 18, [Tokens.SDEUSD]: 18, [Tokens.DEUSD]: 18, + [Tokens.SGHST]: 18, }; diff --git a/src/enums/tokenName.ts b/src/enums/tokenName.ts index 54905615..cc6753e8 100644 --- a/src/enums/tokenName.ts +++ b/src/enums/tokenName.ts @@ -24,4 +24,5 @@ export const tokenName: { [key in Tokens]: string } = { [Tokens.SUSDE]: "Staked USDe", [Tokens.SDEUSD]: "Staked deUSD", [Tokens.DEUSD]: "deUSD", + [Tokens.SGHST]: "Socket GHST", }; diff --git a/src/enums/tokenSymbol.ts b/src/enums/tokenSymbol.ts index 58cafc9e..7bc65052 100644 --- a/src/enums/tokenSymbol.ts +++ b/src/enums/tokenSymbol.ts @@ -24,4 +24,5 @@ export const tokenSymbol: { [key in Tokens]: string } = { [Tokens.SUSDE]: "SUSDE", [Tokens.SDEUSD]: "SDEUSD", [Tokens.DEUSD]: "DEUSD", + [Tokens.SGHST]: "SGHST", }; diff --git a/src/enums/tokens.ts b/src/enums/tokens.ts index c1af5cbd..de823194 100644 --- a/src/enums/tokens.ts +++ b/src/enums/tokens.ts @@ -22,4 +22,5 @@ export enum Tokens { SUSDE = "SUSDE", SDEUSD = "SDEUSD", DEUSD = "DEUSD", + SGHST = "SGHST", } diff --git a/test/supertoken/Supertoken.t.sol b/test/supertoken/Supertoken.t.sol new file mode 100644 index 00000000..94c0cebf --- /dev/null +++ b/test/supertoken/Supertoken.t.sol @@ -0,0 +1,109 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.13; + +import "forge-std/Test.sol"; +import "../../contracts/token/SuperToken.sol"; + +contract SuperTokenTest is Test { + SuperToken public superToken; + address public owner; + address public initialSupplyHolder; + address public user; + address public controller; + + uint256 constant INITIAL_SUPPLY = 1000000 ether; + + function setUp() public { + owner = address(this); + initialSupplyHolder = address(0x1); + user = address(0x2); + controller = address(0x3); + + superToken = new SuperToken( + "Aavegotchi Socket GHST", + "sGHST", + 18, + initialSupplyHolder, + owner, + INITIAL_SUPPLY + ); + + superToken.grantRole(superToken.CONTROLLER_ROLE(), controller); + } + + function testInitialState() public { + assertEq(superToken.name(), "Aavegotchi Socket GHST"); + assertEq(superToken.symbol(), "sGHST"); + assertEq(superToken.decimals(), 18); + assertEq(superToken.balanceOf(initialSupplyHolder), INITIAL_SUPPLY); + assertTrue(superToken.hasRole(superToken.RESCUE_ROLE(), owner)); + } + + function testBurn() public { + vm.prank(controller); + superToken.burn(initialSupplyHolder, 1000 ether); + assertEq( + superToken.balanceOf(initialSupplyHolder), + INITIAL_SUPPLY - 1000 ether + ); + } + + function testMint() public { + vm.prank(controller); + superToken.mint(user, 500 ether); + assertEq(superToken.balanceOf(user), 500 ether); + } + + function testUnauthorizedBurn() public { + vm.prank(user); + vm.expectRevert( + abi.encodeWithSelector( + AccessControl.NoPermit.selector, + superToken.CONTROLLER_ROLE() + ) + ); + superToken.burn(initialSupplyHolder, 1000 ether); + } + + function testUnauthorizedMint() public { + vm.prank(user); + vm.expectRevert( + abi.encodeWithSelector( + AccessControl.NoPermit.selector, + superToken.CONTROLLER_ROLE() + ) + ); + superToken.mint(user, 500 ether); + } + + function testDeposit() public { + vm.deal(user, 1 ether); + vm.prank(user); + superToken.deposit{value: 1 ether}(); + assertEq(superToken.balanceOf(user), 1 ether); + assertEq(address(superToken).balance, 1 ether); + } + + function testWithdraw() public { + vm.deal(address(superToken), 1 ether); + vm.prank(controller); + superToken.mint(user, 1 ether); + + uint256 initialBalance = user.balance; + vm.prank(user); + superToken.withdraw(1 ether); + + assertEq(superToken.balanceOf(user), 0); + assertEq(user.balance, initialBalance + 1 ether); + assertEq(address(superToken).balance, 0); + } + + function testReceive() public { + vm.deal(user, 1 ether); + vm.prank(user); + (bool success, ) = address(superToken).call{value: 1 ether}(""); + assertTrue(success); + assertEq(superToken.balanceOf(user), 1 ether); + assertEq(address(superToken).balance, 1 ether); + } +} diff --git a/yarn.lock b/yarn.lock index 8909cba3..b09ab95c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4,7 +4,7 @@ "@arbitrum/sdk@^3.7.0": version "3.7.0" - resolved "https://registry.yarnpkg.com/@arbitrum/sdk/-/sdk-3.7.0.tgz#2a6035a596469e43bdb3721298cdae9c0bccb9d7" + resolved "https://registry.npmjs.org/@arbitrum/sdk/-/sdk-3.7.0.tgz" integrity sha512-7Omaqd8xfhCatxyyFZC3k7S9HE8pTVuk9tg+snqk8ojDVqO8kiD3YrYS9STJqbKxLBQ1TRktbRaUOAiH3+Y0zg== dependencies: "@ethersproject/address" "^5.0.8" @@ -15,14 +15,14 @@ "@cspotcode/source-map-support@^0.8.0": version "0.8.1" - resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz" integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== dependencies: "@jridgewell/trace-mapping" "0.3.9" "@eth-optimism/contracts@0.6.0": version "0.6.0" - resolved "https://registry.yarnpkg.com/@eth-optimism/contracts/-/contracts-0.6.0.tgz#15ae76222a9b4d958a550cafb1960923af613a31" + resolved "https://registry.npmjs.org/@eth-optimism/contracts/-/contracts-0.6.0.tgz" integrity sha512-vQ04wfG9kMf1Fwy3FEMqH2QZbgS0gldKhcBeBUPfO8zu68L61VI97UDXmsMQXzTsEAxK8HnokW3/gosl4/NW3w== dependencies: "@eth-optimism/core-utils" "0.12.0" @@ -31,7 +31,7 @@ "@eth-optimism/core-utils@0.12.0": version "0.12.0" - resolved "https://registry.yarnpkg.com/@eth-optimism/core-utils/-/core-utils-0.12.0.tgz#6337e4599a34de23f8eceb20378de2a2de82b0ea" + resolved "https://registry.npmjs.org/@eth-optimism/core-utils/-/core-utils-0.12.0.tgz" integrity sha512-qW+7LZYCz7i8dRa7SRlUKIo1VBU8lvN0HeXCxJR+z+xtMzMQpPds20XJNCMclszxYQHkXY00fOT6GvFw9ZL6nw== dependencies: "@ethersproject/abi" "^5.7.0" @@ -53,7 +53,7 @@ "@eth-optimism/core-utils@^0.13.2": version "0.13.2" - resolved "https://registry.yarnpkg.com/@eth-optimism/core-utils/-/core-utils-0.13.2.tgz#c0187c3abf6d86dad039edf04ff81299253214fe" + resolved "https://registry.npmjs.org/@eth-optimism/core-utils/-/core-utils-0.13.2.tgz" integrity sha512-u7TOKm1RxH1V5zw7dHmfy91bOuEAZU68LT/9vJPkuWEjaTl+BgvPDRDTurjzclHzN0GbWdcpOqPZg4ftjkJGaw== dependencies: "@ethersproject/abi" "^5.7.0" @@ -73,7 +73,7 @@ "@eth-optimism/sdk@^3.3.2": version "3.3.2" - resolved "https://registry.yarnpkg.com/@eth-optimism/sdk/-/sdk-3.3.2.tgz#68a5f6e77f9c85f6eeb9db8044b3b69199520eb0" + resolved "https://registry.npmjs.org/@eth-optimism/sdk/-/sdk-3.3.2.tgz" integrity sha512-+zhxT0YkBIEzHsuIayQGjr8g9NawZo6/HYfzg1NSEFsE2Yt0NyCWqVDFTuuak0T6AvIa2kNcl3r0Z8drdb2QmQ== dependencies: "@eth-optimism/contracts" "0.6.0" @@ -85,12 +85,12 @@ "@ethereumjs/rlp@^4.0.1": version "4.0.1" - resolved "https://registry.yarnpkg.com/@ethereumjs/rlp/-/rlp-4.0.1.tgz#626fabfd9081baab3d0a3074b0c7ecaf674aaa41" + resolved "https://registry.npmjs.org/@ethereumjs/rlp/-/rlp-4.0.1.tgz" integrity sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw== "@ethereumjs/util@^8.1.0": version "8.1.0" - resolved "https://registry.yarnpkg.com/@ethereumjs/util/-/util-8.1.0.tgz#299df97fb6b034e0577ce9f94c7d9d1004409ed4" + resolved "https://registry.npmjs.org/@ethereumjs/util/-/util-8.1.0.tgz" integrity sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA== dependencies: "@ethereumjs/rlp" "^4.0.1" @@ -99,7 +99,7 @@ "@ethersproject/abi@5.7.0", "@ethersproject/abi@^5.1.2", "@ethersproject/abi@^5.5.0", "@ethersproject/abi@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abi/-/abi-5.7.0.tgz#b3f3e045bbbeed1af3947335c247ad625a44e449" + resolved "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz" integrity sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA== dependencies: "@ethersproject/address" "^5.7.0" @@ -114,7 +114,7 @@ "@ethersproject/abstract-provider@5.7.0", "@ethersproject/abstract-provider@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz#b0a8550f88b6bf9d51f90e4795d48294630cb9ef" + resolved "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz" integrity sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw== dependencies: "@ethersproject/bignumber" "^5.7.0" @@ -127,7 +127,7 @@ "@ethersproject/abstract-signer@5.7.0", "@ethersproject/abstract-signer@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz#13f4f32117868452191a4649723cb086d2b596b2" + resolved "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz" integrity sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ== dependencies: "@ethersproject/abstract-provider" "^5.7.0" @@ -138,7 +138,7 @@ "@ethersproject/address@5.7.0", "@ethersproject/address@^5.0.2", "@ethersproject/address@^5.0.8", "@ethersproject/address@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/address/-/address-5.7.0.tgz#19b56c4d74a3b0a46bfdbb6cfcc0a153fc697f37" + resolved "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz" integrity sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA== dependencies: "@ethersproject/bignumber" "^5.7.0" @@ -149,14 +149,14 @@ "@ethersproject/base64@5.7.0", "@ethersproject/base64@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/base64/-/base64-5.7.0.tgz#ac4ee92aa36c1628173e221d0d01f53692059e1c" + resolved "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz" integrity sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ== dependencies: "@ethersproject/bytes" "^5.7.0" "@ethersproject/basex@5.7.0", "@ethersproject/basex@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/basex/-/basex-5.7.0.tgz#97034dc7e8938a8ca943ab20f8a5e492ece4020b" + resolved "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz" integrity sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw== dependencies: "@ethersproject/bytes" "^5.7.0" @@ -164,7 +164,7 @@ "@ethersproject/bignumber@5.7.0", "@ethersproject/bignumber@^5.1.1", "@ethersproject/bignumber@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bignumber/-/bignumber-5.7.0.tgz#e2f03837f268ba655ffba03a57853e18a18dc9c2" + resolved "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz" integrity sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw== dependencies: "@ethersproject/bytes" "^5.7.0" @@ -173,21 +173,21 @@ "@ethersproject/bytes@5.7.0", "@ethersproject/bytes@^5.0.8", "@ethersproject/bytes@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/bytes/-/bytes-5.7.0.tgz#a00f6ea8d7e7534d6d87f47188af1148d71f155d" + resolved "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz" integrity sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A== dependencies: "@ethersproject/logger" "^5.7.0" "@ethersproject/constants@5.7.0", "@ethersproject/constants@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/constants/-/constants-5.7.0.tgz#df80a9705a7e08984161f09014ea012d1c75295e" + resolved "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz" integrity sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA== dependencies: "@ethersproject/bignumber" "^5.7.0" "@ethersproject/contracts@5.7.0", "@ethersproject/contracts@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/contracts/-/contracts-5.7.0.tgz#c305e775abd07e48aa590e1a877ed5c316f8bd1e" + resolved "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz" integrity sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg== dependencies: "@ethersproject/abi" "^5.7.0" @@ -203,7 +203,7 @@ "@ethersproject/hash@5.7.0", "@ethersproject/hash@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hash/-/hash-5.7.0.tgz#eb7aca84a588508369562e16e514b539ba5240a7" + resolved "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz" integrity sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g== dependencies: "@ethersproject/abstract-signer" "^5.7.0" @@ -218,7 +218,7 @@ "@ethersproject/hdnode@5.7.0", "@ethersproject/hdnode@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/hdnode/-/hdnode-5.7.0.tgz#e627ddc6b466bc77aebf1a6b9e47405ca5aef9cf" + resolved "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz" integrity sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg== dependencies: "@ethersproject/abstract-signer" "^5.7.0" @@ -236,7 +236,7 @@ "@ethersproject/json-wallets@5.7.0", "@ethersproject/json-wallets@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz#5e3355287b548c32b368d91014919ebebddd5360" + resolved "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz" integrity sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g== dependencies: "@ethersproject/abstract-signer" "^5.7.0" @@ -255,7 +255,7 @@ "@ethersproject/keccak256@5.7.0", "@ethersproject/keccak256@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/keccak256/-/keccak256-5.7.0.tgz#3186350c6e1cd6aba7940384ec7d6d9db01f335a" + resolved "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz" integrity sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg== dependencies: "@ethersproject/bytes" "^5.7.0" @@ -263,19 +263,19 @@ "@ethersproject/logger@5.7.0", "@ethersproject/logger@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/logger/-/logger-5.7.0.tgz#6ce9ae168e74fecf287be17062b590852c311892" + resolved "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz" integrity sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig== "@ethersproject/networks@5.7.1", "@ethersproject/networks@^5.7.0": version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/networks/-/networks-5.7.1.tgz#118e1a981d757d45ccea6bb58d9fd3d9db14ead6" + resolved "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz" integrity sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ== dependencies: "@ethersproject/logger" "^5.7.0" "@ethersproject/pbkdf2@5.7.0", "@ethersproject/pbkdf2@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz#d2267d0a1f6e123f3771007338c47cccd83d3102" + resolved "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz" integrity sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw== dependencies: "@ethersproject/bytes" "^5.7.0" @@ -283,14 +283,14 @@ "@ethersproject/properties@5.7.0", "@ethersproject/properties@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/properties/-/properties-5.7.0.tgz#a6e12cb0439b878aaf470f1902a176033067ed30" + resolved "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz" integrity sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw== dependencies: "@ethersproject/logger" "^5.7.0" "@ethersproject/providers@5.7.2", "@ethersproject/providers@^5.7.0", "@ethersproject/providers@^5.7.2": version "5.7.2" - resolved "https://registry.yarnpkg.com/@ethersproject/providers/-/providers-5.7.2.tgz#f8b1a4f275d7ce58cf0a2eec222269a08beb18cb" + resolved "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz" integrity sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg== dependencies: "@ethersproject/abstract-provider" "^5.7.0" @@ -316,7 +316,7 @@ "@ethersproject/random@5.7.0", "@ethersproject/random@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/random/-/random-5.7.0.tgz#af19dcbc2484aae078bb03656ec05df66253280c" + resolved "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz" integrity sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ== dependencies: "@ethersproject/bytes" "^5.7.0" @@ -324,7 +324,7 @@ "@ethersproject/rlp@5.7.0", "@ethersproject/rlp@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/rlp/-/rlp-5.7.0.tgz#de39e4d5918b9d74d46de93af80b7685a9c21304" + resolved "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz" integrity sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w== dependencies: "@ethersproject/bytes" "^5.7.0" @@ -332,7 +332,7 @@ "@ethersproject/sha2@5.7.0", "@ethersproject/sha2@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/sha2/-/sha2-5.7.0.tgz#9a5f7a7824ef784f7f7680984e593a800480c9fb" + resolved "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz" integrity sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw== dependencies: "@ethersproject/bytes" "^5.7.0" @@ -341,7 +341,7 @@ "@ethersproject/signing-key@5.7.0", "@ethersproject/signing-key@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/signing-key/-/signing-key-5.7.0.tgz#06b2df39411b00bc57c7c09b01d1e41cf1b16ab3" + resolved "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz" integrity sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q== dependencies: "@ethersproject/bytes" "^5.7.0" @@ -353,7 +353,7 @@ "@ethersproject/solidity@5.7.0", "@ethersproject/solidity@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/solidity/-/solidity-5.7.0.tgz#5e9c911d8a2acce2a5ebb48a5e2e0af20b631cb8" + resolved "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz" integrity sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA== dependencies: "@ethersproject/bignumber" "^5.7.0" @@ -365,7 +365,7 @@ "@ethersproject/strings@5.7.0", "@ethersproject/strings@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/strings/-/strings-5.7.0.tgz#54c9d2a7c57ae8f1205c88a9d3a56471e14d5ed2" + resolved "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz" integrity sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg== dependencies: "@ethersproject/bytes" "^5.7.0" @@ -374,7 +374,7 @@ "@ethersproject/transactions@5.7.0", "@ethersproject/transactions@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/transactions/-/transactions-5.7.0.tgz#91318fc24063e057885a6af13fdb703e1f993d3b" + resolved "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz" integrity sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ== dependencies: "@ethersproject/address" "^5.7.0" @@ -389,7 +389,7 @@ "@ethersproject/units@5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/units/-/units-5.7.0.tgz#637b563d7e14f42deeee39245275d477aae1d8b1" + resolved "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz" integrity sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg== dependencies: "@ethersproject/bignumber" "^5.7.0" @@ -398,7 +398,7 @@ "@ethersproject/wallet@5.7.0", "@ethersproject/wallet@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wallet/-/wallet-5.7.0.tgz#4e5d0790d96fe21d61d38fb40324e6c7ef350b2d" + resolved "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz" integrity sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA== dependencies: "@ethersproject/abstract-provider" "^5.7.0" @@ -419,7 +419,7 @@ "@ethersproject/web@5.7.1", "@ethersproject/web@^5.7.0", "@ethersproject/web@^5.7.1": version "5.7.1" - resolved "https://registry.yarnpkg.com/@ethersproject/web/-/web-5.7.1.tgz#de1f285b373149bee5928f4eb7bcb87ee5fbb4ae" + resolved "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz" integrity sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w== dependencies: "@ethersproject/base64" "^5.7.0" @@ -430,7 +430,7 @@ "@ethersproject/wordlists@5.7.0", "@ethersproject/wordlists@^5.7.0": version "5.7.0" - resolved "https://registry.yarnpkg.com/@ethersproject/wordlists/-/wordlists-5.7.0.tgz#8fb2c07185d68c3e09eb3bfd6e779ba2774627f5" + resolved "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz" integrity sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA== dependencies: "@ethersproject/bytes" "^5.7.0" @@ -441,17 +441,17 @@ "@jridgewell/resolve-uri@^3.0.3": version "3.1.1" - resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz#c08679063f279615a3326583ba3a90d1d82cc721" + resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz" integrity sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA== "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.15" - resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== "@jridgewell/trace-mapping@0.3.9": version "0.3.9" - resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz" integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== dependencies: "@jridgewell/resolve-uri" "^3.0.3" @@ -459,7 +459,7 @@ "@metamask/eth-sig-util@^4.0.0": version "4.0.1" - resolved "https://registry.yarnpkg.com/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz#3ad61f6ea9ad73ba5b19db780d40d9aae5157088" + resolved "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz" integrity sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ== dependencies: ethereumjs-abi "^0.6.8" @@ -470,64 +470,64 @@ "@noble/curves@1.4.2", "@noble/curves@~1.4.0": version "1.4.2" - resolved "https://registry.yarnpkg.com/@noble/curves/-/curves-1.4.2.tgz#40309198c76ed71bc6dbf7ba24e81ceb4d0d1fe9" + resolved "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz" integrity sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw== dependencies: "@noble/hashes" "1.4.0" "@noble/hashes@1.2.0", "@noble/hashes@~1.2.0": version "1.2.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.2.0.tgz#a3150eeb09cc7ab207ebf6d7b9ad311a9bdbed12" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.2.0.tgz" integrity sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ== "@noble/hashes@1.4.0", "@noble/hashes@^1.4.0", "@noble/hashes@~1.4.0": version "1.4.0" - resolved "https://registry.yarnpkg.com/@noble/hashes/-/hashes-1.4.0.tgz#45814aa329f30e4fe0ba49426f49dfccdd066426" + resolved "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz" integrity sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg== "@noble/secp256k1@1.7.1", "@noble/secp256k1@~1.7.0": version "1.7.1" - resolved "https://registry.yarnpkg.com/@noble/secp256k1/-/secp256k1-1.7.1.tgz#b251c70f824ce3ca7f8dc3df08d58f005cc0507c" + resolved "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.7.1.tgz" integrity sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw== "@nomicfoundation/edr-darwin-arm64@0.3.8": version "0.3.8" - resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.3.8.tgz#09de1f03c0336670fce959f376f0fe9137545836" + resolved "https://registry.npmjs.org/@nomicfoundation/edr-darwin-arm64/-/edr-darwin-arm64-0.3.8.tgz" integrity sha512-eB0leCexS8sQEmfyD72cdvLj9djkBzQGP4wSQw6SNf2I4Sw4Cnzb3d45caG2FqFFjbvfqL0t+badUUIceqQuMw== "@nomicfoundation/edr-darwin-x64@0.3.8": version "0.3.8" - resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.3.8.tgz#c3ca237c74ed3b6fb800fd7f1de7174f4ad24f72" + resolved "https://registry.npmjs.org/@nomicfoundation/edr-darwin-x64/-/edr-darwin-x64-0.3.8.tgz" integrity sha512-JksVCS1N5ClwVF14EvO25HCQ+Laljh/KRfHERMVAC9ZwPbTuAd/9BtKvToCBi29uCHWqsXMI4lxCApYQv2nznw== "@nomicfoundation/edr-linux-arm64-gnu@0.3.8": version "0.3.8" - resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.3.8.tgz#08bd367789e745f4e78a8a87368fc470eea8a7de" + resolved "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-gnu/-/edr-linux-arm64-gnu-0.3.8.tgz" integrity sha512-raCE+fOeNXhVBLUo87cgsHSGvYYRB6arih4eG6B9KGACWK5Veebtm9xtKeiD8YCsdUlUfat6F7ibpeNm91fpsA== "@nomicfoundation/edr-linux-arm64-musl@0.3.8": version "0.3.8" - resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.3.8.tgz#9cab5cbec0052cb5812c6c66c463d28a756cd916" + resolved "https://registry.npmjs.org/@nomicfoundation/edr-linux-arm64-musl/-/edr-linux-arm64-musl-0.3.8.tgz" integrity sha512-PwiDp4wBZWMCIy29eKkv8moTKRrpiSDlrc+GQMSZLhOAm8T33JKKXPwD/2EbplbhCygJDGXZdtEKl9x9PaH66A== "@nomicfoundation/edr-linux-x64-gnu@0.3.8": version "0.3.8" - resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.3.8.tgz#d4a11b6ebcd1b29d7431d185c6df3e65a2cd4bde" + resolved "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-gnu/-/edr-linux-x64-gnu-0.3.8.tgz" integrity sha512-6AcvA/XKoipGap5jJmQ9Y6yT7Uf39D9lu2hBcDCXnXbMcXaDGw4mn1/L4R63D+9VGZyu1PqlcJixCUZlGGIWlg== "@nomicfoundation/edr-linux-x64-musl@0.3.8": version "0.3.8" - resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.3.8.tgz#b8eef960d06380a365866ddd1e97ecb7fbf6bd70" + resolved "https://registry.npmjs.org/@nomicfoundation/edr-linux-x64-musl/-/edr-linux-x64-musl-0.3.8.tgz" integrity sha512-cxb0sEmZjlwhYWO28sPsV64VDx31ekskhC1IsDXU1p9ntjHSJRmW4KEIqJ2O3QwJap/kLKfMS6TckvY10gjc6w== "@nomicfoundation/edr-win32-x64-msvc@0.3.8": version "0.3.8" - resolved "https://registry.yarnpkg.com/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.3.8.tgz#ac7061aeb07cc847c429513080b76bb05297a869" + resolved "https://registry.npmjs.org/@nomicfoundation/edr-win32-x64-msvc/-/edr-win32-x64-msvc-0.3.8.tgz" integrity sha512-yVuVPqRRNLZk7TbBMkKw7lzCvI8XO8fNTPTYxymGadjr9rEGRuNTU1yBXjfJ59I1jJU/X2TSkRk1OFX0P5tpZQ== "@nomicfoundation/edr@^0.3.7": version "0.3.8" - resolved "https://registry.yarnpkg.com/@nomicfoundation/edr/-/edr-0.3.8.tgz#28fe7ae4f462ae74a16cd1a714ff7b1cd9c22b4c" + resolved "https://registry.npmjs.org/@nomicfoundation/edr/-/edr-0.3.8.tgz" integrity sha512-u2UJ5QpznSHVkZRh6ePWoeVb6kmPrrqh08gCnZ9FHlJV9CITqlrTQHJkacd+INH31jx88pTAJnxePE4XAiH5qg== dependencies: "@nomicfoundation/edr-darwin-arm64" "0.3.8" @@ -540,19 +540,19 @@ "@nomicfoundation/ethereumjs-common@4.0.4": version "4.0.4" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz#9901f513af2d4802da87c66d6f255b510bef5acb" + resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-4.0.4.tgz" integrity sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg== dependencies: "@nomicfoundation/ethereumjs-util" "9.0.4" "@nomicfoundation/ethereumjs-rlp@5.0.4": version "5.0.4" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz#66c95256fc3c909f6fb18f6a586475fc9762fa30" + resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-5.0.4.tgz" integrity sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw== "@nomicfoundation/ethereumjs-tx@5.0.4": version "5.0.4" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.4.tgz#b0ceb58c98cc34367d40a30d255d6315b2f456da" + resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-5.0.4.tgz" integrity sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw== dependencies: "@nomicfoundation/ethereumjs-common" "4.0.4" @@ -562,15 +562,33 @@ "@nomicfoundation/ethereumjs-util@9.0.4": version "9.0.4" - resolved "https://registry.yarnpkg.com/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.4.tgz#84c5274e82018b154244c877b76bc049a4ed7b38" + resolved "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-9.0.4.tgz" integrity sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q== dependencies: "@nomicfoundation/ethereumjs-rlp" "5.0.4" ethereum-cryptography "0.1.3" +"@nomicfoundation/hardhat-chai-matchers@^2.0.8": + version "2.0.8" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.8.tgz#9c7cfc4ad0f0a5e9cf16aba8ab668c02f6e273aa" + integrity sha512-Z5PiCXH4xhNLASROlSUOADfhfpfhYO6D7Hn9xp8PddmHey0jq704cr6kfU8TRrQ4PUZbpfsZadPj+pCfZdjPIg== + dependencies: + "@types/chai-as-promised" "^7.1.3" + chai-as-promised "^7.1.1" + deep-eql "^4.0.1" + ordinal "^1.0.3" + +"@nomicfoundation/hardhat-ethers@^3.0.8": + version "3.0.8" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.8.tgz#af078f566373abeb77e11cbe69fe3dd47f8bfc27" + integrity sha512-zhOZ4hdRORls31DTOqg+GmEZM0ujly8GGIuRY7t7szEk2zW/arY1qDug/py8AEktT00v5K+b6RvbVog+va51IA== + dependencies: + debug "^4.1.1" + lodash.isequal "^4.5.0" + "@nomicfoundation/hardhat-foundry@^1.1.2": version "1.1.2" - resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-foundry/-/hardhat-foundry-1.1.2.tgz#4f5aaa1803b8f5d974dcbc361beb72d49c815562" + resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-foundry/-/hardhat-foundry-1.1.2.tgz" integrity sha512-f5Vhj3m2qvKGpr6NAINYwNgILDsai8dVCsFb1rAVLkJxOmD2pAtfCmOH5SBVr9yUI5B1z9rbTwPBJVrqnb+PXQ== dependencies: chalk "^2.4.2" @@ -582,7 +600,7 @@ "@nomicfoundation/solidity-analyzer-darwin-x64@0.1.1": version "0.1.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz#6e25ccdf6e2d22389c35553b64fe6f3fdaec432c" + resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.1.tgz" integrity sha512-XhQG4BaJE6cIbjAVtzGOGbK3sn1BO9W29uhk9J8y8fZF1DYz0Doj8QDMfpMu+A6TjPDs61lbsmeYodIDnfveSA== "@nomicfoundation/solidity-analyzer-freebsd-x64@0.1.1": @@ -627,7 +645,7 @@ "@nomicfoundation/solidity-analyzer@^0.1.0": version "0.1.1" - resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz#f5f4d36d3f66752f59a57e7208cd856f3ddf6f2d" + resolved "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.1.tgz" integrity sha512-1LMtXj1puAxyFusBgUIy5pZk3073cNXYnXUpuNKFghHbIit/xZgbk0AokpUADbNm3gyD6bFWl3LRFh3dhVdREg== optionalDependencies: "@nomicfoundation/solidity-analyzer-darwin-arm64" "0.1.1" @@ -641,14 +659,14 @@ "@nomicfoundation/solidity-analyzer-win32-ia32-msvc" "0.1.1" "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.1" -"@nomiclabs/hardhat-ethers@^2.1.1": +"@nomiclabs/hardhat-ethers@^2.0.1": version "2.2.3" resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz#b41053e360c31a32c2640c9a45ee981a7e603fe0" integrity sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg== "@nomiclabs/hardhat-etherscan@^3.1.0": version "3.1.7" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.7.tgz#72e3d5bd5d0ceb695e097a7f6f5ff6fcbf062b9a" + resolved "https://registry.npmjs.org/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.1.7.tgz" integrity sha512-tZ3TvSgpvsQ6B6OGmo1/Au6u8BrAkvs1mIC/eURA3xgIfznUZBhmpne8hv7BXUzw9xNL3fXdpOYgOQlVMTcoHQ== dependencies: "@ethersproject/abi" "^5.1.2" @@ -662,19 +680,14 @@ table "^6.8.0" undici "^5.14.0" -"@scure/base@~1.1.0": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.1.tgz#ebb651ee52ff84f420097055f4bf46cfba403938" - integrity sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA== - -"@scure/base@~1.1.6": +"@scure/base@~1.1.0", "@scure/base@~1.1.6": version "1.1.7" - resolved "https://registry.yarnpkg.com/@scure/base/-/base-1.1.7.tgz#fe973311a5c6267846aa131bc72e96c5d40d2b30" + resolved "https://registry.npmjs.org/@scure/base/-/base-1.1.7.tgz" integrity sha512-PPNYBslrLNNUQ/Yad37MHYsNQtK67EhWb6WtSvNLLPo7SdVZgkUjD6Dg+5On7zNwmskf8OX7I7Nx5oN+MIWE0g== "@scure/bip32@1.1.5": version "1.1.5" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.1.5.tgz#d2ccae16dcc2e75bc1d75f5ef3c66a338d1ba300" + resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.5.tgz" integrity sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw== dependencies: "@noble/hashes" "~1.2.0" @@ -683,7 +696,7 @@ "@scure/bip32@1.4.0": version "1.4.0" - resolved "https://registry.yarnpkg.com/@scure/bip32/-/bip32-1.4.0.tgz#4e1f1e196abedcef395b33b9674a042524e20d67" + resolved "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz" integrity sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg== dependencies: "@noble/curves" "~1.4.0" @@ -692,7 +705,7 @@ "@scure/bip39@1.1.1": version "1.1.1" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.1.1.tgz#b54557b2e86214319405db819c4b6a370cf340c5" + resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.1.tgz" integrity sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg== dependencies: "@noble/hashes" "~1.2.0" @@ -700,7 +713,7 @@ "@scure/bip39@1.3.0": version "1.3.0" - resolved "https://registry.yarnpkg.com/@scure/bip39/-/bip39-1.3.0.tgz#0f258c16823ddd00739461ac31398b4e7d6a18c3" + resolved "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz" integrity sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ== dependencies: "@noble/hashes" "~1.4.0" @@ -708,7 +721,7 @@ "@sentry/core@5.30.0": version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-5.30.0.tgz#6b203664f69e75106ee8b5a2fe1d717379b331f3" + resolved "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz" integrity sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg== dependencies: "@sentry/hub" "5.30.0" @@ -719,7 +732,7 @@ "@sentry/hub@5.30.0": version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-5.30.0.tgz#2453be9b9cb903404366e198bd30c7ca74cdc100" + resolved "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz" integrity sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ== dependencies: "@sentry/types" "5.30.0" @@ -728,7 +741,7 @@ "@sentry/minimal@5.30.0": version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-5.30.0.tgz#ce3d3a6a273428e0084adcb800bc12e72d34637b" + resolved "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz" integrity sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw== dependencies: "@sentry/hub" "5.30.0" @@ -737,7 +750,7 @@ "@sentry/node@^5.18.1": version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/node/-/node-5.30.0.tgz#4ca479e799b1021285d7fe12ac0858951c11cd48" + resolved "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz" integrity sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg== dependencies: "@sentry/core" "5.30.0" @@ -752,7 +765,7 @@ "@sentry/tracing@5.30.0": version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.30.0.tgz#501d21f00c3f3be7f7635d8710da70d9419d4e1f" + resolved "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz" integrity sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw== dependencies: "@sentry/hub" "5.30.0" @@ -763,21 +776,21 @@ "@sentry/types@5.30.0": version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-5.30.0.tgz#19709bbe12a1a0115bc790b8942917da5636f402" + resolved "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz" integrity sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw== "@sentry/utils@5.30.0": version "5.30.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-5.30.0.tgz#9a5bd7ccff85ccfe7856d493bffa64cabc41e980" + resolved "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz" integrity sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww== dependencies: "@sentry/types" "5.30.0" tslib "^1.9.3" -"@socket.tech/dl-core@^2.28.0": - version "2.28.0" - resolved "https://registry.yarnpkg.com/@socket.tech/dl-core/-/dl-core-2.28.0.tgz#1f62a6d53b362c2c16aed17ab2059c045d502d94" - integrity sha512-muKcbfyXqqQGHFWrCb5NecqeTY5A2zZneSRTFTOhg4lFrHsQ64H51II1iPkjhlUQhD+Gw6Nc/VXU9hwSJ+dG3g== +"@socket.tech/dl-core@^2.31.0": + version "2.31.0" + resolved "https://registry.yarnpkg.com/@socket.tech/dl-core/-/dl-core-2.31.0.tgz#496465b4240f2ee9dfc593235b10f5861713e1b5" + integrity sha512-FqvFWbSWiIXY/evzbbn+CNYtBzKKbmUBm0jA8nWxgaQNs7F0B3aueUwkXAHTHKE5iCcV5Fqfg+V8hfsmBq2uiQ== dependencies: axios "^1.3.6" prompts "^2.4.2" @@ -785,95 +798,102 @@ "@solidity-parser/parser@^0.16.0": version "0.16.1" - resolved "https://registry.yarnpkg.com/@solidity-parser/parser/-/parser-0.16.1.tgz#f7c8a686974e1536da0105466c4db6727311253c" + resolved "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.16.1.tgz" integrity sha512-PdhRFNhbTtu3x8Axm0uYpqOy/lODYQK+MlYSgqIsq2L8SFYEHJPHNUiOTAJbDGzNjjr1/n9AcIayxafR/fWmYw== dependencies: antlr4ts "^0.5.0-alpha.4" "@tsconfig/node10@^1.0.7": version "1.0.9" - resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.9.tgz#df4907fc07a886922637b15e02d4cebc4c0021b2" + resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz" integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA== "@tsconfig/node12@^1.0.7": version "1.0.11" - resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz" integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== "@tsconfig/node14@^1.0.0": version "1.0.3" - resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz" integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== "@tsconfig/node16@^1.0.2": version "1.0.4" - resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== -"@typechain/ethers-v5@^10.0.0": - version "10.2.1" - resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-10.2.1.tgz#50241e6957683281ecfa03fb5a6724d8a3ce2391" - integrity sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A== +"@typechain/ethers-v5@^11.1.2": + version "11.1.2" + resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-11.1.2.tgz#82510c1744f37a2f906b9e0532ac18c0b74ffe69" + integrity sha512-ID6pqWkao54EuUQa0P5RgjvfA3MYqxUQKpbGKERbsjBW5Ra7EIXvbMlPp2pcP5IAdUkyMCFYsP2SN5q7mPdLDQ== dependencies: lodash "^4.17.15" ts-essentials "^7.0.1" "@typechain/hardhat@^6.0.0": version "6.1.6" - resolved "https://registry.yarnpkg.com/@typechain/hardhat/-/hardhat-6.1.6.tgz#1a749eb35e5054c80df531cf440819cb347c62ea" + resolved "https://registry.npmjs.org/@typechain/hardhat/-/hardhat-6.1.6.tgz" integrity sha512-BiVnegSs+ZHVymyidtK472syodx1sXYlYJJixZfRstHVGYTi8V1O7QG4nsjyb0PC/LORcq7sfBUcHto1y6UgJA== dependencies: fs-extra "^9.1.0" "@types/bn.js@^4.11.3": version "4.11.6" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-4.11.6.tgz#c306c70d9358aaea33cd4eda092a742b9505967c" + resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz" integrity sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg== dependencies: "@types/node" "*" "@types/bn.js@^5.1.0": version "5.1.1" - resolved "https://registry.yarnpkg.com/@types/bn.js/-/bn.js-5.1.1.tgz#b51e1b55920a4ca26e9285ff79936bbdec910682" + resolved "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz" integrity sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g== dependencies: "@types/node" "*" +"@types/chai-as-promised@^7.1.3": + version "7.1.8" + resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz#f2b3d82d53c59626b5d6bbc087667ccb4b677fe9" + integrity sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw== + dependencies: + "@types/chai" "*" + +"@types/chai@*": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@types/chai/-/chai-5.0.0.tgz#7f981e71e69c9b2d422f58f78de1c59179782133" + integrity sha512-+DwhEHAaFPPdJ2ral3kNHFQXnTfscEEFsUxzD+d7nlcLrFK23JtNjH71RGasTcHb88b4vVi4mTyfpf8u2L8bdA== + "@types/lru-cache@^5.1.0": version "5.1.1" - resolved "https://registry.yarnpkg.com/@types/lru-cache/-/lru-cache-5.1.1.tgz#c48c2e27b65d2a153b19bfc1a317e30872e01eef" + resolved "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz" integrity sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw== "@types/mocha@^9.1.0": version "9.1.1" - resolved "https://registry.yarnpkg.com/@types/mocha/-/mocha-9.1.1.tgz#e7c4f1001eefa4b8afbd1eee27a237fee3bf29c4" + resolved "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.1.tgz" integrity sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw== -"@types/node@*": - version "20.4.9" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.4.9.tgz#c7164e0f8d3f12dfae336af0b1f7fdec8c6b204f" - integrity sha512-8e2HYcg7ohnTUbHk8focoklEQYvemQmu9M/f43DZVx43kHn0tE3BY/6gSDxS7k0SprtS0NHvj+L80cGLnoOUcQ== - -"@types/node@^18.11.9": +"@types/node@*", "@types/node@^18.11.9": version "18.17.4" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.17.4.tgz#bf8ae9875528929cc9930dc3f066cd0481fe1231" + resolved "https://registry.npmjs.org/@types/node/-/node-18.17.4.tgz" integrity sha512-ATL4WLgr7/W40+Sp1WnNTSKbgVn6Pvhc/2RHAdt8fl6NsQyp4oPCi2eKcGOvA494bwf1K/W6nGgZ9TwDqvpjdw== "@types/pbkdf2@^3.0.0": version "3.1.0" - resolved "https://registry.yarnpkg.com/@types/pbkdf2/-/pbkdf2-3.1.0.tgz#039a0e9b67da0cdc4ee5dab865caa6b267bb66b1" + resolved "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz" integrity sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ== dependencies: "@types/node" "*" "@types/prettier@^2.1.1": version "2.7.3" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz" integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== "@types/prompts@^2.4.9": version "2.4.9" - resolved "https://registry.yarnpkg.com/@types/prompts/-/prompts-2.4.9.tgz#8775a31e40ad227af511aa0d7f19a044ccbd371e" + resolved "https://registry.npmjs.org/@types/prompts/-/prompts-2.4.9.tgz" integrity sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA== dependencies: "@types/node" "*" @@ -881,58 +901,58 @@ "@types/qs@^6.9.7": version "6.9.7" - resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb" + resolved "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz" integrity sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw== "@types/secp256k1@^4.0.1": version "4.0.3" - resolved "https://registry.yarnpkg.com/@types/secp256k1/-/secp256k1-4.0.3.tgz#1b8e55d8e00f08ee7220b4d59a6abe89c37a901c" + resolved "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz" integrity sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w== dependencies: "@types/node" "*" "@types/yargs-parser@*": version "21.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.0.tgz#0c60e537fa790f5f9472ed2776c2b71ec117351b" + resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz" integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA== "@types/yargs@^17.0.22": version "17.0.24" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.24.tgz#b3ef8d50ad4aa6aecf6ddc97c580a00f5aa11902" + resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.24.tgz" integrity sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw== dependencies: "@types/yargs-parser" "*" acorn-walk@^8.1.1: version "8.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== acorn@^8.4.1: version "8.10.0" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz" integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== adm-zip@^0.4.16: version "0.4.16" - resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.4.16.tgz#cf4c508fdffab02c269cbc7f471a875f05570365" + resolved "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz" integrity sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg== aes-js@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" + resolved "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz" integrity sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw== agent-base@6: version "6.0.2" - resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== dependencies: debug "4" aggregate-error@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + resolved "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== dependencies: clean-stack "^2.0.0" @@ -940,7 +960,7 @@ aggregate-error@^3.0.0: ajv@^8.0.1: version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + resolved "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz" integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== dependencies: fast-deep-equal "^3.1.1" @@ -950,55 +970,55 @@ ajv@^8.0.1: ansi-align@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/ansi-align/-/ansi-align-3.0.1.tgz#0cdf12e111ace773a86e9a1fad1225c43cb19a59" + resolved "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz" integrity sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w== dependencies: string-width "^4.1.0" ansi-colors@4.1.1: version "4.1.1" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz" integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== ansi-colors@^4.1.0, ansi-colors@^4.1.1: version "4.1.3" - resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz" integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== ansi-escapes@^4.3.0: version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== dependencies: type-fest "^0.21.3" ansi-regex@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== ansi-styles@^3.2.1: version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== dependencies: color-convert "^1.9.0" ansi-styles@^4.0.0, ansi-styles@^4.1.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: color-convert "^2.0.1" antlr4ts@^0.5.0-alpha.4: version "0.5.0-alpha.4" - resolved "https://registry.yarnpkg.com/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz#71702865a87478ed0b40c0709f422cf14d51652a" + resolved "https://registry.npmjs.org/antlr4ts/-/antlr4ts-0.5.0-alpha.4.tgz" integrity sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ== anymatch@~3.1.2: version "3.1.3" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz" integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== dependencies: normalize-path "^3.0.0" @@ -1006,61 +1026,61 @@ anymatch@~3.1.2: arg@^4.1.0: version "4.1.3" - resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz" integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== argparse@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== array-back@^3.0.1, array-back@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-3.1.0.tgz#b8859d7a508871c9a7b2cf42f99428f65e96bfb0" + resolved "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz" integrity sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q== array-back@^4.0.1, array-back@^4.0.2: version "4.0.2" - resolved "https://registry.yarnpkg.com/array-back/-/array-back-4.0.2.tgz#8004e999a6274586beeb27342168652fdb89fa1e" + resolved "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz" integrity sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg== assertion-error@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" + resolved "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz" integrity sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw== astral-regex@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + resolved "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== async-mutex@^0.4.0: version "0.4.1" - resolved "https://registry.yarnpkg.com/async-mutex/-/async-mutex-0.4.1.tgz#bccf55b96f2baf8df90ed798cb5544a1f6ee4c2c" + resolved "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.1.tgz" integrity sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA== dependencies: tslib "^2.4.0" asynckit@^0.4.0: version "0.4.0" - resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz" integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== at-least-node@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + resolved "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz" integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== axios@^0.21.1: version "0.21.4" - resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.4.tgz#c67b90dc0568e5c1cf2b0b858c43ba28e2eda575" + resolved "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz" integrity sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg== dependencies: follow-redirects "^1.14.0" axios@^1.3.6: version "1.4.0" - resolved "https://registry.yarnpkg.com/axios/-/axios-1.4.0.tgz#38a7bf1224cd308de271146038b551d725f0be1f" + resolved "https://registry.npmjs.org/axios/-/axios-1.4.0.tgz" integrity sha512-S4XCWMEmzvo64T9GfvQDOXgYRDJ/wsSZc7Jvdgx5u1sd0JwsuPLqb3SYmusag+edF6ziyMensPVqLTSc1PiSEA== dependencies: follow-redirects "^1.15.0" @@ -1069,54 +1089,54 @@ axios@^1.3.6: balanced-match@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== base-x@^3.0.2: version "3.0.9" - resolved "https://registry.yarnpkg.com/base-x/-/base-x-3.0.9.tgz#6349aaabb58526332de9f60995e548a53fe21320" + resolved "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz" integrity sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ== dependencies: safe-buffer "^5.0.1" bech32@1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.4.tgz#e38c9f37bf179b8eb16ae3a772b40c356d4832e9" + resolved "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz" integrity sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ== bignumber.js@^9.0.1: version "9.1.2" - resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.2.tgz#b7c4242259c008903b13707983b5f4bbd31eda0c" + resolved "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.1.2.tgz" integrity sha512-2/mKyZH9K85bzOEfhXDBFZTGd1CTs+5IHpeFQo9luiBG7hghdC851Pj2WAhb6E3R6b9tZj/XKhbg4fum+Kepug== binary-extensions@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== blakejs@^1.1.0: version "1.2.1" - resolved "https://registry.yarnpkg.com/blakejs/-/blakejs-1.2.1.tgz#5057e4206eadb4a97f7c0b6e197a505042fc3814" + resolved "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz" integrity sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ== bn.js@4.11.6: version "4.11.6" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.6.tgz#53344adb14617a13f6e8dd2ce28905d1c0ba3215" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz" integrity sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA== bn.js@^4.11.0, bn.js@^4.11.8, bn.js@^4.11.9: version "4.12.0" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.12.0.tgz#775b3f278efbb9718eec7361f483fb36fbbfea88" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz" integrity sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA== bn.js@^5.2.0, bn.js@^5.2.1: version "5.2.1" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70" + resolved "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz" integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ== boxen@^5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/boxen/-/boxen-5.1.2.tgz#788cb686fc83c1f486dfa8a40c68fc2b831d2b50" + resolved "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz" integrity sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ== dependencies: ansi-align "^3.0.0" @@ -1130,7 +1150,7 @@ boxen@^5.1.2: brace-expansion@^1.1.7: version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" @@ -1138,31 +1158,31 @@ brace-expansion@^1.1.7: brace-expansion@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== dependencies: balanced-match "^1.0.0" braces@~3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + resolved "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== dependencies: fill-range "^7.0.1" brorand@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" + resolved "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz" integrity sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w== browser-stdout@1.3.1: version "1.3.1" - resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" + resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== browserify-aes@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.2.0.tgz#326734642f403dabc3003209853bb70ad428ef48" + resolved "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz" integrity sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA== dependencies: buffer-xor "^1.0.3" @@ -1174,14 +1194,14 @@ browserify-aes@^1.2.0: bs58@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/bs58/-/bs58-4.0.1.tgz#be161e76c354f6f788ae4071f63f34e8c4f0a42a" + resolved "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz" integrity sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw== dependencies: base-x "^3.0.2" bs58check@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/bs58check/-/bs58check-2.1.2.tgz#53b018291228d82a5aa08e7d796fdafda54aebfc" + resolved "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz" integrity sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA== dependencies: bs58 "^4.0.0" @@ -1190,39 +1210,39 @@ bs58check@^2.1.2: buffer-from@^1.0.0: version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== buffer-reverse@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/buffer-reverse/-/buffer-reverse-1.0.1.tgz#49283c8efa6f901bc01fa3304d06027971ae2f60" + resolved "https://registry.npmjs.org/buffer-reverse/-/buffer-reverse-1.0.1.tgz" integrity sha512-M87YIUBsZ6N924W57vDwT/aOu8hw7ZgdByz6ijksLjmHJELBASmYTTlNHRgjE+pTsT9oJXGaDSgqqwfdHotDUg== buffer-xor@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" + resolved "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz" integrity sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ== bufio@^1.0.7: version "1.2.1" - resolved "https://registry.yarnpkg.com/bufio/-/bufio-1.2.1.tgz#8d4ab3ddfcd5faa90f996f922f9397d41cbaf2de" + resolved "https://registry.npmjs.org/bufio/-/bufio-1.2.1.tgz" integrity sha512-9oR3zNdupcg/Ge2sSHQF3GX+kmvL/fTPvD0nd5AGLq8SjUYnTz+SlFjK/GXidndbZtIj+pVKXiWeR9w6e9wKCA== busboy@^1.6.0: version "1.6.0" - resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" + resolved "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz" integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== dependencies: streamsearch "^1.1.0" bytes@3.1.2: version "3.1.2" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== call-bind@^1.0.0: version "1.0.2" - resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + resolved "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz" integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== dependencies: function-bind "^1.1.1" @@ -1230,19 +1250,26 @@ call-bind@^1.0.0: camelcase@^6.0.0, camelcase@^6.2.0: version "6.3.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz" integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== cbor@^8.1.0: version "8.1.0" - resolved "https://registry.yarnpkg.com/cbor/-/cbor-8.1.0.tgz#cfc56437e770b73417a2ecbfc9caf6b771af60d5" + resolved "https://registry.npmjs.org/cbor/-/cbor-8.1.0.tgz" integrity sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg== dependencies: nofilter "^3.1.0" +chai-as-promised@^7.1.1: + version "7.1.2" + resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.2.tgz#70cd73b74afd519754161386421fb71832c6d041" + integrity sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw== + dependencies: + check-error "^1.0.2" + chai@^4.3.10, chai@^4.3.4: version "4.4.1" - resolved "https://registry.yarnpkg.com/chai/-/chai-4.4.1.tgz#3603fa6eba35425b0f2ac91a009fe924106e50d1" + resolved "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz" integrity sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g== dependencies: assertion-error "^1.1.0" @@ -1255,7 +1282,7 @@ chai@^4.3.10, chai@^4.3.4: chalk@^2.4.2: version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== dependencies: ansi-styles "^3.2.1" @@ -1264,22 +1291,22 @@ chalk@^2.4.2: chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" -check-error@^1.0.3: +check-error@^1.0.2, check-error@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.3.tgz#a6502e4312a7ee969f646e83bb3ddd56281bd694" + resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz" integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== dependencies: get-func-name "^2.0.2" chokidar@3.5.3, chokidar@^3.4.0, chokidar@^3.5.2: version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: anymatch "~3.1.2" @@ -1294,12 +1321,12 @@ chokidar@3.5.3, chokidar@^3.4.0, chokidar@^3.5.2: ci-info@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" + resolved "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" - resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" + resolved "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz" integrity sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q== dependencies: inherits "^2.0.1" @@ -1307,17 +1334,17 @@ cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: clean-stack@^2.0.0: version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + resolved "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== cli-boxes@^2.2.1: version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" + resolved "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== cliui@^7.0.2: version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: string-width "^4.2.0" @@ -1326,7 +1353,7 @@ cliui@^7.0.2: cliui@^8.0.1: version "8.0.1" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz" integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== dependencies: string-width "^4.2.0" @@ -1335,43 +1362,43 @@ cliui@^8.0.1: color-convert@^1.9.0: version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== dependencies: color-name "1.1.3" color-convert@^2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== dependencies: color-name "~1.1.4" color-name@1.1.3: version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== color-name@~1.1.4: version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== combined-stream@^1.0.8: version "1.0.8" - resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== dependencies: delayed-stream "~1.0.0" command-exists@^1.2.8: version "1.2.9" - resolved "https://registry.yarnpkg.com/command-exists/-/command-exists-1.2.9.tgz#c50725af3808c8ab0260fd60b01fbfa25b954f69" + resolved "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz" integrity sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w== command-line-args@^5.1.1: version "5.2.1" - resolved "https://registry.yarnpkg.com/command-line-args/-/command-line-args-5.2.1.tgz#c44c32e437a57d7c51157696893c5909e9cec42e" + resolved "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz" integrity sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg== dependencies: array-back "^3.1.0" @@ -1381,7 +1408,7 @@ command-line-args@^5.1.1: command-line-usage@^6.1.0: version "6.1.3" - resolved "https://registry.yarnpkg.com/command-line-usage/-/command-line-usage-6.1.3.tgz#428fa5acde6a838779dfa30e44686f4b6761d957" + resolved "https://registry.npmjs.org/command-line-usage/-/command-line-usage-6.1.3.tgz" integrity sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw== dependencies: array-back "^4.0.2" @@ -1391,17 +1418,17 @@ command-line-usage@^6.1.0: commander@3.0.2: version "3.0.2" - resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" + resolved "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== concat-map@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== concat-stream@^1.4.7: version "1.6.2" - resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + resolved "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz" integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== dependencies: buffer-from "^1.0.0" @@ -1411,17 +1438,17 @@ concat-stream@^1.4.7: cookie@^0.4.1: version "0.4.2" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + resolved "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== core-util-is@~1.0.0: version "1.0.3" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz" integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" + resolved "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== dependencies: cipher-base "^1.0.1" @@ -1432,7 +1459,7 @@ create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" - resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" + resolved "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== dependencies: cipher-base "^1.0.3" @@ -1444,12 +1471,12 @@ create-hmac@^1.1.4, create-hmac@^1.1.7: create-require@^1.1.0: version "1.1.1" - resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== cross-spawn@^5.0.1: version "5.1.0" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz" integrity sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A== dependencies: lru-cache "^4.0.1" @@ -1458,41 +1485,41 @@ cross-spawn@^5.0.1: crypto-js@^4.2.0: version "4.2.0" - resolved "https://registry.yarnpkg.com/crypto-js/-/crypto-js-4.2.0.tgz#4d931639ecdfd12ff80e8186dba6af2c2e856631" + resolved "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz" integrity sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q== debug@4, debug@4.3.4, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2: version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + resolved "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" decamelize@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== -deep-eql@^4.1.3: +deep-eql@^4.0.1, deep-eql@^4.1.3: version "4.1.4" - resolved "https://registry.yarnpkg.com/deep-eql/-/deep-eql-4.1.4.tgz#d0d3912865911bb8fac5afb4e3acfa6a28dc72b7" + resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz" integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg== dependencies: type-detect "^4.0.0" deep-extend@~0.6.0: version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + resolved "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz" integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== delayed-stream@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz" integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== delete-empty@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/delete-empty/-/delete-empty-3.0.0.tgz#f8040f2669f26fa7060bc2304e9859c593b685e8" + resolved "https://registry.npmjs.org/delete-empty/-/delete-empty-3.0.0.tgz" integrity sha512-ZUyiwo76W+DYnKsL3Kim6M/UOavPdBJgDYWOmuQhYaZvJH0AXAHbUNyEDtRbBra8wqqr686+63/0azfEk1ebUQ== dependencies: ansi-colors "^4.1.0" @@ -1502,27 +1529,27 @@ delete-empty@^3.0.0: depd@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== diff@5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + resolved "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz" integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== diff@^4.0.1: version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== dotenv@^16.0.3: version "16.3.1" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" + resolved "https://registry.npmjs.org/dotenv/-/dotenv-16.3.1.tgz" integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.4: version "6.5.4" - resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.4.tgz#da37cebd31e79a1367e941b592ed1fbebd58abbb" + resolved "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz" integrity sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ== dependencies: bn.js "^4.11.9" @@ -1535,17 +1562,17 @@ elliptic@6.5.4, elliptic@^6.5.2, elliptic@^6.5.4: emoji-regex@^8.0.0: version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== encode-utf8@^1.0.2: version "1.0.3" - resolved "https://registry.yarnpkg.com/encode-utf8/-/encode-utf8-1.0.3.tgz#f30fdd31da07fb596f281beb2f6b027851994cda" + resolved "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz" integrity sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw== enquirer@^2.3.0, enquirer@^2.3.6: version "2.4.1" - resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.4.1.tgz#93334b3fbd74fc7097b224ab4a8fb7e40bf4ae56" + resolved "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz" integrity sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ== dependencies: ansi-colors "^4.1.1" @@ -1553,34 +1580,34 @@ enquirer@^2.3.0, enquirer@^2.3.6: env-paths@^2.2.0: version "2.2.1" - resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz" integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== escalade@^3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== escape-string-regexp@4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== escape-string-regexp@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== ethereum-bloom-filters@^1.0.6: version "1.1.0" - resolved "https://registry.yarnpkg.com/ethereum-bloom-filters/-/ethereum-bloom-filters-1.1.0.tgz#b3fc1eb789509ee30db0bf99a2988ccacb8d0397" + resolved "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.1.0.tgz" integrity sha512-J1gDRkLpuGNvWYzWslBQR9cDV4nd4kfvVTE/Wy4Kkm4yb3EYRSlyi0eB/inTsSTTVyA0+HyzHgbr95Fn/Z1fSw== dependencies: "@noble/hashes" "^1.4.0" ethereum-cryptography@0.1.3, ethereum-cryptography@^0.1.3: version "0.1.3" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz#8d6143cfc3d74bf79bbd8edecdf29e4ae20dd191" + resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz" integrity sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ== dependencies: "@types/pbkdf2" "^3.0.0" @@ -1601,7 +1628,7 @@ ethereum-cryptography@0.1.3, ethereum-cryptography@^0.1.3: ethereum-cryptography@^1.0.3: version "1.2.0" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz#5ccfa183e85fdaf9f9b299a79430c044268c9b3a" + resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.2.0.tgz" integrity sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw== dependencies: "@noble/hashes" "1.2.0" @@ -1611,7 +1638,7 @@ ethereum-cryptography@^1.0.3: ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2: version "2.2.1" - resolved "https://registry.yarnpkg.com/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz#58f2810f8e020aecb97de8c8c76147600b0b8ccf" + resolved "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz" integrity sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg== dependencies: "@noble/curves" "1.4.2" @@ -1621,7 +1648,7 @@ ethereum-cryptography@^2.0.0, ethereum-cryptography@^2.1.2: ethereumjs-abi@^0.6.8: version "0.6.8" - resolved "https://registry.yarnpkg.com/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz#71bc152db099f70e62f108b7cdfca1b362c6fcae" + resolved "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz" integrity sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA== dependencies: bn.js "^4.11.8" @@ -1629,7 +1656,7 @@ ethereumjs-abi@^0.6.8: ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: version "6.2.1" - resolved "https://registry.yarnpkg.com/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz#fcb4e4dd5ceacb9d2305426ab1a5cd93e3163b69" + resolved "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz" integrity sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw== dependencies: "@types/bn.js" "^4.11.3" @@ -1642,7 +1669,7 @@ ethereumjs-util@^6.0.0, ethereumjs-util@^6.2.1: ethers@^5.1.0, ethers@^5.5.3, ethers@^5.6.6, ethers@^5.7.2: version "5.7.2" - resolved "https://registry.yarnpkg.com/ethers/-/ethers-5.7.2.tgz#3a7deeabbb8c030d4126b24f84e525466145872e" + resolved "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz" integrity sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg== dependencies: "@ethersproject/abi" "5.7.0" @@ -1678,7 +1705,7 @@ ethers@^5.1.0, ethers@^5.5.3, ethers@^5.6.6, ethers@^5.7.2: ethjs-unit@0.1.6: version "0.1.6" - resolved "https://registry.yarnpkg.com/ethjs-unit/-/ethjs-unit-0.1.6.tgz#c665921e476e87bce2a9d588a6fe0405b2c41699" + resolved "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz" integrity sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw== dependencies: bn.js "4.11.6" @@ -1686,7 +1713,7 @@ ethjs-unit@0.1.6: ethjs-util@0.1.6, ethjs-util@^0.1.6: version "0.1.6" - resolved "https://registry.yarnpkg.com/ethjs-util/-/ethjs-util-0.1.6.tgz#f308b62f185f9fe6237132fb2a9818866a5cd536" + resolved "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz" integrity sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w== dependencies: is-hex-prefixed "1.0.0" @@ -1694,7 +1721,7 @@ ethjs-util@0.1.6, ethjs-util@^0.1.6: evp_bytestokey@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz#7fcbdb198dc71959432efe13842684e0525acb02" + resolved "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz" integrity sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA== dependencies: md5.js "^1.3.4" @@ -1702,26 +1729,26 @@ evp_bytestokey@^1.0.3: fast-deep-equal@^3.1.1: version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== fill-range@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== dependencies: to-regex-range "^5.0.1" find-replace@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/find-replace/-/find-replace-3.0.0.tgz#3e7e23d3b05167a76f770c9fbd5258b0def68c38" + resolved "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz" integrity sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ== dependencies: array-back "^3.0.1" find-up@5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== dependencies: locate-path "^6.0.0" @@ -1729,50 +1756,45 @@ find-up@5.0.0: find-up@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + resolved "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz" integrity sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ== dependencies: locate-path "^2.0.0" flat@^5.0.2: version "5.0.2" - resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== fmix@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/fmix/-/fmix-0.1.0.tgz#c7bbf124dec42c9d191cfb947d0a9778dd986c0c" + resolved "https://registry.npmjs.org/fmix/-/fmix-0.1.0.tgz" integrity sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w== dependencies: imul "^1.0.0" follow-redirects@^1.12.1, follow-redirects@^1.14.0, follow-redirects@^1.15.0: version "1.15.2" - resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== form-data@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz" integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" mime-types "^2.1.12" -fp-ts@1.19.3: +fp-ts@1.19.3, fp-ts@^1.0.0: version "1.19.3" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.3.tgz#261a60d1088fbff01f91256f91d21d0caaaaa96f" + resolved "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz" integrity sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg== -fp-ts@^1.0.0: - version "1.19.5" - resolved "https://registry.yarnpkg.com/fp-ts/-/fp-ts-1.19.5.tgz#3da865e585dfa1fdfd51785417357ac50afc520a" - integrity sha512-wDNqTimnzs8QqpldiId9OavWK2NptormjXnRJTQecNjzwfyp6P/8s/zG8e4h3ja3oqkKaY72UlTjQYt/1yXf9A== - fs-extra@^0.30.0: version "0.30.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz" integrity sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA== dependencies: graceful-fs "^4.1.2" @@ -1783,7 +1805,7 @@ fs-extra@^0.30.0: fs-extra@^10.0.0: version "10.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz" integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ== dependencies: graceful-fs "^4.2.0" @@ -1792,7 +1814,7 @@ fs-extra@^10.0.0: fs-extra@^7.0.0, fs-extra@^7.0.1: version "7.0.1" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz" integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== dependencies: graceful-fs "^4.1.2" @@ -1801,7 +1823,7 @@ fs-extra@^7.0.0, fs-extra@^7.0.1: fs-extra@^9.1.0: version "9.1.0" - resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.1.0.tgz#5954460c764a8da2094ba3554bf839e6b9a7c86d" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== dependencies: at-least-node "^1.0.0" @@ -1811,32 +1833,32 @@ fs-extra@^9.1.0: fs.realpath@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== fsevents@~2.3.2: version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== function-bind@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== get-caller-file@^2.0.5: version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== get-func-name@^2.0.1, get-func-name@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/get-func-name/-/get-func-name-2.0.2.tgz#0d7cf20cd13fda808669ffa88f4ffc7a3943fc41" + resolved "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz" integrity sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ== get-intrinsic@^1.0.2: version "1.2.1" - resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz" integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== dependencies: function-bind "^1.1.1" @@ -1846,14 +1868,14 @@ get-intrinsic@^1.0.2: glob-parent@~5.1.2: version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== dependencies: is-glob "^4.0.1" glob@7.1.7: version "7.1.7" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + resolved "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz" integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== dependencies: fs.realpath "^1.0.0" @@ -1863,9 +1885,9 @@ glob@7.1.7: once "^1.3.0" path-is-absolute "^1.0.0" -glob@7.2.0: +glob@7.2.0, glob@^7.1.3: version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + resolved "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz" integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" @@ -1875,26 +1897,14 @@ glob@7.2.0: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0: version "4.2.11" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz" integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== hardhat-abi-exporter@^2.10.1: version "2.10.1" - resolved "https://registry.yarnpkg.com/hardhat-abi-exporter/-/hardhat-abi-exporter-2.10.1.tgz#b14884e233c73fe3f43360f014ad7fd6df4b6d25" + resolved "https://registry.npmjs.org/hardhat-abi-exporter/-/hardhat-abi-exporter-2.10.1.tgz" integrity sha512-X8GRxUTtebMAd2k4fcPyVnCdPa6dYK4lBsrwzKP5yiSq4i+WadWPIumaLfce53TUf/o2TnLpLOduyO1ylE2NHQ== dependencies: "@ethersproject/abi" "^5.5.0" @@ -1902,12 +1912,12 @@ hardhat-abi-exporter@^2.10.1: hardhat-change-network@^0.0.7: version "0.0.7" - resolved "https://registry.yarnpkg.com/hardhat-change-network/-/hardhat-change-network-0.0.7.tgz#9f9b7943ff966515658b70bf5e44bc2f073af402" + resolved "https://registry.npmjs.org/hardhat-change-network/-/hardhat-change-network-0.0.7.tgz" integrity sha512-Usp9fJan9SOJnOlVcv/jMJDchseE7bIDA5ZsBnracgVk4MiBwkvMqpmLWn5G1aDBvnUCthvS2gO3odfahgkV0Q== hardhat-deploy@^0.11.20: version "0.11.34" - resolved "https://registry.yarnpkg.com/hardhat-deploy/-/hardhat-deploy-0.11.34.tgz#61252ebf5dfdda7b0b31298dd5580b0735c05910" + resolved "https://registry.npmjs.org/hardhat-deploy/-/hardhat-deploy-0.11.34.tgz" integrity sha512-N6xcwD8LSMV/IyfEr8TfR2YRbOh9Q4QvitR9MKZRTXQmgQiiMGjX+2efMjKgNMxwCVlmpfnE1tyDxOJOOUseLQ== dependencies: "@ethersproject/abi" "^5.7.0" @@ -1937,14 +1947,14 @@ hardhat-deploy@^0.11.20: hardhat-preprocessor@^0.1.4: version "0.1.5" - resolved "https://registry.yarnpkg.com/hardhat-preprocessor/-/hardhat-preprocessor-0.1.5.tgz#75b22641fd6a680739c995d03bd5f7868eb72144" + resolved "https://registry.npmjs.org/hardhat-preprocessor/-/hardhat-preprocessor-0.1.5.tgz" integrity sha512-j8m44mmPxpxAAd0G8fPHRHOas/INZdzptSur0TNJvMEGcFdLDhbHHxBcqZVQ/bmiW42q4gC60AP4CXn9EF018g== dependencies: murmur-128 "^0.2.1" hardhat@^2.17.2: version "2.22.4" - resolved "https://registry.yarnpkg.com/hardhat/-/hardhat-2.22.4.tgz#766227b6cefca5dbf4fd15ab5b5a68138fa13baf" + resolved "https://registry.npmjs.org/hardhat/-/hardhat-2.22.4.tgz" integrity sha512-09qcXJFBHQUaraJkYNr7XlmwjOj27xBB0SL2rYS024hTj9tPMbp26AFjlf5quBMO9SR4AJFg+4qWahcYcvXBuQ== dependencies: "@ethersproject/abi" "^5.1.2" @@ -1993,34 +2003,34 @@ hardhat@^2.17.2: has-flag@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw== has-flag@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== has-proto@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + resolved "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz" integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== has-symbols@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== has@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz" integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: function-bind "^1.1.1" hash-base@^3.0.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + resolved "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz" integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== dependencies: inherits "^2.0.4" @@ -2029,7 +2039,7 @@ hash-base@^3.0.0: hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: version "1.1.7" - resolved "https://registry.yarnpkg.com/hash.js/-/hash.js-1.1.7.tgz#0babca538e8d4ee4a0f8988d68866537a003cf42" + resolved "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz" integrity sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA== dependencies: inherits "^2.0.3" @@ -2037,12 +2047,12 @@ hash.js@1.1.7, hash.js@^1.0.0, hash.js@^1.0.3, hash.js@^1.1.7: he@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== hmac-drbg@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/hmac-drbg/-/hmac-drbg-1.0.1.tgz#d2745701025a6c775a6c545793ed502fc0c649a1" + resolved "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz" integrity sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg== dependencies: hash.js "^1.0.3" @@ -2051,7 +2061,7 @@ hmac-drbg@^1.0.1: http-errors@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz" integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== dependencies: depd "2.0.0" @@ -2062,7 +2072,7 @@ http-errors@2.0.0: https-proxy-agent@^5.0.0: version "5.0.1" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== dependencies: agent-base "6" @@ -2070,29 +2080,29 @@ https-proxy-agent@^5.0.0: iconv-lite@0.4.24: version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== dependencies: safer-buffer ">= 2.1.2 < 3" immutable@^4.0.0-rc.12: version "4.3.2" - resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.2.tgz#f89d910f8dfb6e15c03b2cae2faaf8c1f66455fe" + resolved "https://registry.npmjs.org/immutable/-/immutable-4.3.2.tgz" integrity sha512-oGXzbEDem9OOpDWZu88jGiYCvIsLHMvGw+8OXlpsvTFvIQplQbjg1B1cvKg8f7Hoch6+NGjpPsH1Fr+Mc2D1aA== imul@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/imul/-/imul-1.0.1.tgz#9d5867161e8b3de96c2c38d5dc7cb102f35e2ac9" + resolved "https://registry.npmjs.org/imul/-/imul-1.0.1.tgz" integrity sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA== indent-string@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + resolved "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== inflight@^1.0.4: version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== dependencies: once "^1.3.0" @@ -2100,104 +2110,104 @@ inflight@^1.0.4: inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== io-ts@1.10.4: version "1.10.4" - resolved "https://registry.yarnpkg.com/io-ts/-/io-ts-1.10.4.tgz#cd5401b138de88e4f920adbcb7026e2d1967e6e2" + resolved "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz" integrity sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g== dependencies: fp-ts "^1.0.0" is-binary-path@~2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== dependencies: binary-extensions "^2.0.0" is-extglob@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== is-fullwidth-code-point@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== dependencies: is-extglob "^2.1.1" is-hex-prefixed@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" + resolved "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz" integrity sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA== is-number@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-plain-obj@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz" integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== is-unicode-supported@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== isarray@~1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== isexe@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== js-sha3@0.8.0, js-sha3@^0.8.0: version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" + resolved "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz" integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== js-yaml@4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== dependencies: argparse "^2.0.1" json-schema-traverse@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz" integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== jsonfile@^2.1.0: version "2.4.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz" integrity sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw== optionalDependencies: graceful-fs "^4.1.6" jsonfile@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz" integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== optionalDependencies: graceful-fs "^4.1.6" jsonfile@^6.0.1: version "6.1.0" - resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae" + resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz" integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ== dependencies: universalify "^2.0.0" @@ -2206,7 +2216,7 @@ jsonfile@^6.0.1: keccak@^3.0.0, keccak@^3.0.2: version "3.0.3" - resolved "https://registry.yarnpkg.com/keccak/-/keccak-3.0.3.tgz#4bc35ad917be1ef54ff246f904c2bbbf9ac61276" + resolved "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz" integrity sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ== dependencies: node-addon-api "^2.0.0" @@ -2215,19 +2225,19 @@ keccak@^3.0.0, keccak@^3.0.2: klaw@^1.0.0: version "1.3.1" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439" + resolved "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz" integrity sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw== optionalDependencies: graceful-fs "^4.1.9" kleur@^3.0.3: version "3.0.3" - resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz" integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== locate-path@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz" integrity sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA== dependencies: p-locate "^2.0.0" @@ -2235,29 +2245,34 @@ locate-path@^2.0.0: locate-path@^6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== dependencies: p-locate "^5.0.0" lodash.camelcase@^4.3.0: version "4.3.0" - resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== + lodash.truncate@^4.4.2: version "4.4.2" - resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== lodash@^4.17.11, lodash@^4.17.15, lodash@^4.17.21: version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== log-symbols@4.1.0: version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== dependencies: chalk "^4.1.0" @@ -2265,44 +2280,37 @@ log-symbols@4.1.0: loupe@^2.3.6: version "2.3.7" - resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" + resolved "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz" integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== dependencies: get-func-name "^2.0.1" lru-cache@^4.0.1: version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz" integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== dependencies: pseudomap "^1.0.2" yallist "^2.1.2" -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - lru_map@^0.3.3: version "0.3.3" - resolved "https://registry.yarnpkg.com/lru_map/-/lru_map-0.3.3.tgz#b5c8351b9464cbd750335a79650a0ec0e56118dd" + resolved "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz" integrity sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ== make-error@^1.1.1: version "1.3.6" - resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz" integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== match-all@^1.2.6: version "1.2.6" - resolved "https://registry.yarnpkg.com/match-all/-/match-all-1.2.6.tgz#66d276ad6b49655551e63d3a6ee53e8be0566f8d" + resolved "https://registry.npmjs.org/match-all/-/match-all-1.2.6.tgz" integrity sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ== md5.js@^1.3.4: version "1.3.5" - resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f" + resolved "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz" integrity sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg== dependencies: hash-base "^3.0.0" @@ -2311,12 +2319,12 @@ md5.js@^1.3.4: memorystream@^0.3.1: version "0.3.1" - resolved "https://registry.yarnpkg.com/memorystream/-/memorystream-0.3.1.tgz#86d7090b30ce455d63fbae12dda51a47ddcaf9b2" + resolved "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz" integrity sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw== merkletreejs@^0.3.11: version "0.3.11" - resolved "https://registry.yarnpkg.com/merkletreejs/-/merkletreejs-0.3.11.tgz#e0de05c3ca1fd368de05a12cb8efb954ef6fc04f" + resolved "https://registry.npmjs.org/merkletreejs/-/merkletreejs-0.3.11.tgz" integrity sha512-LJKTl4iVNTndhL+3Uz/tfkjD0klIWsHlUzgtuNnNrsf7bAlXR30m+xYB7lHr5Z/l6e/yAIsr26Dabx6Buo4VGQ== dependencies: bignumber.js "^9.0.1" @@ -2327,65 +2335,65 @@ merkletreejs@^0.3.11: micro-ftch@^0.3.1: version "0.3.1" - resolved "https://registry.yarnpkg.com/micro-ftch/-/micro-ftch-0.3.1.tgz#6cb83388de4c1f279a034fb0cf96dfc050853c5f" + resolved "https://registry.npmjs.org/micro-ftch/-/micro-ftch-0.3.1.tgz" integrity sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg== mime-db@1.52.0: version "1.52.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz" integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== mime-types@^2.1.12: version "2.1.35" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== dependencies: mime-db "1.52.0" minimalistic-assert@^1.0.0, minimalistic-assert@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + resolved "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== minimalistic-crypto-utils@^1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a" + resolved "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz" integrity sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg== minimatch@5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz" integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== dependencies: brace-expansion "^2.0.1" -minimatch@^3.0.4, minimatch@^3.1.1: +minimatch@^3.0.4: version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" minimist@^1.2.0: version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== mkdirp@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== mnemonist@^0.38.0: version "0.38.5" - resolved "https://registry.yarnpkg.com/mnemonist/-/mnemonist-0.38.5.tgz#4adc7f4200491237fe0fa689ac0b86539685cade" + resolved "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz" integrity sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg== dependencies: obliterator "^2.0.0" mocha@^10.0.0: version "10.2.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" + resolved "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz" integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== dependencies: ansi-colors "4.1.1" @@ -2412,17 +2420,17 @@ mocha@^10.0.0: ms@2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== ms@2.1.3: version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== murmur-128@^0.2.1: version "0.2.1" - resolved "https://registry.yarnpkg.com/murmur-128/-/murmur-128-0.2.1.tgz#a9f6568781d2350ecb1bf80c14968cadbeaa4b4d" + resolved "https://registry.npmjs.org/murmur-128/-/murmur-128-0.2.1.tgz" integrity sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg== dependencies: encode-utf8 "^1.0.2" @@ -2431,39 +2439,39 @@ murmur-128@^0.2.1: nanoid@3.3.3: version "3.3.3" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" + resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz" integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== node-addon-api@^2.0.0: version "2.0.2" - resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-2.0.2.tgz#432cfa82962ce494b132e9d72a15b29f71ff5d32" + resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz" integrity sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA== node-fetch@^2.6.7: version "2.7.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.7.0.tgz#d0f0fa6e3e2dc1d27efcd8ad99d550bda94d187d" + resolved "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz" integrity sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A== dependencies: whatwg-url "^5.0.0" node-gyp-build@^4.2.0: version "4.6.0" - resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" + resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz" integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== nofilter@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-3.1.0.tgz#c757ba68801d41ff930ba2ec55bab52ca184aa66" + resolved "https://registry.npmjs.org/nofilter/-/nofilter-3.1.0.tgz" integrity sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g== normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== number-to-bn@1.7.0: version "1.7.0" - resolved "https://registry.yarnpkg.com/number-to-bn/-/number-to-bn-1.7.0.tgz#bb3623592f7e5f9e0030b1977bd41a0c53fe1ea0" + resolved "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz" integrity sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig== dependencies: bn.js "4.11.6" @@ -2471,104 +2479,109 @@ number-to-bn@1.7.0: object-inspect@^1.9.0: version "1.12.3" - resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz" integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== obliterator@^2.0.0: version "2.0.4" - resolved "https://registry.yarnpkg.com/obliterator/-/obliterator-2.0.4.tgz#fa650e019b2d075d745e44f1effeb13a2adbe816" + resolved "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz" integrity sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ== once@^1.3.0: version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz" integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== dependencies: wrappy "1" +ordinal@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/ordinal/-/ordinal-1.0.3.tgz#1a3c7726a61728112f50944ad7c35c06ae3a0d4d" + integrity sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ== + os-shim@^0.1.2: version "0.1.3" - resolved "https://registry.yarnpkg.com/os-shim/-/os-shim-0.1.3.tgz#6b62c3791cf7909ea35ed46e17658bb417cb3917" + resolved "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz" integrity sha512-jd0cvB8qQ5uVt0lvCIexBaROw1KyKm5sbulg2fWOHjETisuCzWyt+eTZKEMs8v6HwzoGs8xik26jg7eCM6pS+A== os-tmpdir@~1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + resolved "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== p-limit@^1.1.0: version "1.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz" integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== dependencies: p-try "^1.0.0" p-limit@^3.0.2: version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== dependencies: yocto-queue "^0.1.0" p-locate@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz" integrity sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg== dependencies: p-limit "^1.1.0" p-locate@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== dependencies: p-limit "^3.0.2" p-map@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + resolved "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz" integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== dependencies: aggregate-error "^3.0.0" p-try@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + resolved "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz" integrity sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww== path-exists@^3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz" integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ== path-exists@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== path-is-absolute@^1.0.0: version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== path-parse@^1.0.6: version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== path-starts-with@^2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/path-starts-with/-/path-starts-with-2.0.1.tgz#cd8b6213c141a9f2dd86c748310acdfa6493abb1" + resolved "https://registry.npmjs.org/path-starts-with/-/path-starts-with-2.0.1.tgz" integrity sha512-wZ3AeiRBRlNwkdUxvBANh0+esnt38DLffHDujZyRHkqkaKHTglnY2EP5UX3b8rdeiSutgO4y9NEJwXezNP5vHg== pathval@^1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" + resolved "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz" integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== pbkdf2@^3.0.17: version "3.1.2" - resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" + resolved "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz" integrity sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA== dependencies: create-hash "^1.1.2" @@ -2579,12 +2592,12 @@ pbkdf2@^3.0.17: picomatch@^2.0.4, picomatch@^2.2.1: version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== pre-commit@^1.2.2: version "1.2.2" - resolved "https://registry.yarnpkg.com/pre-commit/-/pre-commit-1.2.2.tgz#dbcee0ee9de7235e57f79c56d7ce94641a69eec6" + resolved "https://registry.npmjs.org/pre-commit/-/pre-commit-1.2.2.tgz" integrity sha512-qokTiqxD6GjODy5ETAIgzsRgnBWWQHQH2ghy86PU7mIn/wuWeTwF3otyNQZxWBwVn8XNr8Tdzj/QfUXpH+gRZA== dependencies: cross-spawn "^5.0.1" @@ -2593,7 +2606,7 @@ pre-commit@^1.2.2: prettier-plugin-solidity@^1.0.0-beta.13: version "1.1.3" - resolved "https://registry.yarnpkg.com/prettier-plugin-solidity/-/prettier-plugin-solidity-1.1.3.tgz#9a35124f578404caf617634a8cab80862d726cba" + resolved "https://registry.npmjs.org/prettier-plugin-solidity/-/prettier-plugin-solidity-1.1.3.tgz" integrity sha512-fQ9yucPi2sBbA2U2Xjh6m4isUTJ7S7QLc/XDDsktqqxYfTwdYKJ0EnnywXHwCGAaYbQNK+HIYPL1OemxuMsgeg== dependencies: "@solidity-parser/parser" "^0.16.0" @@ -2602,17 +2615,17 @@ prettier-plugin-solidity@^1.0.0-beta.13: prettier@^2.3.1, prettier@^2.6.1: version "2.8.8" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + resolved "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== process-nextick-args@~2.0.0: version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== prompts@^2.4.2: version "2.4.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz" integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== dependencies: kleur "^3.0.3" @@ -2620,36 +2633,36 @@ prompts@^2.4.2: proxy-from-env@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz" integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== pseudomap@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + resolved "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz" integrity sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ== punycode@^2.1.0: version "2.3.0" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" + resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== qs@^6.9.4: version "6.11.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" + resolved "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz" integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== dependencies: side-channel "^1.0.4" randombytes@^2.1.0: version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz" integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== dependencies: safe-buffer "^5.1.0" raw-body@^2.4.1: version "2.5.2" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz" integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== dependencies: bytes "3.1.2" @@ -2659,7 +2672,7 @@ raw-body@^2.4.1: readable-stream@^2.2.2: version "2.3.8" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz" integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== dependencies: core-util-is "~1.0.0" @@ -2672,7 +2685,7 @@ readable-stream@^2.2.2: readable-stream@^3.6.0: version "3.6.2" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz" integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== dependencies: inherits "^2.0.3" @@ -2681,43 +2694,43 @@ readable-stream@^3.6.0: readdirp@~3.6.0: version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== dependencies: picomatch "^2.2.1" reduce-flatten@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/reduce-flatten/-/reduce-flatten-2.0.0.tgz#734fd84e65f375d7ca4465c69798c25c9d10ae27" + resolved "https://registry.npmjs.org/reduce-flatten/-/reduce-flatten-2.0.0.tgz" integrity sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w== require-directory@^2.1.1: version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== require-from-string@^2.0.0, require-from-string@^2.0.2: version "2.0.2" - resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + 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== resolve@1.17.0: version "1.17.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz" integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== dependencies: path-parse "^1.0.6" rimraf@^2.2.8, rimraf@^2.6.2: version "2.7.1" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + resolved "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== dependencies: glob "^7.1.3" ripemd160@^2.0.0, ripemd160@^2.0.1: version "2.0.2" - resolved "https://registry.yarnpkg.com/ripemd160/-/ripemd160-2.0.2.tgz#a1c1a6f624751577ba5d07914cbc92850585890c" + resolved "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz" integrity sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA== dependencies: hash-base "^3.0.0" @@ -2725,34 +2738,34 @@ ripemd160@^2.0.0, ripemd160@^2.0.1: rlp@^2.2.3, rlp@^2.2.7: version "2.2.7" - resolved "https://registry.yarnpkg.com/rlp/-/rlp-2.2.7.tgz#33f31c4afac81124ac4b283e2bd4d9720b30beaf" + resolved "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz" integrity sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ== dependencies: bn.js "^5.2.0" safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, safe-buffer@~5.2.0: version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== "safer-buffer@>= 2.1.2 < 3": version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== scrypt-js@3.0.1, scrypt-js@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" + resolved "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz" integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== secp256k1@^4.0.1: version "4.0.3" - resolved "https://registry.yarnpkg.com/secp256k1/-/secp256k1-4.0.3.tgz#c4559ecd1b8d3c1827ed2d1b94190d69ce267303" + resolved "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz" integrity sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA== dependencies: elliptic "^6.5.4" @@ -2761,46 +2774,39 @@ secp256k1@^4.0.1: semver@^5.5.0: version "5.7.2" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + resolved "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz" integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== semver@^6.3.0: version "6.3.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz" integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== -semver@^7.3.8: - version "7.5.4" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e" - integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA== - dependencies: - lru-cache "^6.0.0" - -semver@^7.6.0: +semver@^7.3.8, semver@^7.6.0: version "7.6.3" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143" + resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz" integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A== serialize-javascript@6.0.0: version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz" integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== dependencies: randombytes "^2.1.0" setimmediate@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== setprototypeof@1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz" integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" - resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" + resolved "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz" integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== dependencies: inherits "^2.0.1" @@ -2808,19 +2814,19 @@ sha.js@^2.4.0, sha.js@^2.4.8: shebang-command@^1.2.0: version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz" integrity sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg== dependencies: shebang-regex "^1.0.0" shebang-regex@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz" integrity sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ== side-channel@^1.0.4: version "1.0.4" - resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz" integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== dependencies: call-bind "^1.0.0" @@ -2829,12 +2835,12 @@ side-channel@^1.0.4: sisteransi@^1.0.5: version "1.0.5" - resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== slice-ansi@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz" integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== dependencies: ansi-styles "^4.0.0" @@ -2843,7 +2849,7 @@ slice-ansi@^4.0.0: solc@0.7.3: version "0.7.3" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.7.3.tgz#04646961bd867a744f63d2b4e3c0701ffdc7d78a" + resolved "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz" integrity sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA== dependencies: command-exists "^1.2.8" @@ -2858,12 +2864,12 @@ solc@0.7.3: solidity-comments-extractor@^0.0.7: version "0.0.7" - resolved "https://registry.yarnpkg.com/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz#99d8f1361438f84019795d928b931f4e5c39ca19" + resolved "https://registry.npmjs.org/solidity-comments-extractor/-/solidity-comments-extractor-0.0.7.tgz" integrity sha512-wciNMLg/Irp8OKGrh3S2tfvZiZ0NEyILfcRCXCD4mp7SgK/i9gzLfhY2hY7VMCQJ3kH9UB9BzNdibIVMchzyYw== source-map-support@^0.5.13: version "0.5.21" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz" integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== dependencies: buffer-from "^1.0.0" @@ -2871,12 +2877,12 @@ source-map-support@^0.5.13: source-map@^0.6.0: version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== spawn-sync@^1.0.15: version "1.0.15" - resolved "https://registry.yarnpkg.com/spawn-sync/-/spawn-sync-1.0.15.tgz#b00799557eb7fb0c8376c29d44e8a1ea67e57476" + resolved "https://registry.npmjs.org/spawn-sync/-/spawn-sync-1.0.15.tgz" integrity sha512-9DWBgrgYZzNghseho0JOuh+5fg9u6QWhAWa51QC7+U5rCheZ/j1DrEZnyE0RBBRqZ9uEXGPgSSM0nky6burpVw== dependencies: concat-stream "^1.4.7" @@ -2884,29 +2890,29 @@ spawn-sync@^1.0.15: stacktrace-parser@^0.1.10: version "0.1.10" - resolved "https://registry.yarnpkg.com/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz#29fb0cae4e0d0b85155879402857a1639eb6051a" + resolved "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz" integrity sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg== dependencies: type-fest "^0.7.1" statuses@2.0.1: version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz" integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== streamsearch@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" + resolved "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz" integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== string-format@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/string-format/-/string-format-2.0.0.tgz#f2df2e7097440d3b65de31b6d40d54c96eaffb9b" + resolved "https://registry.npmjs.org/string-format/-/string-format-2.0.0.tgz" integrity sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA== string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.2, string-width@^4.2.3: version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== dependencies: emoji-regex "^8.0.0" @@ -2915,61 +2921,61 @@ string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2 string_decoder@^1.1.1: version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== dependencies: safe-buffer "~5.2.0" string_decoder@~1.1.1: version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== dependencies: safe-buffer "~5.1.0" strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== dependencies: ansi-regex "^5.0.1" strip-hex-prefix@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz#0c5f155fef1151373377de9dbb588da05500e36f" + resolved "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz" integrity sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A== dependencies: is-hex-prefixed "1.0.0" strip-json-comments@3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== supports-color@8.1.1: version "8.1.1" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz" integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== dependencies: has-flag "^4.0.0" supports-color@^5.3.0: version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== dependencies: has-flag "^3.0.0" supports-color@^7.1.0: version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== dependencies: has-flag "^4.0.0" table-layout@^1.0.2: version "1.0.2" - resolved "https://registry.yarnpkg.com/table-layout/-/table-layout-1.0.2.tgz#c4038a1853b0136d63365a734b6931cf4fad4a04" + resolved "https://registry.npmjs.org/table-layout/-/table-layout-1.0.2.tgz" integrity sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A== dependencies: array-back "^4.0.1" @@ -2979,7 +2985,7 @@ table-layout@^1.0.2: table@^6.8.0: version "6.8.1" - resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" + resolved "https://registry.npmjs.org/table/-/table-6.8.1.tgz" integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== dependencies: ajv "^8.0.1" @@ -2990,36 +2996,36 @@ table@^6.8.0: tmp@0.0.33: version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz" integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== dependencies: os-tmpdir "~1.0.2" to-regex-range@^5.0.1: version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== dependencies: is-number "^7.0.0" toidentifier@1.0.1: version "1.0.1" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz" integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== tr46@~0.0.3: version "0.0.3" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + resolved "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz" integrity sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw== treeify@^1.1.0: version "1.1.0" - resolved "https://registry.yarnpkg.com/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" + resolved "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz" integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A== ts-command-line-args@^2.2.0: version "2.5.1" - resolved "https://registry.yarnpkg.com/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz#e64456b580d1d4f6d948824c274cf6fa5f45f7f0" + resolved "https://registry.npmjs.org/ts-command-line-args/-/ts-command-line-args-2.5.1.tgz" integrity sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw== dependencies: chalk "^4.1.0" @@ -3029,12 +3035,12 @@ ts-command-line-args@^2.2.0: ts-essentials@^7.0.1: version "7.0.3" - resolved "https://registry.yarnpkg.com/ts-essentials/-/ts-essentials-7.0.3.tgz#686fd155a02133eedcc5362dc8b5056cde3e5a38" + resolved "https://registry.npmjs.org/ts-essentials/-/ts-essentials-7.0.3.tgz" integrity sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ== ts-node@^10.7.0: version "10.9.1" - resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz" integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== dependencies: "@cspotcode/source-map-support" "^0.8.0" @@ -3053,52 +3059,52 @@ ts-node@^10.7.0: tslib@^1.9.3: version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + resolved "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tslib@^2.4.0: version "2.6.3" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.6.3.tgz#0438f810ad7a9edcde7a241c3d80db693c8cbfe0" + resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz" integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ== tsort@0.0.1: version "0.0.1" - resolved "https://registry.yarnpkg.com/tsort/-/tsort-0.0.1.tgz#e2280f5e817f8bf4275657fd0f9aebd44f5a2786" + resolved "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz" integrity sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw== tweetnacl-util@^0.15.1: version "0.15.1" - resolved "https://registry.yarnpkg.com/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz#b80fcdb5c97bcc508be18c44a4be50f022eea00b" + resolved "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz" integrity sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw== tweetnacl@^1.0.3: version "1.0.3" - resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-1.0.3.tgz#ac0af71680458d8a6378d0d0d050ab1407d35596" + resolved "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz" integrity sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw== type-detect@^4.0.0, type-detect@^4.0.8: version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== type-fest@^0.20.2: version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== type-fest@^0.21.3: version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== type-fest@^0.7.1: version "0.7.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" + resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz" integrity sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg== typechain@^8.0.0: version "8.3.1" - resolved "https://registry.yarnpkg.com/typechain/-/typechain-8.3.1.tgz#dccbc839b94877997536c356380eff7325395cfb" + resolved "https://registry.npmjs.org/typechain/-/typechain-8.3.1.tgz" integrity sha512-fA7clol2IP/56yq6vkMTR+4URF1nGjV82Wx6Rf09EsqD4tkzMAvEaqYxVFCavJm/1xaRga/oD55K+4FtuXwQOQ== dependencies: "@types/prettier" "^2.1.1" @@ -3114,76 +3120,76 @@ typechain@^8.0.0: typedarray@^0.0.6: version "0.0.6" - resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + resolved "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz" integrity sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA== typescript@^4.6.4: version "4.9.5" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + resolved "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== typical@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-4.0.0.tgz#cbeaff3b9d7ae1e2bbfaf5a4e6f11eccfde94fc4" + resolved "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz" integrity sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw== typical@^5.2.0: version "5.2.0" - resolved "https://registry.yarnpkg.com/typical/-/typical-5.2.0.tgz#4daaac4f2b5315460804f0acf6cb69c52bb93066" + resolved "https://registry.npmjs.org/typical/-/typical-5.2.0.tgz" integrity sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg== undici@^5.14.0: version "5.23.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.23.0.tgz#e7bdb0ed42cebe7b7aca87ced53e6eaafb8f8ca0" + resolved "https://registry.npmjs.org/undici/-/undici-5.23.0.tgz" integrity sha512-1D7w+fvRsqlQ9GscLBwcAJinqcZGHUKjbOmXdlE/v8BvEGXjeWAax+341q44EuTcHXXnfyKNbKRq4Lg7OzhMmg== dependencies: busboy "^1.6.0" universalify@^0.1.0: version "0.1.2" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== universalify@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717" + resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz" integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ== unpipe@1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== uri-js@^4.2.2: version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" utf8@3.0.0: version "3.0.0" - resolved "https://registry.yarnpkg.com/utf8/-/utf8-3.0.0.tgz#f052eed1364d696e769ef058b183df88c87f69d1" + resolved "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz" integrity sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ== util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== uuid@^8.3.2: version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + resolved "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== v8-compile-cache-lib@^3.0.1: version "3.0.1" - resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz" integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== web3-utils@^1.3.4: version "1.10.4" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.10.4.tgz#0daee7d6841641655d8b3726baf33b08eda1cbec" + resolved "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.4.tgz" integrity sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A== dependencies: "@ethereumjs/util" "^8.1.0" @@ -3197,41 +3203,34 @@ web3-utils@^1.3.4: webidl-conversions@^3.0.0: version "3.0.1" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz" integrity sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ== whatwg-url@^5.0.0: version "5.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz" integrity sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw== dependencies: tr46 "~0.0.3" webidl-conversions "^3.0.0" -which@1.2.x: +which@1.2.x, which@^1.2.9: version "1.2.14" - resolved "https://registry.yarnpkg.com/which/-/which-1.2.14.tgz#9a87c4378f03e827cecaf1acdf56c736c01c14e5" + resolved "https://registry.npmjs.org/which/-/which-1.2.14.tgz" integrity sha512-16uPglFkRPzgiUXYMi1Jf8Z5EzN1iB4V0ZtMXcHZnwsBtQhhHeCqoWw7tsUY42hJGNDWtUsVLTjakIa5BgAxCw== dependencies: isexe "^2.0.0" -which@^1.2.9: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - widest-line@^3.1.0: version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" + resolved "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== dependencies: string-width "^4.0.0" wordwrapjs@^4.0.0: version "4.0.1" - resolved "https://registry.yarnpkg.com/wordwrapjs/-/wordwrapjs-4.0.1.tgz#d9790bccfb110a0fc7836b5ebce0937b37a8b98f" + resolved "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-4.0.1.tgz" integrity sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA== dependencies: reduce-flatten "^2.0.0" @@ -3239,12 +3238,12 @@ wordwrapjs@^4.0.0: workerpool@6.2.1: version "6.2.1" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" + resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz" integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== wrap-ansi@^7.0.0: version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== dependencies: ansi-styles "^4.0.0" @@ -3253,52 +3252,37 @@ wrap-ansi@^7.0.0: wrappy@1: version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== -ws@7.4.6: +ws@7.4.6, ws@^7.4.6: version "7.4.6" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c" + resolved "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz" integrity sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A== -ws@^7.4.6: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - y18n@^5.0.5: version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz" integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== yallist@^2.1.2: version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + resolved "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz" integrity sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A== -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yargs-parser@20.2.4: +yargs-parser@20.2.4, yargs-parser@^20.2.2: version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== -yargs-parser@^20.2.2: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - yargs-parser@^21.1.1: version "21.1.1" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz" integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== yargs-unparser@2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz" integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== dependencies: camelcase "^6.0.0" @@ -3308,7 +3292,7 @@ yargs-unparser@2.0.0: yargs@16.2.0: version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz" integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== dependencies: cliui "^7.0.2" @@ -3321,7 +3305,7 @@ yargs@16.2.0: yargs@^17.7.1: version "17.7.2" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz" integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== dependencies: cliui "^8.0.1" @@ -3334,15 +3318,15 @@ yargs@^17.7.1: yn@3.1.1: version "3.1.1" - resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz" integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== yocto-queue@^0.1.0: version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== zksync-web3@^0.14.3: version "0.14.3" - resolved "https://registry.yarnpkg.com/zksync-web3/-/zksync-web3-0.14.3.tgz#64ac2a16d597464c3fc4ae07447a8007631c57c9" + resolved "https://registry.npmjs.org/zksync-web3/-/zksync-web3-0.14.3.tgz" integrity sha512-hT72th4AnqyLW1d5Jlv8N2B/qhEnl2NePK2A3org7tAa24niem/UAaHMkEvmWI3SF9waYUPtqAtjpf+yvQ9zvQ== From 718f4c8837dde3cd30826bb89eb20d5fa30f9008 Mon Sep 17 00:00:00 2001 From: Coderdan Date: Fri, 25 Oct 2024 18:19:53 +0800 Subject: [PATCH 18/57] chore: work on wrapping supertoken --- contracts/token/SuperToken.sol | 1 + deployments/superbridge/surge_addresses.json | 2 +- deployments/supertoken/surge_addresses.json | 2 +- .../surge_socket_ghst_testnet_addresses.json | 2 +- ...urge_socket_ghst_testnet_verification.json | 10 +- .../supertoken/socket_ghst_testnet.ts | 21 +- src/enums/existing-token-addresses.ts | 205 +++++++++--------- 7 files changed, 119 insertions(+), 124 deletions(-) diff --git a/contracts/token/SuperToken.sol b/contracts/token/SuperToken.sol index d818fa90..b3652946 100644 --- a/contracts/token/SuperToken.sol +++ b/contracts/token/SuperToken.sol @@ -19,6 +19,7 @@ contract SuperToken is ERC20, RescueBase { // for all controller access (mint, burn) bytes32 public constant CONTROLLER_ROLE = keccak256("CONTROLLER_ROLE"); + // bytes32 public constant RESCUE_ROLE = keccak256("RESCUE_ROLE"); /** diff --git a/deployments/superbridge/surge_addresses.json b/deployments/superbridge/surge_addresses.json index 5f0f8c1a..c31fdd65 100644 --- a/deployments/superbridge/surge_addresses.json +++ b/deployments/superbridge/surge_addresses.json @@ -53,4 +53,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/supertoken/surge_addresses.json b/deployments/supertoken/surge_addresses.json index 514d8b5c..e34b0067 100644 --- a/deployments/supertoken/surge_addresses.json +++ b/deployments/supertoken/surge_addresses.json @@ -25,4 +25,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json index bb2ae8c7..efb487ef 100644 --- a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json +++ b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json @@ -23,4 +23,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/supertoken/surge_socket_ghst_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_testnet_verification.json index 3d6f48cf..6b737b06 100644 --- a/deployments/supertoken/surge_socket_ghst_testnet_verification.json +++ b/deployments/supertoken/surge_socket_ghst_testnet_verification.json @@ -25,9 +25,7 @@ "0x596A75D94d1Bf0b63af9F4a67Ce5Eeb427EeDdcE", "Vault", "contracts/bridge/Vault.sol", - [ - "0xF679b8D109b2d23931237Ce948a7D784727c0897" - ] + ["0xF679b8D109b2d23931237Ce948a7D784727c0897"] ] ], "631571": [ @@ -56,9 +54,7 @@ "0xA421Ed8a4E3cfbFbFd2F621b27bd3C27D71C8b97", "Controller", "contracts/bridge/Controller.sol", - [ - "0x0B08aCd19d96B5fAfb9dbDc4b935B58B7A50F16A" - ] + ["0x0B08aCd19d96B5fAfb9dbDc4b935B58B7A50F16A"] ], [ "0x0B08aCd19d96B5fAfb9dbDc4b935B58B7A50F16A", @@ -77,4 +73,4 @@ ] ] ] -} \ No newline at end of file +} diff --git a/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts b/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts index 9ccd7b96..7d3525da 100644 --- a/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts +++ b/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts @@ -1,4 +1,3 @@ - import { ChainSlug, DeploymentMode, @@ -19,16 +18,16 @@ export const pc: ProjectConstants = { 80002: { [IntegrationTypes.fast]: { sendingLimit: "1000000.0", - receivingLimit: "1000000.0" - } + receivingLimit: "1000000.0", + }, }, 631571: { [IntegrationTypes.fast]: { sendingLimit: "1000000.0", - receivingLimit: "1000000.0" - } - } - } + receivingLimit: "1000000.0", + }, + }, + }, }, superTokenInfo: { name: "Socket GHST", @@ -36,8 +35,8 @@ export const pc: ProjectConstants = { decimals: 18, owner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", initialSupplyOwner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - initialSupply: "0" - } - } - } + initialSupply: "0", + }, + }, + }, }; diff --git a/src/enums/existing-token-addresses.ts b/src/enums/existing-token-addresses.ts index 4a68cbb9..4907d043 100644 --- a/src/enums/existing-token-addresses.ts +++ b/src/enums/existing-token-addresses.ts @@ -1,105 +1,104 @@ +import { ChainSlug } from "@socket.tech/dl-core"; +import { Tokens } from "./tokens"; - import { ChainSlug } from "@socket.tech/dl-core"; - import { Tokens } from "./tokens"; - - export const ExistingTokenAddresses: { - [key in ChainSlug]?: { [key in Tokens]?: string }; - } = { - [ChainSlug.MAINNET]: { - [Tokens.USDC]: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - [Tokens.USDT]: "0xdac17f958d2ee523a2206206994597c13d831ec7", - [Tokens.WETH]: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - [Tokens.WBTC]: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - [Tokens.SNX]: "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", - [Tokens.WSTETH]: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", - [Tokens.DAI]: "0x6B175474E89094C44Da98b954EedeAC495271d0F", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.USDE]: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", - [Tokens.SUSDE]: "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", - [Tokens.SDEUSD]: "0x5c5b196abe0d54485975d1ec29617d42d9198326", - [Tokens.DEUSD]: "0x15700b564ca08d9439c58ca5053166e8317aa138" -}, -[ChainSlug.OPTIMISM]: { - [Tokens.USDC]: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", - [Tokens.USDCE]: "0x7f5c764cbc14f9669b88837ca1490cca17c31607", - [Tokens.USDT]: "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", - [Tokens.WETH]: "0x4200000000000000000000000000000000000006", - [Tokens.WBTC]: "0x68f180fcce6836688e9084f035309e29bf0a2095", - [Tokens.SNX]: "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", - [Tokens.WSTETH]: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", - [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" -}, -[ChainSlug.POLYGON_MAINNET]: { - [Tokens.USDC]: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", - [Tokens.USDCE]: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", - [Tokens.FUD]: "0x403e967b044d4be25170310157cb1a4bf10bdd0f", - [Tokens.FOMO]: "0x44a6e0be76e1d9620a7f76588e4509fe4fa8e8c8", - [Tokens.ALPHA]: "0x6a3E7C3c6EF65Ee26975b12293cA1AAD7e1dAeD2", - [Tokens.KEK]: "0x42E5E06EF5b90Fe15F853F59299Fc96259209c5C", - [Tokens.GLTR]: "0x3801C3B3B5c98F88a9c9005966AA96aa440B9Afc", - [Tokens.USDT]: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", - [Tokens.DAI]: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - [Tokens.WETH]: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", - [Tokens.WBTC]: "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6" -}, -[ChainSlug.BASE]: { - [Tokens.USDC]: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", - [Tokens.WETH]: "0x4200000000000000000000000000000000000006", - [Tokens.WSTETH]: "0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452", - [Tokens.DAI]: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" -}, -[ChainSlug.ARBITRUM]: { - [Tokens.USDC]: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", - [Tokens.USDCE]: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", - [Tokens.USDT]: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", - [Tokens.WETH]: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", - [Tokens.WBTC]: "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", - [Tokens.WSTETH]: "0x5979D7b546E38E414F7E9822514be443A4800529", - [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", - [Tokens.STIME]: "0x17AfF554423D2C40A1BBF51b443E9d43dd8AE1eb", - [Tokens.MAGIC]: "0x539bde0d7dbd336b79148aa742883198bbf60342", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" -}, -80002: { - [Tokens.SGHST]: "0xF679b8D109b2d23931237Ce948a7D784727c0897" -}, -[ChainSlug.ARBITRUM_SEPOLIA]: { - [Tokens.USDC]: "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", - [Tokens.USDT]: "0x66DFb9987C36c4be232156e70B085f664367599A", - [Tokens.DAI]: "0x9a573B27D7298c6E2f4d2D4a41c37A0C8AF6accA", - [Tokens.WETH]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", - [Tokens.WBTC]: "0x1019958C2BD43B882a4e1349337a32Ef9563FC4D" -}, -[ChainSlug.SEPOLIA]: { - [Tokens.USDC]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - [Tokens.USDT]: "0xB4130e87A180b9448286B291331aEe8A9C154A3A", - [Tokens.DAI]: "0x255745E5C7Ae620b7f523F5E4A0Ead37660EC5d6", - [Tokens.WETH]: "0x771d1Ae208377453D478dF08BbC38034F72aC833", - [Tokens.WBTC]: "0x94BEff5da6201cB2C8F489196FD970B3DF5aA32A", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" -}, -[ChainSlug.AEVO_TESTNET]: { - [Tokens.USDC]: "0x4D435C00E09034ec2113F63088CCD0be0a0fd06e" -}, -[ChainSlug.OPTIMISM_SEPOLIA]: { - [Tokens.USDC]: "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", - [Tokens.USDT]: "0x2d1abA6FaBAe80bF5C1C9EA433AAe9030E07CB22", - [Tokens.DAI]: "0xDC0258dc3dB980090E97EbF4f1FD9Cc3C5AD5894", - [Tokens.WETH]: "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.WBTC]: "0xfC5CC93d85861ac82d89fc2D3e56315540E9C8A7" -}, -[ChainSlug.REYA]: { - [Tokens.SUSDE]: "0x2339D41f410EA761F346a14c184385d15f7266c4", - [Tokens.DEUSD]: "0x809B99df4DDd6fA90F2CF305E2cDC310C6AD3C2c", - [Tokens.SDEUSD]: "0x4D3fEB76ab1C7eF40388Cd7a2066edacE1a2237D" -} +export const ExistingTokenAddresses: { + [key in ChainSlug]?: { [key in Tokens]?: string }; +} = { + [ChainSlug.MAINNET]: { + [Tokens.USDC]: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + [Tokens.USDT]: "0xdac17f958d2ee523a2206206994597c13d831ec7", + [Tokens.WETH]: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + [Tokens.WBTC]: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + [Tokens.SNX]: "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", + [Tokens.WSTETH]: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + [Tokens.DAI]: "0x6B175474E89094C44Da98b954EedeAC495271d0F", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.USDE]: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", + [Tokens.SUSDE]: "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", + [Tokens.SDEUSD]: "0x5c5b196abe0d54485975d1ec29617d42d9198326", + [Tokens.DEUSD]: "0x15700b564ca08d9439c58ca5053166e8317aa138", + }, + [ChainSlug.OPTIMISM]: { + [Tokens.USDC]: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", + [Tokens.USDCE]: "0x7f5c764cbc14f9669b88837ca1490cca17c31607", + [Tokens.USDT]: "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", + [Tokens.WETH]: "0x4200000000000000000000000000000000000006", + [Tokens.WBTC]: "0x68f180fcce6836688e9084f035309e29bf0a2095", + [Tokens.SNX]: "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", + [Tokens.WSTETH]: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", + [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", + }, + [ChainSlug.POLYGON_MAINNET]: { + [Tokens.USDC]: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", + [Tokens.USDCE]: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + [Tokens.FUD]: "0x403e967b044d4be25170310157cb1a4bf10bdd0f", + [Tokens.FOMO]: "0x44a6e0be76e1d9620a7f76588e4509fe4fa8e8c8", + [Tokens.ALPHA]: "0x6a3E7C3c6EF65Ee26975b12293cA1AAD7e1dAeD2", + [Tokens.KEK]: "0x42E5E06EF5b90Fe15F853F59299Fc96259209c5C", + [Tokens.GLTR]: "0x3801C3B3B5c98F88a9c9005966AA96aa440B9Afc", + [Tokens.USDT]: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", + [Tokens.DAI]: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", + [Tokens.WETH]: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", + [Tokens.WBTC]: "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6", + }, + [ChainSlug.BASE]: { + [Tokens.USDC]: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", + [Tokens.WETH]: "0x4200000000000000000000000000000000000006", + [Tokens.WSTETH]: "0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452", + [Tokens.DAI]: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", + }, + [ChainSlug.ARBITRUM]: { + [Tokens.USDC]: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", + [Tokens.USDCE]: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", + [Tokens.USDT]: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", + [Tokens.WETH]: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", + [Tokens.WBTC]: "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", + [Tokens.WSTETH]: "0x5979D7b546E38E414F7E9822514be443A4800529", + [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", + [Tokens.STIME]: "0x17AfF554423D2C40A1BBF51b443E9d43dd8AE1eb", + [Tokens.MAGIC]: "0x539bde0d7dbd336b79148aa742883198bbf60342", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", + }, + 80002: { + [Tokens.SGHST]: "0xF679b8D109b2d23931237Ce948a7D784727c0897", + }, + [ChainSlug.ARBITRUM_SEPOLIA]: { + [Tokens.USDC]: "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", + [Tokens.USDT]: "0x66DFb9987C36c4be232156e70B085f664367599A", + [Tokens.DAI]: "0x9a573B27D7298c6E2f4d2D4a41c37A0C8AF6accA", + [Tokens.WETH]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", + [Tokens.WBTC]: "0x1019958C2BD43B882a4e1349337a32Ef9563FC4D", + }, + [ChainSlug.SEPOLIA]: { + [Tokens.USDC]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", + [Tokens.USDT]: "0xB4130e87A180b9448286B291331aEe8A9C154A3A", + [Tokens.DAI]: "0x255745E5C7Ae620b7f523F5E4A0Ead37660EC5d6", + [Tokens.WETH]: "0x771d1Ae208377453D478dF08BbC38034F72aC833", + [Tokens.WBTC]: "0x94BEff5da6201cB2C8F489196FD970B3DF5aA32A", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + }, + [ChainSlug.AEVO_TESTNET]: { + [Tokens.USDC]: "0x4D435C00E09034ec2113F63088CCD0be0a0fd06e", + }, + [ChainSlug.OPTIMISM_SEPOLIA]: { + [Tokens.USDC]: "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", + [Tokens.USDT]: "0x2d1abA6FaBAe80bF5C1C9EA433AAe9030E07CB22", + [Tokens.DAI]: "0xDC0258dc3dB980090E97EbF4f1FD9Cc3C5AD5894", + [Tokens.WETH]: "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.WBTC]: "0xfC5CC93d85861ac82d89fc2D3e56315540E9C8A7", + }, + [ChainSlug.REYA]: { + [Tokens.SUSDE]: "0x2339D41f410EA761F346a14c184385d15f7266c4", + [Tokens.DEUSD]: "0x809B99df4DDd6fA90F2CF305E2cDC310C6AD3C2c", + [Tokens.SDEUSD]: "0x4D3fEB76ab1C7eF40388Cd7a2066edacE1a2237D", + }, }; From e8a640cb310a8f3a22eb5099d088ad1d11e5f291 Mon Sep 17 00:00:00 2001 From: Coderdan Date: Fri, 25 Oct 2024 21:16:39 +0800 Subject: [PATCH 19/57] chore: begin adding Unwrap hook --- contracts/hooks/UnwrapHook.sol | 46 ++++++++++++++++++++++++++ script/deploy/deployHook.ts | 7 ++++ script/setup/newProject/projectInfo.ts | 4 +++ src/enum.ts | 2 ++ 4 files changed, 59 insertions(+) create mode 100644 contracts/hooks/UnwrapHook.sol diff --git a/contracts/hooks/UnwrapHook.sol b/contracts/hooks/UnwrapHook.sol new file mode 100644 index 00000000..8250e87d --- /dev/null +++ b/contracts/hooks/UnwrapHook.sol @@ -0,0 +1,46 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.13; + +import "solmate/utils/ReentrancyGuard.sol"; +import "../common/Errors.sol"; +import "../common/Constants.sol"; +import "../interfaces/IHook.sol"; +import "../utils/RescueBase.sol"; + +/** + * @title Base contract for super token and vault + * @notice It contains relevant execution payload storages. + * @dev This contract implements Socket's IPlug to enable message bridging and IMessageBridge + * to support any type of message bridge. + */ +abstract contract HookBase is ReentrancyGuard, IHook, RescueBase { + address public immutable vaultOrController; + bytes32 public hookType; + address public socketGhstAddress; + + /** + * @notice Constructor for creating a new SuperToken. + */ + constructor( + address owner_, + address vaultOrController_, + address socketGhstAddress_ + ) AccessControl(owner_) { + vaultOrController = vaultOrController_; + socketGhstAddress = socketGhstAddress_; + _grantRole(RESCUE_ROLE, owner_); + } + + // function dstPostHookCall( + // DstPostHookCallParams calldata params_ + // ) external isVaultOrController returns (CacheData memory cacheData) { + // uint256 unwrapAmount = abi.decode(params_.postHookData, (uint256)); + + // return CacheData(); + // } + + modifier isVaultOrController() { + if (msg.sender != vaultOrController) revert NotAuthorized(); + _; + } +} diff --git a/script/deploy/deployHook.ts b/script/deploy/deployHook.ts index 97314fa9..fb2291b3 100644 --- a/script/deploy/deployHook.ts +++ b/script/deploy/deployHook.ts @@ -107,6 +107,13 @@ export const deployHookContracts = async ( deployParams.addresses[HookContracts.ExecutionHelper], useConnnectorPools, // useControllerPools ]; + } else if (hookType == Hooks.UNWRAP_HOOK) { + contractName = HookContracts.UnwrapHook; + args = [ + getOwner(), + bridgeAddress, + deployParams.addresses[HookContracts.ExecutionHelper], + ]; } if (!contractName) return deployParams; diff --git a/script/setup/newProject/projectInfo.ts b/script/setup/newProject/projectInfo.ts index 120b2d9b..e105fc8a 100644 --- a/script/setup/newProject/projectInfo.ts +++ b/script/setup/newProject/projectInfo.ts @@ -53,6 +53,10 @@ export const getProjectInfo = async () => { title: "Limit Execution Hook", value: Hooks.LIMIT_EXECUTION_HOOK, }, + { + title: "Unwrap Hook", + value: Hooks.UNWRAP_HOOK, + }, { title: "No Hook", value: Hooks.NO_HOOK, diff --git a/src/enum.ts b/src/enum.ts index d584a827..5c3d24b2 100644 --- a/src/enum.ts +++ b/src/enum.ts @@ -5,6 +5,7 @@ export enum Hooks { YIELD_LIMIT_EXECUTION_HOOK = "YIELD_LIMIT_EXECUTION_HOOK", // CONTROLLER_YIELD_LIMIT_EXECUTION_HOOK = "CONTROLLER_YIELD_LIMIT_EXECUTION_HOOK", // VAULT_YIELD_LIMIT_EXECUTION_HOOK = "VAULT_YIELD_LIMIT_EXECUTION_HOOK", + UNWRAP_HOOK = "UNWRAP_HOOK", } export enum ProjectType { @@ -42,6 +43,7 @@ export enum HookContracts { ControllerYieldLimitExecutionHook = "Controller_YieldLimitExecHook", VaultYieldLimitExecutionHook = "Vault_YieldLimitExecHook", ExecutionHelper = "ExecutionHelper", + UnwrapHook = "UnwrapHook", } export enum SuperTokenContracts { NonSuperToken = "NonSuperToken", From e5cb07e88584fbb61ef3e8ae9c89597da493eb86 Mon Sep 17 00:00:00 2001 From: Coderdan Date: Fri, 25 Oct 2024 21:37:57 +0800 Subject: [PATCH 20/57] chore: adding unwrapsupertoken, revert Supertoken.sol --- contracts/token/SuperToken.sol | 39 +------- contracts/token/UnwrapSuperToken.sol | 88 +++++++++++++++++++ .../supertoken/socket_ghst_testnet.ts | 2 +- script/deploy/deploy.ts | 3 + script/setup/newProject/main.ts | 1 + src/enum.ts | 2 + test/supertoken/Supertoken.t.sol | 6 +- 7 files changed, 99 insertions(+), 42 deletions(-) create mode 100644 contracts/token/UnwrapSuperToken.sol diff --git a/contracts/token/SuperToken.sol b/contracts/token/SuperToken.sol index b3652946..b664b61a 100644 --- a/contracts/token/SuperToken.sol +++ b/contracts/token/SuperToken.sol @@ -1,10 +1,9 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.13; +import "solmate/tokens/ERC20.sol"; import "../utils/RescueBase.sol"; import "../interfaces/IHook.sol"; -import {ERC20} from "solmate/tokens/ERC20.sol"; -import {SafeTransferLib} from "solmate/utils/SafeTransferLib.sol"; /** * @title SuperToken @@ -12,16 +11,9 @@ import {SafeTransferLib} from "solmate/utils/SafeTransferLib.sol"; * @dev This contract implements ISuperTokenOrVault to support message bridging through IMessageBridge compliant contracts. */ contract SuperToken is ERC20, RescueBase { - using SafeTransferLib for address; - - event Deposit(address indexed from, uint256 amount); - event Withdrawal(address indexed to, uint256 amount); - // for all controller access (mint, burn) bytes32 public constant CONTROLLER_ROLE = keccak256("CONTROLLER_ROLE"); - // bytes32 public constant RESCUE_ROLE = keccak256("RESCUE_ROLE"); - /** * @notice constructor for creating a new SuperToken. * @param name_ token name @@ -43,9 +35,6 @@ contract SuperToken is ERC20, RescueBase { _grantRole(RESCUE_ROLE, owner_); } - //Controller Functions - - //burns the supertoken and and unlocks it on the parent chain chain function burn( address user_, uint256 amount_ @@ -53,36 +42,10 @@ contract SuperToken is ERC20, RescueBase { _burn(user_, amount_); } - //lock the NonMintable ERC20 token on the source chain and mint it on the child chain function mint( address receiver_, uint256 amount_ ) external onlyRole(CONTROLLER_ROLE) { _mint(receiver_, amount_); } - - //Wrapping Functions - - //deposits native GHST and mints the supertoken - function deposit() public payable { - _mint(msg.sender, msg.value); - emit Deposit(msg.sender, msg.value); - } - - //withdraws native GHST and burns the supertoken - function withdraw(uint256 amount_) external { - _burn(msg.sender, amount_); - msg.sender.safeTransferETH(amount_); - emit Withdrawal(msg.sender, amount_); - } - - receive() external payable { - deposit(); - } } - -//So the flow is: -//1. User locks their GHST on Polygon, which triggers the mint function on Geist, minting the supertoken version of GHST. -//2. Next, we need to automatically unwrap the supertoken GHST into native GHST. -//3. To do this, we call the withdraw function. This burns the supertoken and sends the native GHST back to the user. -//4. But if there isn't enough native GHST in the contract, the withdraw will fail. So we need to deposit more native GHST to the contract. diff --git a/contracts/token/UnwrapSuperToken.sol b/contracts/token/UnwrapSuperToken.sol new file mode 100644 index 00000000..23c6d890 --- /dev/null +++ b/contracts/token/UnwrapSuperToken.sol @@ -0,0 +1,88 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.13; + +import "../utils/RescueBase.sol"; +import "../interfaces/IHook.sol"; +import {ERC20} from "solmate/tokens/ERC20.sol"; +import {SafeTransferLib} from "solmate/utils/SafeTransferLib.sol"; + +/** + * @title SuperToken + * @notice An ERC20 contract which enables bridging a token to its sibling chains. + * @dev This contract implements ISuperTokenOrVault to support message bridging through IMessageBridge compliant contracts. + */ +contract UnwrapSuperToken is ERC20, RescueBase { + using SafeTransferLib for address; + + event Deposit(address indexed from, uint256 amount); + event Withdrawal(address indexed to, uint256 amount); + + // for all controller access (mint, burn) + bytes32 public constant CONTROLLER_ROLE = keccak256("CONTROLLER_ROLE"); + + // bytes32 public constant RESCUE_ROLE = keccak256("RESCUE_ROLE"); + + /** + * @notice constructor for creating a new SuperToken. + * @param name_ token name + * @param symbol_ token symbol + * @param decimals_ token decimals (should be same on all chains) + * @param initialSupplyHolder_ address to which initial supply will be minted + * @param owner_ owner of this contract + * @param initialSupply_ initial supply of super token + */ + constructor( + string memory name_, + string memory symbol_, + uint8 decimals_, + address initialSupplyHolder_, + address owner_, + uint256 initialSupply_ + ) ERC20(name_, symbol_, decimals_) AccessControl(owner_) { + _mint(initialSupplyHolder_, initialSupply_); + _grantRole(RESCUE_ROLE, owner_); + } + + //Controller Functions + + //burns the supertoken and and unlocks it on the parent chain chain + function burn( + address user_, + uint256 amount_ + ) external onlyRole(CONTROLLER_ROLE) { + _burn(user_, amount_); + } + + //lock the NonMintable ERC20 token on the source chain and mint it on the child chain + function mint( + address receiver_, + uint256 amount_ + ) external onlyRole(CONTROLLER_ROLE) { + _mint(receiver_, amount_); + } + + //Wrapping Functions + + //deposits native GHST and mints the supertoken + function deposit() public payable { + _mint(msg.sender, msg.value); + emit Deposit(msg.sender, msg.value); + } + + //withdraws native GHST and burns the supertoken + function withdraw(uint256 amount_) external { + _burn(msg.sender, amount_); + msg.sender.safeTransferETH(amount_); + emit Withdrawal(msg.sender, amount_); + } + + receive() external payable { + deposit(); + } +} + +//So the flow is: +//1. User locks their GHST on Polygon, which triggers the mint function on Geist, minting the supertoken version of GHST. +//2. Next, we need to automatically unwrap the supertoken GHST into native GHST. +//3. To do this, we call the withdraw function. This burns the supertoken and sends the native GHST back to the user. +//4. But if there isn't enough native GHST in the contract, the withdraw will fail. So we need to deposit more native GHST to the contract. diff --git a/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts b/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts index 7d3525da..3bf03c84 100644 --- a/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts +++ b/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts @@ -13,7 +13,7 @@ export const pc: ProjectConstants = { vaultChains: [80002], controllerChains: [631571], hook: { - hookType: Hooks.LIMIT_HOOK, + hookType: Hooks.UNWRAP_HOOK, limitsAndPoolId: { 80002: { [IntegrationTypes.fast]: { diff --git a/script/deploy/deploy.ts b/script/deploy/deploy.ts index 1466c1e4..ef18f902 100644 --- a/script/deploy/deploy.ts +++ b/script/deploy/deploy.ts @@ -452,6 +452,9 @@ export const deployVaultChainContracts = async ( const deploySuperToken = async (deployParams: DeployParams) => { let contractName = SuperTokenContracts.SuperToken; + if (deployParams.hookType === Hooks.UNWRAP_HOOK) { + contractName = SuperTokenContracts.UnwrapSuperToken; + } if ( ExistingTokenAddresses[deployParams.currentChainSlug]?.[ diff --git a/script/setup/newProject/main.ts b/script/setup/newProject/main.ts index d2358e0c..e0a7dce8 100644 --- a/script/setup/newProject/main.ts +++ b/script/setup/newProject/main.ts @@ -78,6 +78,7 @@ export const addProject = async () => { vaultChains, controllerChains ); + const { tokenLimitInfo } = await getHookRelatedInfo( projectType, isLimitsRequired, diff --git a/src/enum.ts b/src/enum.ts index 5c3d24b2..4b559bce 100644 --- a/src/enum.ts +++ b/src/enum.ts @@ -11,6 +11,7 @@ export enum Hooks { export enum ProjectType { SUPERBRIDGE = "superbridge", SUPERTOKEN = "supertoken", + UNWRAP_SUPERTOKEN = "unwrap_supertoken", } export enum CommonContracts { @@ -48,6 +49,7 @@ export enum HookContracts { export enum SuperTokenContracts { NonSuperToken = "NonSuperToken", SuperToken = "SuperToken", + UnwrapSuperToken = "UnwrapSuperToken", } export enum TokenType { diff --git a/test/supertoken/Supertoken.t.sol b/test/supertoken/Supertoken.t.sol index 94c0cebf..cb19232f 100644 --- a/test/supertoken/Supertoken.t.sol +++ b/test/supertoken/Supertoken.t.sol @@ -2,10 +2,10 @@ pragma solidity 0.8.13; import "forge-std/Test.sol"; -import "../../contracts/token/SuperToken.sol"; +import "../../contracts/token/UnwrapSuperToken.sol"; contract SuperTokenTest is Test { - SuperToken public superToken; + UnwrapSuperToken public superToken; address public owner; address public initialSupplyHolder; address public user; @@ -19,7 +19,7 @@ contract SuperTokenTest is Test { user = address(0x2); controller = address(0x3); - superToken = new SuperToken( + superToken = new UnwrapSuperToken( "Aavegotchi Socket GHST", "sGHST", 18, From 3566e4688d7986ee1e78c67e91de076fc96033e5 Mon Sep 17 00:00:00 2001 From: Coderdan Date: Fri, 25 Oct 2024 23:12:34 +0800 Subject: [PATCH 21/57] Update SuperToken.sol --- contracts/token/SuperToken.sol | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contracts/token/SuperToken.sol b/contracts/token/SuperToken.sol index b664b61a..8dc619b8 100644 --- a/contracts/token/SuperToken.sol +++ b/contracts/token/SuperToken.sol @@ -12,7 +12,7 @@ import "../interfaces/IHook.sol"; */ contract SuperToken is ERC20, RescueBase { // for all controller access (mint, burn) - bytes32 public constant CONTROLLER_ROLE = keccak256("CONTROLLER_ROLE"); + bytes32 constant CONTROLLER_ROLE = keccak256("CONTROLLER_ROLE"); /** * @notice constructor for creating a new SuperToken. From 3684045d463ef7023c9b9efe3804377f547c9b11 Mon Sep 17 00:00:00 2001 From: orionstardust Date: Fri, 25 Oct 2024 23:19:05 -0400 Subject: [PATCH 22/57] Revert "fix: mint wearables" This reverts commit 46d379e09eb003b18f0b02f1560fca40e5b2b95e. --- contracts/bridge/NFT/NFTBase.sol | 7 ++----- contracts/bridge/NFT/NFTController.sol | 2 +- contracts/bridge/NFT/NFTVault.sol | 2 +- contracts/interfaces/INFTMetadata.sol | 6 +----- 4 files changed, 5 insertions(+), 12 deletions(-) diff --git a/contracts/bridge/NFT/NFTBase.sol b/contracts/bridge/NFT/NFTBase.sol index 6c7e400d..57bf93bf 100644 --- a/contracts/bridge/NFT/NFTBase.sol +++ b/contracts/bridge/NFT/NFTBase.sol @@ -239,14 +239,12 @@ abstract contract NFTBase is * @param messageId_ The unique identifier for the mint transaction. * @param postHookData_ Data returned from the destination pre-hook call. * @param transferInfo_ Information about the mint transaction. - * @param isMint_ mint or transfer */ function _afterMint( uint256, bytes32 messageId_, bytes memory postHookData_, - NFTTransferInfo memory transferInfo_, - bool isMint_ + NFTTransferInfo memory transferInfo_ ) internal { if (address(hook__) != address(0)) { CacheData memory cacheData = hook__.dstPostHookCall( @@ -266,8 +264,7 @@ abstract contract NFTBase is if (transferInfo_.extraData.length > 0) { INFTMetadata(token).setMetadata( transferInfo_.tokenId, - transferInfo_.extraData, - isMint_ + transferInfo_.extraData ); } diff --git a/contracts/bridge/NFT/NFTController.sol b/contracts/bridge/NFT/NFTController.sol index 0944b5a4..1aaf4258 100644 --- a/contracts/bridge/NFT/NFTController.sol +++ b/contracts/bridge/NFT/NFTController.sol @@ -92,7 +92,7 @@ contract NFTController is NFTBase { _mint(transferInfo.receiver, transferInfo.tokenId, transferInfo.amount); totalMinted[transferInfo.tokenId] += transferInfo.amount; - _afterMint(lockAmount, messageId, postHookData, transferInfo, true); + _afterMint(lockAmount, messageId, postHookData, transferInfo); } /** diff --git a/contracts/bridge/NFT/NFTVault.sol b/contracts/bridge/NFT/NFTVault.sol index 78f6f9a9..d701db43 100644 --- a/contracts/bridge/NFT/NFTVault.sol +++ b/contracts/bridge/NFT/NFTVault.sol @@ -102,7 +102,7 @@ contract NFTVault is NFTBase { transferInfo.amount ); - _afterMint(unlockAmount, messageId, postHookData, transferInfo, false); + _afterMint(unlockAmount, messageId, postHookData, transferInfo); } /** diff --git a/contracts/interfaces/INFTMetadata.sol b/contracts/interfaces/INFTMetadata.sol index 1a466773..c4fad67e 100644 --- a/contracts/interfaces/INFTMetadata.sol +++ b/contracts/interfaces/INFTMetadata.sol @@ -2,9 +2,5 @@ pragma solidity ^0.8.3; interface INFTMetadata { - function setMetadata( - uint256 tokenId, - bytes memory data, - bool isMint - ) external; + function setMetadata(uint256 tokenId, bytes memory data) external; } From e9f93d23d025a0c43302bd84e1e84429c58e46e2 Mon Sep 17 00:00:00 2001 From: orionstardust Date: Sat, 26 Oct 2024 00:27:37 -0400 Subject: [PATCH 23/57] fix: unwrap hook and erc20 interface --- contracts/hooks/UnwrapHook.sol | 15 +++++++++------ contracts/interfaces/IWrapERC20.sol | 10 ++++++++++ 2 files changed, 19 insertions(+), 6 deletions(-) create mode 100644 contracts/interfaces/IWrapERC20.sol diff --git a/contracts/hooks/UnwrapHook.sol b/contracts/hooks/UnwrapHook.sol index 8250e87d..d01e1e9f 100644 --- a/contracts/hooks/UnwrapHook.sol +++ b/contracts/hooks/UnwrapHook.sol @@ -6,6 +6,7 @@ import "../common/Errors.sol"; import "../common/Constants.sol"; import "../interfaces/IHook.sol"; import "../utils/RescueBase.sol"; +import {IWrapERC20} from "../interfaces/IWrapERC20.sol"; /** * @title Base contract for super token and vault @@ -31,13 +32,15 @@ abstract contract HookBase is ReentrancyGuard, IHook, RescueBase { _grantRole(RESCUE_ROLE, owner_); } - // function dstPostHookCall( - // DstPostHookCallParams calldata params_ - // ) external isVaultOrController returns (CacheData memory cacheData) { - // uint256 unwrapAmount = abi.decode(params_.postHookData, (uint256)); + // this should be run in Geist/Polter + function dstPostHookCall( + DstPostHookCallParams calldata params_ + ) external isVaultOrController returns (CacheData memory cacheData) { + // unwrap + IWrapERC20(socketGhstAddress).withdraw(params_.transferInfo.amount); - // return CacheData(); - // } + cacheData = CacheData(bytes(""), abi.encode(0)); + } modifier isVaultOrController() { if (msg.sender != vaultOrController) revert NotAuthorized(); diff --git a/contracts/interfaces/IWrapERC20.sol b/contracts/interfaces/IWrapERC20.sol new file mode 100644 index 00000000..5d97890a --- /dev/null +++ b/contracts/interfaces/IWrapERC20.sol @@ -0,0 +1,10 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.13; + +interface IWrapERC20 { + function mint(address receiver_, uint256 amount_) external; + + function burn(address burner_, uint256 amount_) external; + + function withdraw(uint256 amount_) external; +} From ba1d15675f084d52441cebb6614bfd06ef60fa17 Mon Sep 17 00:00:00 2001 From: Coderdan Date: Sat, 26 Oct 2024 16:19:04 +0800 Subject: [PATCH 24/57] chore: working on unwrap supertoken --- contracts/hooks/UnwrapHook.sol | 2 +- contracts/token/SuperToken.sol | 41 ++++++++- contracts/token/SuperToken_old.sol | 51 +++++++++++ contracts/token/UnwrapSuperToken.sol | 88 ------------------- deployments/supertoken/surge_addresses.json | 26 ++++++ .../surge_socket_ghst2_testnet_addresses.json | 26 ++++++ ...rge_socket_ghst2_testnet_verification.json | 76 ++++++++++++++++ .../supertoken/socket_ghst2_testnet.ts | 42 +++++++++ script/deploy/configure.ts | 19 ++++ script/deploy/deploy.ts | 33 +++++-- script/deploy/deployHook.ts | 7 +- script/helpers/networks.ts | 2 +- src/enum.ts | 1 + src/enums/projectType.ts | 1 + src/enums/projects.ts | 1 + test/supertoken/Supertoken.t.sol | 6 +- 16 files changed, 317 insertions(+), 105 deletions(-) create mode 100644 contracts/token/SuperToken_old.sol delete mode 100644 contracts/token/UnwrapSuperToken.sol create mode 100644 deployments/supertoken/surge_socket_ghst2_testnet_addresses.json create mode 100644 deployments/supertoken/surge_socket_ghst2_testnet_verification.json create mode 100644 script/constants/projectConstants/supertoken/socket_ghst2_testnet.ts diff --git a/contracts/hooks/UnwrapHook.sol b/contracts/hooks/UnwrapHook.sol index d01e1e9f..396f53b2 100644 --- a/contracts/hooks/UnwrapHook.sol +++ b/contracts/hooks/UnwrapHook.sol @@ -14,7 +14,7 @@ import {IWrapERC20} from "../interfaces/IWrapERC20.sol"; * @dev This contract implements Socket's IPlug to enable message bridging and IMessageBridge * to support any type of message bridge. */ -abstract contract HookBase is ReentrancyGuard, IHook, RescueBase { +contract UnwrapHook is ReentrancyGuard, RescueBase { address public immutable vaultOrController; bytes32 public hookType; address public socketGhstAddress; diff --git a/contracts/token/SuperToken.sol b/contracts/token/SuperToken.sol index 8dc619b8..b3652946 100644 --- a/contracts/token/SuperToken.sol +++ b/contracts/token/SuperToken.sol @@ -1,9 +1,10 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.13; -import "solmate/tokens/ERC20.sol"; import "../utils/RescueBase.sol"; import "../interfaces/IHook.sol"; +import {ERC20} from "solmate/tokens/ERC20.sol"; +import {SafeTransferLib} from "solmate/utils/SafeTransferLib.sol"; /** * @title SuperToken @@ -11,8 +12,15 @@ import "../interfaces/IHook.sol"; * @dev This contract implements ISuperTokenOrVault to support message bridging through IMessageBridge compliant contracts. */ contract SuperToken is ERC20, RescueBase { + using SafeTransferLib for address; + + event Deposit(address indexed from, uint256 amount); + event Withdrawal(address indexed to, uint256 amount); + // for all controller access (mint, burn) - bytes32 constant CONTROLLER_ROLE = keccak256("CONTROLLER_ROLE"); + bytes32 public constant CONTROLLER_ROLE = keccak256("CONTROLLER_ROLE"); + + // bytes32 public constant RESCUE_ROLE = keccak256("RESCUE_ROLE"); /** * @notice constructor for creating a new SuperToken. @@ -35,6 +43,9 @@ contract SuperToken is ERC20, RescueBase { _grantRole(RESCUE_ROLE, owner_); } + //Controller Functions + + //burns the supertoken and and unlocks it on the parent chain chain function burn( address user_, uint256 amount_ @@ -42,10 +53,36 @@ contract SuperToken is ERC20, RescueBase { _burn(user_, amount_); } + //lock the NonMintable ERC20 token on the source chain and mint it on the child chain function mint( address receiver_, uint256 amount_ ) external onlyRole(CONTROLLER_ROLE) { _mint(receiver_, amount_); } + + //Wrapping Functions + + //deposits native GHST and mints the supertoken + function deposit() public payable { + _mint(msg.sender, msg.value); + emit Deposit(msg.sender, msg.value); + } + + //withdraws native GHST and burns the supertoken + function withdraw(uint256 amount_) external { + _burn(msg.sender, amount_); + msg.sender.safeTransferETH(amount_); + emit Withdrawal(msg.sender, amount_); + } + + receive() external payable { + deposit(); + } } + +//So the flow is: +//1. User locks their GHST on Polygon, which triggers the mint function on Geist, minting the supertoken version of GHST. +//2. Next, we need to automatically unwrap the supertoken GHST into native GHST. +//3. To do this, we call the withdraw function. This burns the supertoken and sends the native GHST back to the user. +//4. But if there isn't enough native GHST in the contract, the withdraw will fail. So we need to deposit more native GHST to the contract. diff --git a/contracts/token/SuperToken_old.sol b/contracts/token/SuperToken_old.sol new file mode 100644 index 00000000..3eceeee5 --- /dev/null +++ b/contracts/token/SuperToken_old.sol @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.13; + +import "solmate/tokens/ERC20.sol"; +import "../utils/RescueBase.sol"; +import "../interfaces/IHook.sol"; + +/** + * @title SuperToken + * @notice An ERC20 contract which enables bridging a token to its sibling chains. + * @dev This contract implements ISuperTokenOrVault to support message bridging through IMessageBridge compliant contracts. + */ +contract SuperToken_old is ERC20, RescueBase { + // for all controller access (mint, burn) + bytes32 constant CONTROLLER_ROLE = keccak256("CONTROLLER_ROLE"); + + /** + * @notice constructor for creating a new SuperToken. + * @param name_ token name + * @param symbol_ token symbol + * @param decimals_ token decimals (should be same on all chains) + * @param initialSupplyHolder_ address to which initial supply will be minted + * @param owner_ owner of this contract + * @param initialSupply_ initial supply of super token + */ + constructor( + string memory name_, + string memory symbol_, + uint8 decimals_, + address initialSupplyHolder_, + address owner_, + uint256 initialSupply_ + ) ERC20(name_, symbol_, decimals_) AccessControl(owner_) { + _mint(initialSupplyHolder_, initialSupply_); + _grantRole(RESCUE_ROLE, owner_); + } + + function burn( + address user_, + uint256 amount_ + ) external onlyRole(CONTROLLER_ROLE) { + _burn(user_, amount_); + } + + function mint( + address receiver_, + uint256 amount_ + ) external onlyRole(CONTROLLER_ROLE) { + _mint(receiver_, amount_); + } +} diff --git a/contracts/token/UnwrapSuperToken.sol b/contracts/token/UnwrapSuperToken.sol deleted file mode 100644 index 23c6d890..00000000 --- a/contracts/token/UnwrapSuperToken.sol +++ /dev/null @@ -1,88 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.13; - -import "../utils/RescueBase.sol"; -import "../interfaces/IHook.sol"; -import {ERC20} from "solmate/tokens/ERC20.sol"; -import {SafeTransferLib} from "solmate/utils/SafeTransferLib.sol"; - -/** - * @title SuperToken - * @notice An ERC20 contract which enables bridging a token to its sibling chains. - * @dev This contract implements ISuperTokenOrVault to support message bridging through IMessageBridge compliant contracts. - */ -contract UnwrapSuperToken is ERC20, RescueBase { - using SafeTransferLib for address; - - event Deposit(address indexed from, uint256 amount); - event Withdrawal(address indexed to, uint256 amount); - - // for all controller access (mint, burn) - bytes32 public constant CONTROLLER_ROLE = keccak256("CONTROLLER_ROLE"); - - // bytes32 public constant RESCUE_ROLE = keccak256("RESCUE_ROLE"); - - /** - * @notice constructor for creating a new SuperToken. - * @param name_ token name - * @param symbol_ token symbol - * @param decimals_ token decimals (should be same on all chains) - * @param initialSupplyHolder_ address to which initial supply will be minted - * @param owner_ owner of this contract - * @param initialSupply_ initial supply of super token - */ - constructor( - string memory name_, - string memory symbol_, - uint8 decimals_, - address initialSupplyHolder_, - address owner_, - uint256 initialSupply_ - ) ERC20(name_, symbol_, decimals_) AccessControl(owner_) { - _mint(initialSupplyHolder_, initialSupply_); - _grantRole(RESCUE_ROLE, owner_); - } - - //Controller Functions - - //burns the supertoken and and unlocks it on the parent chain chain - function burn( - address user_, - uint256 amount_ - ) external onlyRole(CONTROLLER_ROLE) { - _burn(user_, amount_); - } - - //lock the NonMintable ERC20 token on the source chain and mint it on the child chain - function mint( - address receiver_, - uint256 amount_ - ) external onlyRole(CONTROLLER_ROLE) { - _mint(receiver_, amount_); - } - - //Wrapping Functions - - //deposits native GHST and mints the supertoken - function deposit() public payable { - _mint(msg.sender, msg.value); - emit Deposit(msg.sender, msg.value); - } - - //withdraws native GHST and burns the supertoken - function withdraw(uint256 amount_) external { - _burn(msg.sender, amount_); - msg.sender.safeTransferETH(amount_); - emit Withdrawal(msg.sender, amount_); - } - - receive() external payable { - deposit(); - } -} - -//So the flow is: -//1. User locks their GHST on Polygon, which triggers the mint function on Geist, minting the supertoken version of GHST. -//2. Next, we need to automatically unwrap the supertoken GHST into native GHST. -//3. To do this, we call the withdraw function. This burns the supertoken and sends the native GHST back to the user. -//4. But if there isn't enough native GHST in the contract, the withdraw will fail. So we need to deposit more native GHST to the contract. diff --git a/deployments/supertoken/surge_addresses.json b/deployments/supertoken/surge_addresses.json index e34b0067..4619cee7 100644 --- a/deployments/supertoken/surge_addresses.json +++ b/deployments/supertoken/surge_addresses.json @@ -24,5 +24,31 @@ } } } + }, + "socket_ghst2_testnet": { + "80002": { + "SGHST": { + "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", + "Vault": "0xbDa22cf921957bd60eaE848Ed3f97B58ce8d9a8F", + "LimitHook": "0xCE7694da010Fae787D1c861Ef38302aDD1C902Df", + "connectors": { + "631571": { + "FAST": "0xc5AE64A2784FBCEA8BB2c1e4287687cF5B2470eB" + } + } + } + }, + "631571": { + "SGHST": { + "SuperToken": "0x9d24ffB8986F08519D0338fe90534834147F90f2", + "Controller": "0xb9b0BBA662B71f938Ce897A8886600464589C0C4", + "LimitHook": "0x889c09E4F325C0d210720428E4a8105dbFf8fD6C", + "connectors": { + "80002": { + "FAST": "0x23f16d0F08Ad23d3Cc101695c329D8207e99Dd79" + } + } + } + } } } diff --git a/deployments/supertoken/surge_socket_ghst2_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst2_testnet_addresses.json new file mode 100644 index 00000000..db98b94a --- /dev/null +++ b/deployments/supertoken/surge_socket_ghst2_testnet_addresses.json @@ -0,0 +1,26 @@ +{ + "80002": { + "SGHST": { + "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", + "Vault": "0xbDa22cf921957bd60eaE848Ed3f97B58ce8d9a8F", + "LimitHook": "0xCE7694da010Fae787D1c861Ef38302aDD1C902Df", + "connectors": { + "631571": { + "FAST": "0xc5AE64A2784FBCEA8BB2c1e4287687cF5B2470eB" + } + } + } + }, + "631571": { + "SGHST": { + "SuperToken": "0x9d24ffB8986F08519D0338fe90534834147F90f2", + "Controller": "0xb9b0BBA662B71f938Ce897A8886600464589C0C4", + "LimitHook": "0x889c09E4F325C0d210720428E4a8105dbFf8fD6C", + "connectors": { + "80002": { + "FAST": "0x23f16d0F08Ad23d3Cc101695c329D8207e99Dd79" + } + } + } + } +} diff --git a/deployments/supertoken/surge_socket_ghst2_testnet_verification.json b/deployments/supertoken/surge_socket_ghst2_testnet_verification.json new file mode 100644 index 00000000..0c82fa2b --- /dev/null +++ b/deployments/supertoken/surge_socket_ghst2_testnet_verification.json @@ -0,0 +1,76 @@ +{ + "80002": [ + [ + "0xc5AE64A2784FBCEA8BB2c1e4287687cF5B2470eB", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0xbDa22cf921957bd60eaE848Ed3f97B58ce8d9a8F", + "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", + 631571, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0xCE7694da010Fae787D1c861Ef38302aDD1C902Df", + "LimitHook", + "contracts/hooks/LimitHook.sol", + [ + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0xbDa22cf921957bd60eaE848Ed3f97B58ce8d9a8F", + false + ] + ], + [ + "0xbDa22cf921957bd60eaE848Ed3f97B58ce8d9a8F", + "Vault", + "contracts/bridge/Vault.sol", + ["0xF679b8D109b2d23931237Ce948a7D784727c0897"] + ] + ], + "631571": [ + [ + "0x23f16d0F08Ad23d3Cc101695c329D8207e99Dd79", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0xb9b0BBA662B71f938Ce897A8886600464589C0C4", + "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", + 80002, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0x889c09E4F325C0d210720428E4a8105dbFf8fD6C", + "LimitHook", + "contracts/hooks/LimitHook.sol", + [ + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0xb9b0BBA662B71f938Ce897A8886600464589C0C4", + false + ] + ], + [ + "0xb9b0BBA662B71f938Ce897A8886600464589C0C4", + "Controller", + "contracts/bridge/Controller.sol", + ["0x9d24ffB8986F08519D0338fe90534834147F90f2"] + ], + [ + "0x9d24ffB8986F08519D0338fe90534834147F90f2", + "SuperToken", + "contracts/token/SuperToken.sol", + [ + "Aavegotchi Socket GHST", + "SGHST", + 18, + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + { + "type": "BigNumber", + "hex": "0x00" + } + ] + ] + ] +} diff --git a/script/constants/projectConstants/supertoken/socket_ghst2_testnet.ts b/script/constants/projectConstants/supertoken/socket_ghst2_testnet.ts new file mode 100644 index 00000000..efd0602a --- /dev/null +++ b/script/constants/projectConstants/supertoken/socket_ghst2_testnet.ts @@ -0,0 +1,42 @@ +import { + ChainSlug, + DeploymentMode, + IntegrationTypes, +} from "@socket.tech/dl-core"; +import { Hooks, ProjectConstants } from "../../../../src"; +import { NFTs, Tokens } from "../../../../src/enums"; + +// For testnet deployments, ChainSlug enum may not have some chains, therefore some keys will look like {421614:{}} instead of {[ChainSlug.ARBITRUM_SEPOLIA]:{}}. This wont affect the functionality of the project. +export const pc: ProjectConstants = { + [DeploymentMode.SURGE]: { + [Tokens.SGHST]: { + vaultChains: [80002], + controllerChains: [631571], + hook: { + hookType: Hooks.LIMIT_HOOK, + limitsAndPoolId: { + 80002: { + [IntegrationTypes.fast]: { + sendingLimit: "1000000.0", + receivingLimit: "1000000.0", + }, + }, + 631571: { + [IntegrationTypes.fast]: { + sendingLimit: "1000000.0", + receivingLimit: "1000000.0", + }, + }, + }, + }, + superTokenInfo: { + name: "Aavegotchi Socket GHST", + symbol: Tokens.SGHST, + decimals: 18, + owner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + initialSupplyOwner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + initialSupply: "0", + }, + }, + }, +}; diff --git a/script/deploy/configure.ts b/script/deploy/configure.ts index 07a4b391..41f44e70 100644 --- a/script/deploy/configure.ts +++ b/script/deploy/configure.ts @@ -102,6 +102,7 @@ export const configure = async (allAddresses: SBAddresses | STAddresses) => { siblingSlugs, socketSigner ); + await updateConnectorStatus( chain, siblingSlugs, @@ -124,6 +125,20 @@ export const configure = async (allAddresses: SBAddresses | STAddresses) => { ); } + if (isSuperToken() && addr[TokenContracts.UnwrapSuperToken]) { + let superTokenContract = await getInstance( + TokenContracts.UnwrapSuperToken, + addr[TokenContracts.UnwrapSuperToken] + ); + superTokenContract = superTokenContract.connect(socketSigner); + + await setControllerRole( + chain, + superTokenContract, + bridgeContract.address + ); + } + await configureHooks( chain, token as Tokens, @@ -228,6 +243,10 @@ const connect = async ( ) ).connect(socketSigner); + console.log("CONNECTOR CONTRACT", connectorContract.address); + + console.log("siblingConnectorPlug", siblingConnectorPlug, switchboard); + await execute( connectorContract, "connect", diff --git a/script/deploy/deploy.ts b/script/deploy/deploy.ts index ef18f902..aa1b3cd2 100644 --- a/script/deploy/deploy.ts +++ b/script/deploy/deploy.ts @@ -242,14 +242,15 @@ const deployConnectors = async ( // Currently we only support fast integration type via setup script. For other types, can edit the project constants file. // Will need to add here if we want to support other types in the future for No Hook case. - integrationTypes = - deployParams.hookType == Hooks.NO_HOOK - ? [IntegrationTypes.fast] - : (Object.keys( - pc[deployParams.currentToken].hook.limitsAndPoolId?.[ - deployParams.currentChainSlug - ] - ) as IntegrationTypes[]); + integrationTypes = [Hooks.NO_HOOK, Hooks.UNWRAP_HOOK].includes( + deployParams.hookType + ) + ? [IntegrationTypes.fast] + : (Object.keys( + pc[deployParams.currentToken].hook.limitsAndPoolId?.[ + deployParams.currentChainSlug + ] + ) as IntegrationTypes[]); for (let intType of integrationTypes) { const connector: Contract = await getOrDeployConnector( @@ -293,7 +294,16 @@ export const deployControllerChainContracts = async ( if (isSuperToken()) { deployParams = await deploySuperToken(deployParams); + console.log("deploy params:", deployParams); + let token = deployParams.addresses[TokenContracts.SuperToken]; + + // if (deployParams.hookType == Hooks.UNWRAP_HOOK) { + // token = deployParams.addresses[SuperTokenContracts.UnwrapSuperToken]; + // } else { + + // } + if (token) mintableToken = token; else throw new Error("SuperToken not found on chain"); @@ -373,6 +383,7 @@ export const deployControllerChainContracts = async ( ? AddressZero : controller.address; } + deployParams = await deployHookContracts(deployParams, allAddresses, true); console.log( deployParams.currentChainSlug, @@ -430,6 +441,8 @@ export const deployVaultChainContracts = async ( deployParams ); + console.log("vault address:", vault.address); + deployParams.addresses[SuperBridgeContracts.Vault] = getDryRun() ? AddressZero : vault.address; @@ -452,8 +465,10 @@ export const deployVaultChainContracts = async ( const deploySuperToken = async (deployParams: DeployParams) => { let contractName = SuperTokenContracts.SuperToken; + + //todo: change this to UnwrapSuperToken later if (deployParams.hookType === Hooks.UNWRAP_HOOK) { - contractName = SuperTokenContracts.UnwrapSuperToken; + contractName = SuperTokenContracts.SuperToken; } if ( diff --git a/script/deploy/deployHook.ts b/script/deploy/deployHook.ts index fb2291b3..f6837006 100644 --- a/script/deploy/deployHook.ts +++ b/script/deploy/deployHook.ts @@ -10,6 +10,7 @@ import { STTokenAddresses, SBTokenAddresses, AppChainAddresses, + TokenContracts, } from "../../src"; import { getBridgeContract } from "../helpers/common"; import { getDryRun } from "../constants/config"; @@ -22,6 +23,7 @@ export const deployHookContracts = async ( isControllerChain: boolean ) => { const hookType = deployParams.hookType; + if (!hookType) return deployParams; let contractName: string = ""; @@ -109,10 +111,13 @@ export const deployHookContracts = async ( ]; } else if (hookType == Hooks.UNWRAP_HOOK) { contractName = HookContracts.UnwrapHook; + deployParams = await deployExecutionHelper(deployParams); args = [ getOwner(), bridgeAddress, - deployParams.addresses[HookContracts.ExecutionHelper], + + //todo: change to UnwrapSuperToken later + deployParams.addresses[TokenContracts.SuperToken], ]; } diff --git a/script/helpers/networks.ts b/script/helpers/networks.ts index ac2f397f..6df1681e 100644 --- a/script/helpers/networks.ts +++ b/script/helpers/networks.ts @@ -115,7 +115,7 @@ export const getOverrides = (chainSlug: ChainSlug): Overrides => { return { type: 1, gasLimit, - gasPrice: 25000000000, + gasPrice: 50000000000, }; } diff --git a/src/enum.ts b/src/enum.ts index 4b559bce..92c5ead2 100644 --- a/src/enum.ts +++ b/src/enum.ts @@ -24,6 +24,7 @@ export enum TokenContracts { NonMintableToken = "NonMintableToken", MintableToken = "MintableToken", SuperToken = "SuperToken", + UnwrapSuperToken = "UnwrapSuperToken", } export enum SuperBridgeContracts { diff --git a/src/enums/projectType.ts b/src/enums/projectType.ts index 0566475a..05885dc3 100644 --- a/src/enums/projectType.ts +++ b/src/enums/projectType.ts @@ -25,4 +25,5 @@ export const ProjectTypeMap: Record = { [Project.POLTER_TESTNET]: ProjectType.SUPERBRIDGE, [Project.AAVEGOTCHI_BRIDGE_TESTNET]: ProjectType.SUPERBRIDGE, [Project.SOCKET_GHST_TESTNET]: ProjectType.SUPERTOKEN, + [Project.SOCKET_GHST2_TESTNET]: ProjectType.SUPERTOKEN, }; diff --git a/src/enums/projects.ts b/src/enums/projects.ts index 71d6de06..156c4bd9 100644 --- a/src/enums/projects.ts +++ b/src/enums/projects.ts @@ -22,4 +22,5 @@ export enum Project { POLTER_TESTNET = "polter_testnet", AAVEGOTCHI_BRIDGE_TESTNET = "aavegotchi_bridge_testnet", SOCKET_GHST_TESTNET = "socket_ghst_testnet", + SOCKET_GHST2_TESTNET = "socket_ghst2_testnet", } diff --git a/test/supertoken/Supertoken.t.sol b/test/supertoken/Supertoken.t.sol index cb19232f..94c0cebf 100644 --- a/test/supertoken/Supertoken.t.sol +++ b/test/supertoken/Supertoken.t.sol @@ -2,10 +2,10 @@ pragma solidity 0.8.13; import "forge-std/Test.sol"; -import "../../contracts/token/UnwrapSuperToken.sol"; +import "../../contracts/token/SuperToken.sol"; contract SuperTokenTest is Test { - UnwrapSuperToken public superToken; + SuperToken public superToken; address public owner; address public initialSupplyHolder; address public user; @@ -19,7 +19,7 @@ contract SuperTokenTest is Test { user = address(0x2); controller = address(0x3); - superToken = new UnwrapSuperToken( + superToken = new SuperToken( "Aavegotchi Socket GHST", "sGHST", 18, From 6842a1778873b31d94bf44689e837ad718c6b2db Mon Sep 17 00:00:00 2001 From: Coderdan Date: Sat, 26 Oct 2024 16:31:53 +0800 Subject: [PATCH 25/57] chore: remove files --- .../surge_socket_ghst2_testnet_addresses.json | 26 ------- ...rge_socket_ghst2_testnet_verification.json | 76 ------------------- 2 files changed, 102 deletions(-) delete mode 100644 deployments/supertoken/surge_socket_ghst2_testnet_addresses.json delete mode 100644 deployments/supertoken/surge_socket_ghst2_testnet_verification.json diff --git a/deployments/supertoken/surge_socket_ghst2_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst2_testnet_addresses.json deleted file mode 100644 index db98b94a..00000000 --- a/deployments/supertoken/surge_socket_ghst2_testnet_addresses.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "80002": { - "SGHST": { - "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0xbDa22cf921957bd60eaE848Ed3f97B58ce8d9a8F", - "LimitHook": "0xCE7694da010Fae787D1c861Ef38302aDD1C902Df", - "connectors": { - "631571": { - "FAST": "0xc5AE64A2784FBCEA8BB2c1e4287687cF5B2470eB" - } - } - } - }, - "631571": { - "SGHST": { - "SuperToken": "0x9d24ffB8986F08519D0338fe90534834147F90f2", - "Controller": "0xb9b0BBA662B71f938Ce897A8886600464589C0C4", - "LimitHook": "0x889c09E4F325C0d210720428E4a8105dbFf8fD6C", - "connectors": { - "80002": { - "FAST": "0x23f16d0F08Ad23d3Cc101695c329D8207e99Dd79" - } - } - } - } -} diff --git a/deployments/supertoken/surge_socket_ghst2_testnet_verification.json b/deployments/supertoken/surge_socket_ghst2_testnet_verification.json deleted file mode 100644 index 0c82fa2b..00000000 --- a/deployments/supertoken/surge_socket_ghst2_testnet_verification.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "80002": [ - [ - "0xc5AE64A2784FBCEA8BB2c1e4287687cF5B2470eB", - "ConnectorPlug", - "contracts/ConnectorPlug.sol", - [ - "0xbDa22cf921957bd60eaE848Ed3f97B58ce8d9a8F", - "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", - 631571, - "0x0000000000000000000000000000000000000000000000000000000000000000" - ] - ], - [ - "0xCE7694da010Fae787D1c861Ef38302aDD1C902Df", - "LimitHook", - "contracts/hooks/LimitHook.sol", - [ - "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - "0xbDa22cf921957bd60eaE848Ed3f97B58ce8d9a8F", - false - ] - ], - [ - "0xbDa22cf921957bd60eaE848Ed3f97B58ce8d9a8F", - "Vault", - "contracts/bridge/Vault.sol", - ["0xF679b8D109b2d23931237Ce948a7D784727c0897"] - ] - ], - "631571": [ - [ - "0x23f16d0F08Ad23d3Cc101695c329D8207e99Dd79", - "ConnectorPlug", - "contracts/ConnectorPlug.sol", - [ - "0xb9b0BBA662B71f938Ce897A8886600464589C0C4", - "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", - 80002, - "0x0000000000000000000000000000000000000000000000000000000000000000" - ] - ], - [ - "0x889c09E4F325C0d210720428E4a8105dbFf8fD6C", - "LimitHook", - "contracts/hooks/LimitHook.sol", - [ - "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - "0xb9b0BBA662B71f938Ce897A8886600464589C0C4", - false - ] - ], - [ - "0xb9b0BBA662B71f938Ce897A8886600464589C0C4", - "Controller", - "contracts/bridge/Controller.sol", - ["0x9d24ffB8986F08519D0338fe90534834147F90f2"] - ], - [ - "0x9d24ffB8986F08519D0338fe90534834147F90f2", - "SuperToken", - "contracts/token/SuperToken.sol", - [ - "Aavegotchi Socket GHST", - "SGHST", - 18, - "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - { - "type": "BigNumber", - "hex": "0x00" - } - ] - ] - ] -} From ef67a559429fe300cb4f005bf43b6c22e677f436 Mon Sep 17 00:00:00 2001 From: Coderdan Date: Sat, 26 Oct 2024 16:32:47 +0800 Subject: [PATCH 26/57] Delete socket_ghst2_testnet.ts --- .../supertoken/socket_ghst2_testnet.ts | 42 ------------------- 1 file changed, 42 deletions(-) delete mode 100644 script/constants/projectConstants/supertoken/socket_ghst2_testnet.ts diff --git a/script/constants/projectConstants/supertoken/socket_ghst2_testnet.ts b/script/constants/projectConstants/supertoken/socket_ghst2_testnet.ts deleted file mode 100644 index efd0602a..00000000 --- a/script/constants/projectConstants/supertoken/socket_ghst2_testnet.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { - ChainSlug, - DeploymentMode, - IntegrationTypes, -} from "@socket.tech/dl-core"; -import { Hooks, ProjectConstants } from "../../../../src"; -import { NFTs, Tokens } from "../../../../src/enums"; - -// For testnet deployments, ChainSlug enum may not have some chains, therefore some keys will look like {421614:{}} instead of {[ChainSlug.ARBITRUM_SEPOLIA]:{}}. This wont affect the functionality of the project. -export const pc: ProjectConstants = { - [DeploymentMode.SURGE]: { - [Tokens.SGHST]: { - vaultChains: [80002], - controllerChains: [631571], - hook: { - hookType: Hooks.LIMIT_HOOK, - limitsAndPoolId: { - 80002: { - [IntegrationTypes.fast]: { - sendingLimit: "1000000.0", - receivingLimit: "1000000.0", - }, - }, - 631571: { - [IntegrationTypes.fast]: { - sendingLimit: "1000000.0", - receivingLimit: "1000000.0", - }, - }, - }, - }, - superTokenInfo: { - name: "Aavegotchi Socket GHST", - symbol: Tokens.SGHST, - decimals: 18, - owner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - initialSupplyOwner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - initialSupply: "0", - }, - }, - }, -}; From 333439bbf14914df47bd728b5936682c45ca7d6e Mon Sep 17 00:00:00 2001 From: Coderdan Date: Sat, 26 Oct 2024 17:16:45 +0800 Subject: [PATCH 27/57] chore: working on unwrap --- deployments/supertoken/surge_addresses.json | 33 +-- .../surge_socket_ghst_testnet_addresses.json | 7 +- ...urge_socket_ghst_testnet_verification.json | 20 +- .../supertoken/socket_ghst_testnet.ts | 27 +-- script/deploy/deploy.ts | 2 +- script/deploy/deployHook.ts | 4 +- src/enums/existing-token-addresses.ts | 205 +++++++++--------- src/enums/projectType.ts | 1 - src/enums/projects.ts | 1 - 9 files changed, 137 insertions(+), 163 deletions(-) diff --git a/deployments/supertoken/surge_addresses.json b/deployments/supertoken/surge_addresses.json index 4619cee7..226fb858 100644 --- a/deployments/supertoken/surge_addresses.json +++ b/deployments/supertoken/surge_addresses.json @@ -4,7 +4,6 @@ "SGHST": { "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", "Vault": "0x596A75D94d1Bf0b63af9F4a67Ce5Eeb427EeDdcE", - "LimitHook": "0x2a9e7A2A9FeD4A83F59125cFf72761E467cEa419", "connectors": { "631571": { "FAST": "0xA32137bfb57d2b6A9Fd2956Ba4B54741a6D54b58" @@ -16,39 +15,13 @@ "SGHST": { "SuperToken": "0x0B08aCd19d96B5fAfb9dbDc4b935B58B7A50F16A", "Controller": "0xA421Ed8a4E3cfbFbFd2F621b27bd3C27D71C8b97", - "LimitHook": "0x1A9E2D17122B747871a1088FC38952c7dc5d8334", "connectors": { "80002": { "FAST": "0x19d62CFdB02Db59758E477264c218CCa0F10c6B5" } - } - } - } - }, - "socket_ghst2_testnet": { - "80002": { - "SGHST": { - "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0xbDa22cf921957bd60eaE848Ed3f97B58ce8d9a8F", - "LimitHook": "0xCE7694da010Fae787D1c861Ef38302aDD1C902Df", - "connectors": { - "631571": { - "FAST": "0xc5AE64A2784FBCEA8BB2c1e4287687cF5B2470eB" - } - } - } - }, - "631571": { - "SGHST": { - "SuperToken": "0x9d24ffB8986F08519D0338fe90534834147F90f2", - "Controller": "0xb9b0BBA662B71f938Ce897A8886600464589C0C4", - "LimitHook": "0x889c09E4F325C0d210720428E4a8105dbFf8fD6C", - "connectors": { - "80002": { - "FAST": "0x23f16d0F08Ad23d3Cc101695c329D8207e99Dd79" - } - } + }, + "UnwrapHook": "0x7F8fB0743d4f9A82ea2541a2A4ee538ae863b218" } } } -} +} \ No newline at end of file diff --git a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json index efb487ef..b6f6e5e1 100644 --- a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json +++ b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json @@ -3,7 +3,6 @@ "SGHST": { "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", "Vault": "0x596A75D94d1Bf0b63af9F4a67Ce5Eeb427EeDdcE", - "LimitHook": "0x2a9e7A2A9FeD4A83F59125cFf72761E467cEa419", "connectors": { "631571": { "FAST": "0xA32137bfb57d2b6A9Fd2956Ba4B54741a6D54b58" @@ -15,12 +14,12 @@ "SGHST": { "SuperToken": "0x0B08aCd19d96B5fAfb9dbDc4b935B58B7A50F16A", "Controller": "0xA421Ed8a4E3cfbFbFd2F621b27bd3C27D71C8b97", - "LimitHook": "0x1A9E2D17122B747871a1088FC38952c7dc5d8334", "connectors": { "80002": { "FAST": "0x19d62CFdB02Db59758E477264c218CCa0F10c6B5" } - } + }, + "UnwrapHook": "0x7F8fB0743d4f9A82ea2541a2A4ee538ae863b218" } } -} +} \ No newline at end of file diff --git a/deployments/supertoken/surge_socket_ghst_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_testnet_verification.json index 6b737b06..88c68527 100644 --- a/deployments/supertoken/surge_socket_ghst_testnet_verification.json +++ b/deployments/supertoken/surge_socket_ghst_testnet_verification.json @@ -25,10 +25,22 @@ "0x596A75D94d1Bf0b63af9F4a67Ce5Eeb427EeDdcE", "Vault", "contracts/bridge/Vault.sol", - ["0xF679b8D109b2d23931237Ce948a7D784727c0897"] + [ + "0xF679b8D109b2d23931237Ce948a7D784727c0897" + ] ] ], "631571": [ + [ + "0x7F8fB0743d4f9A82ea2541a2A4ee538ae863b218", + "UnwrapHook", + "contracts/hooks/UnwrapHook.sol", + [ + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0xA421Ed8a4E3cfbFbFd2F621b27bd3C27D71C8b97", + "0x0B08aCd19d96B5fAfb9dbDc4b935B58B7A50F16A" + ] + ], [ "0x19d62CFdB02Db59758E477264c218CCa0F10c6B5", "ConnectorPlug", @@ -54,7 +66,9 @@ "0xA421Ed8a4E3cfbFbFd2F621b27bd3C27D71C8b97", "Controller", "contracts/bridge/Controller.sol", - ["0x0B08aCd19d96B5fAfb9dbDc4b935B58B7A50F16A"] + [ + "0x0B08aCd19d96B5fAfb9dbDc4b935B58B7A50F16A" + ] ], [ "0x0B08aCd19d96B5fAfb9dbDc4b935B58B7A50F16A", @@ -73,4 +87,4 @@ ] ] ] -} +} \ No newline at end of file diff --git a/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts b/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts index 3bf03c84..d35210d3 100644 --- a/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts +++ b/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts @@ -1,3 +1,4 @@ + import { ChainSlug, DeploymentMode, @@ -13,30 +14,16 @@ export const pc: ProjectConstants = { vaultChains: [80002], controllerChains: [631571], hook: { - hookType: Hooks.UNWRAP_HOOK, - limitsAndPoolId: { - 80002: { - [IntegrationTypes.fast]: { - sendingLimit: "1000000.0", - receivingLimit: "1000000.0", - }, - }, - 631571: { - [IntegrationTypes.fast]: { - sendingLimit: "1000000.0", - receivingLimit: "1000000.0", - }, - }, - }, + hookType: Hooks.UNWRAP_HOOK }, superTokenInfo: { - name: "Socket GHST", + name: "Aavegotchi Socket GHST", symbol: Tokens.SGHST, decimals: 18, owner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", initialSupplyOwner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - initialSupply: "0", - }, - }, - }, + initialSupply: "0" + } + } + } }; diff --git a/script/deploy/deploy.ts b/script/deploy/deploy.ts index aa1b3cd2..ff6cda40 100644 --- a/script/deploy/deploy.ts +++ b/script/deploy/deploy.ts @@ -447,7 +447,7 @@ export const deployVaultChainContracts = async ( ? AddressZero : vault.address; - deployParams = await deployHookContracts(deployParams, allAddresses, false); + // deployParams = await deployHookContracts(deployParams, allAddresses, false); console.log( deployParams.currentChainSlug, " Vault Chain Contracts deployed! ✔" diff --git a/script/deploy/deployHook.ts b/script/deploy/deployHook.ts index f6837006..896eae36 100644 --- a/script/deploy/deployHook.ts +++ b/script/deploy/deployHook.ts @@ -110,8 +110,10 @@ export const deployHookContracts = async ( useConnnectorPools, // useControllerPools ]; } else if (hookType == Hooks.UNWRAP_HOOK) { + console.log("addresses:", deployParams.addresses); + contractName = HookContracts.UnwrapHook; - deployParams = await deployExecutionHelper(deployParams); + // deployParams = await deployExecutionHelper(deployParams); args = [ getOwner(), bridgeAddress, diff --git a/src/enums/existing-token-addresses.ts b/src/enums/existing-token-addresses.ts index 4907d043..4a68cbb9 100644 --- a/src/enums/existing-token-addresses.ts +++ b/src/enums/existing-token-addresses.ts @@ -1,104 +1,105 @@ -import { ChainSlug } from "@socket.tech/dl-core"; -import { Tokens } from "./tokens"; -export const ExistingTokenAddresses: { - [key in ChainSlug]?: { [key in Tokens]?: string }; -} = { - [ChainSlug.MAINNET]: { - [Tokens.USDC]: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - [Tokens.USDT]: "0xdac17f958d2ee523a2206206994597c13d831ec7", - [Tokens.WETH]: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - [Tokens.WBTC]: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - [Tokens.SNX]: "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", - [Tokens.WSTETH]: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", - [Tokens.DAI]: "0x6B175474E89094C44Da98b954EedeAC495271d0F", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.USDE]: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", - [Tokens.SUSDE]: "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", - [Tokens.SDEUSD]: "0x5c5b196abe0d54485975d1ec29617d42d9198326", - [Tokens.DEUSD]: "0x15700b564ca08d9439c58ca5053166e8317aa138", - }, - [ChainSlug.OPTIMISM]: { - [Tokens.USDC]: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", - [Tokens.USDCE]: "0x7f5c764cbc14f9669b88837ca1490cca17c31607", - [Tokens.USDT]: "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", - [Tokens.WETH]: "0x4200000000000000000000000000000000000006", - [Tokens.WBTC]: "0x68f180fcce6836688e9084f035309e29bf0a2095", - [Tokens.SNX]: "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", - [Tokens.WSTETH]: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", - [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", - }, - [ChainSlug.POLYGON_MAINNET]: { - [Tokens.USDC]: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", - [Tokens.USDCE]: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", - [Tokens.FUD]: "0x403e967b044d4be25170310157cb1a4bf10bdd0f", - [Tokens.FOMO]: "0x44a6e0be76e1d9620a7f76588e4509fe4fa8e8c8", - [Tokens.ALPHA]: "0x6a3E7C3c6EF65Ee26975b12293cA1AAD7e1dAeD2", - [Tokens.KEK]: "0x42E5E06EF5b90Fe15F853F59299Fc96259209c5C", - [Tokens.GLTR]: "0x3801C3B3B5c98F88a9c9005966AA96aa440B9Afc", - [Tokens.USDT]: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", - [Tokens.DAI]: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - [Tokens.WETH]: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", - [Tokens.WBTC]: "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6", - }, - [ChainSlug.BASE]: { - [Tokens.USDC]: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", - [Tokens.WETH]: "0x4200000000000000000000000000000000000006", - [Tokens.WSTETH]: "0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452", - [Tokens.DAI]: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", - }, - [ChainSlug.ARBITRUM]: { - [Tokens.USDC]: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", - [Tokens.USDCE]: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", - [Tokens.USDT]: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", - [Tokens.WETH]: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", - [Tokens.WBTC]: "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", - [Tokens.WSTETH]: "0x5979D7b546E38E414F7E9822514be443A4800529", - [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", - [Tokens.STIME]: "0x17AfF554423D2C40A1BBF51b443E9d43dd8AE1eb", - [Tokens.MAGIC]: "0x539bde0d7dbd336b79148aa742883198bbf60342", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", - }, - 80002: { - [Tokens.SGHST]: "0xF679b8D109b2d23931237Ce948a7D784727c0897", - }, - [ChainSlug.ARBITRUM_SEPOLIA]: { - [Tokens.USDC]: "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", - [Tokens.USDT]: "0x66DFb9987C36c4be232156e70B085f664367599A", - [Tokens.DAI]: "0x9a573B27D7298c6E2f4d2D4a41c37A0C8AF6accA", - [Tokens.WETH]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", - [Tokens.WBTC]: "0x1019958C2BD43B882a4e1349337a32Ef9563FC4D", - }, - [ChainSlug.SEPOLIA]: { - [Tokens.USDC]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - [Tokens.USDT]: "0xB4130e87A180b9448286B291331aEe8A9C154A3A", - [Tokens.DAI]: "0x255745E5C7Ae620b7f523F5E4A0Ead37660EC5d6", - [Tokens.WETH]: "0x771d1Ae208377453D478dF08BbC38034F72aC833", - [Tokens.WBTC]: "0x94BEff5da6201cB2C8F489196FD970B3DF5aA32A", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - }, - [ChainSlug.AEVO_TESTNET]: { - [Tokens.USDC]: "0x4D435C00E09034ec2113F63088CCD0be0a0fd06e", - }, - [ChainSlug.OPTIMISM_SEPOLIA]: { - [Tokens.USDC]: "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", - [Tokens.USDT]: "0x2d1abA6FaBAe80bF5C1C9EA433AAe9030E07CB22", - [Tokens.DAI]: "0xDC0258dc3dB980090E97EbF4f1FD9Cc3C5AD5894", - [Tokens.WETH]: "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.WBTC]: "0xfC5CC93d85861ac82d89fc2D3e56315540E9C8A7", - }, - [ChainSlug.REYA]: { - [Tokens.SUSDE]: "0x2339D41f410EA761F346a14c184385d15f7266c4", - [Tokens.DEUSD]: "0x809B99df4DDd6fA90F2CF305E2cDC310C6AD3C2c", - [Tokens.SDEUSD]: "0x4D3fEB76ab1C7eF40388Cd7a2066edacE1a2237D", - }, + import { ChainSlug } from "@socket.tech/dl-core"; + import { Tokens } from "./tokens"; + + export const ExistingTokenAddresses: { + [key in ChainSlug]?: { [key in Tokens]?: string }; + } = { + [ChainSlug.MAINNET]: { + [Tokens.USDC]: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + [Tokens.USDT]: "0xdac17f958d2ee523a2206206994597c13d831ec7", + [Tokens.WETH]: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + [Tokens.WBTC]: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + [Tokens.SNX]: "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", + [Tokens.WSTETH]: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + [Tokens.DAI]: "0x6B175474E89094C44Da98b954EedeAC495271d0F", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.USDE]: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", + [Tokens.SUSDE]: "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", + [Tokens.SDEUSD]: "0x5c5b196abe0d54485975d1ec29617d42d9198326", + [Tokens.DEUSD]: "0x15700b564ca08d9439c58ca5053166e8317aa138" +}, +[ChainSlug.OPTIMISM]: { + [Tokens.USDC]: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", + [Tokens.USDCE]: "0x7f5c764cbc14f9669b88837ca1490cca17c31607", + [Tokens.USDT]: "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", + [Tokens.WETH]: "0x4200000000000000000000000000000000000006", + [Tokens.WBTC]: "0x68f180fcce6836688e9084f035309e29bf0a2095", + [Tokens.SNX]: "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", + [Tokens.WSTETH]: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", + [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" +}, +[ChainSlug.POLYGON_MAINNET]: { + [Tokens.USDC]: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", + [Tokens.USDCE]: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + [Tokens.FUD]: "0x403e967b044d4be25170310157cb1a4bf10bdd0f", + [Tokens.FOMO]: "0x44a6e0be76e1d9620a7f76588e4509fe4fa8e8c8", + [Tokens.ALPHA]: "0x6a3E7C3c6EF65Ee26975b12293cA1AAD7e1dAeD2", + [Tokens.KEK]: "0x42E5E06EF5b90Fe15F853F59299Fc96259209c5C", + [Tokens.GLTR]: "0x3801C3B3B5c98F88a9c9005966AA96aa440B9Afc", + [Tokens.USDT]: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", + [Tokens.DAI]: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", + [Tokens.WETH]: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", + [Tokens.WBTC]: "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6" +}, +[ChainSlug.BASE]: { + [Tokens.USDC]: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", + [Tokens.WETH]: "0x4200000000000000000000000000000000000006", + [Tokens.WSTETH]: "0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452", + [Tokens.DAI]: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" +}, +[ChainSlug.ARBITRUM]: { + [Tokens.USDC]: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", + [Tokens.USDCE]: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", + [Tokens.USDT]: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", + [Tokens.WETH]: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", + [Tokens.WBTC]: "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", + [Tokens.WSTETH]: "0x5979D7b546E38E414F7E9822514be443A4800529", + [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", + [Tokens.STIME]: "0x17AfF554423D2C40A1BBF51b443E9d43dd8AE1eb", + [Tokens.MAGIC]: "0x539bde0d7dbd336b79148aa742883198bbf60342", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" +}, +80002: { + [Tokens.SGHST]: "0xF679b8D109b2d23931237Ce948a7D784727c0897" +}, +[ChainSlug.ARBITRUM_SEPOLIA]: { + [Tokens.USDC]: "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", + [Tokens.USDT]: "0x66DFb9987C36c4be232156e70B085f664367599A", + [Tokens.DAI]: "0x9a573B27D7298c6E2f4d2D4a41c37A0C8AF6accA", + [Tokens.WETH]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", + [Tokens.WBTC]: "0x1019958C2BD43B882a4e1349337a32Ef9563FC4D" +}, +[ChainSlug.SEPOLIA]: { + [Tokens.USDC]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", + [Tokens.USDT]: "0xB4130e87A180b9448286B291331aEe8A9C154A3A", + [Tokens.DAI]: "0x255745E5C7Ae620b7f523F5E4A0Ead37660EC5d6", + [Tokens.WETH]: "0x771d1Ae208377453D478dF08BbC38034F72aC833", + [Tokens.WBTC]: "0x94BEff5da6201cB2C8F489196FD970B3DF5aA32A", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" +}, +[ChainSlug.AEVO_TESTNET]: { + [Tokens.USDC]: "0x4D435C00E09034ec2113F63088CCD0be0a0fd06e" +}, +[ChainSlug.OPTIMISM_SEPOLIA]: { + [Tokens.USDC]: "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", + [Tokens.USDT]: "0x2d1abA6FaBAe80bF5C1C9EA433AAe9030E07CB22", + [Tokens.DAI]: "0xDC0258dc3dB980090E97EbF4f1FD9Cc3C5AD5894", + [Tokens.WETH]: "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.WBTC]: "0xfC5CC93d85861ac82d89fc2D3e56315540E9C8A7" +}, +[ChainSlug.REYA]: { + [Tokens.SUSDE]: "0x2339D41f410EA761F346a14c184385d15f7266c4", + [Tokens.DEUSD]: "0x809B99df4DDd6fA90F2CF305E2cDC310C6AD3C2c", + [Tokens.SDEUSD]: "0x4D3fEB76ab1C7eF40388Cd7a2066edacE1a2237D" +} }; diff --git a/src/enums/projectType.ts b/src/enums/projectType.ts index 05885dc3..0566475a 100644 --- a/src/enums/projectType.ts +++ b/src/enums/projectType.ts @@ -25,5 +25,4 @@ export const ProjectTypeMap: Record = { [Project.POLTER_TESTNET]: ProjectType.SUPERBRIDGE, [Project.AAVEGOTCHI_BRIDGE_TESTNET]: ProjectType.SUPERBRIDGE, [Project.SOCKET_GHST_TESTNET]: ProjectType.SUPERTOKEN, - [Project.SOCKET_GHST2_TESTNET]: ProjectType.SUPERTOKEN, }; diff --git a/src/enums/projects.ts b/src/enums/projects.ts index 156c4bd9..71d6de06 100644 --- a/src/enums/projects.ts +++ b/src/enums/projects.ts @@ -22,5 +22,4 @@ export enum Project { POLTER_TESTNET = "polter_testnet", AAVEGOTCHI_BRIDGE_TESTNET = "aavegotchi_bridge_testnet", SOCKET_GHST_TESTNET = "socket_ghst_testnet", - SOCKET_GHST2_TESTNET = "socket_ghst2_testnet", } From bc94111a047f064e509bda9bdc33a2597e0d2279 Mon Sep 17 00:00:00 2001 From: Coderdan Date: Sat, 26 Oct 2024 17:30:17 +0800 Subject: [PATCH 28/57] investigating failed deployment --- deployments/supertoken/surge_addresses.json | 25 +++++++ ...e_socket_ghst_final_testnet_addresses.json | 25 +++++++ ...ocket_ghst_final_testnet_verification.json | 70 +++++++++++++++++++ .../surge_socket_ghst_testnet_addresses.json | 2 +- ...urge_socket_ghst_testnet_verification.json | 10 +-- .../supertoken/socket_ghst_final_testnet.ts | 29 ++++++++ .../supertoken/socket_ghst_testnet.ts | 11 ++- src/enums/projectType.ts | 1 + src/enums/projects.ts | 1 + 9 files changed, 160 insertions(+), 14 deletions(-) create mode 100644 deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json create mode 100644 deployments/supertoken/surge_socket_ghst_final_testnet_verification.json create mode 100644 script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts diff --git a/deployments/supertoken/surge_addresses.json b/deployments/supertoken/surge_addresses.json index 226fb858..25045c5d 100644 --- a/deployments/supertoken/surge_addresses.json +++ b/deployments/supertoken/surge_addresses.json @@ -23,5 +23,30 @@ "UnwrapHook": "0x7F8fB0743d4f9A82ea2541a2A4ee538ae863b218" } } + }, + "socket_ghst_final_testnet": { + "80002": { + "SGHST": { + "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", + "Vault": "0xD77cADF287dD88906B6829BC2b0B129e9218B8A9", + "connectors": { + "631571": { + "FAST": "0xAf415761604cf7A67A67e2B8f6bBa9790Ac55b67" + } + } + } + }, + "631571": { + "SGHST": { + "SuperToken": "0x36d043cE023FD64abCa1160126fd3345dd3935A8", + "Controller": "0x152Ab0b50b9704e898DadD3B24bb302F86F48B47", + "UnwrapHook": "0x8aB3A56092d5534b804fCBA2400e39D9fF97510d", + "connectors": { + "80002": { + "FAST": "0x64D03E24E2d3fB3b22bD4B573d5E9981632C3F8a" + } + } + } + } } } \ No newline at end of file diff --git a/deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json new file mode 100644 index 00000000..8ba8f529 --- /dev/null +++ b/deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json @@ -0,0 +1,25 @@ +{ + "80002": { + "SGHST": { + "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", + "Vault": "0xD77cADF287dD88906B6829BC2b0B129e9218B8A9", + "connectors": { + "631571": { + "FAST": "0xAf415761604cf7A67A67e2B8f6bBa9790Ac55b67" + } + } + } + }, + "631571": { + "SGHST": { + "SuperToken": "0x36d043cE023FD64abCa1160126fd3345dd3935A8", + "Controller": "0x152Ab0b50b9704e898DadD3B24bb302F86F48B47", + "UnwrapHook": "0x8aB3A56092d5534b804fCBA2400e39D9fF97510d", + "connectors": { + "80002": { + "FAST": "0x64D03E24E2d3fB3b22bD4B573d5E9981632C3F8a" + } + } + } + } +} \ No newline at end of file diff --git a/deployments/supertoken/surge_socket_ghst_final_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_final_testnet_verification.json new file mode 100644 index 00000000..b38ed09d --- /dev/null +++ b/deployments/supertoken/surge_socket_ghst_final_testnet_verification.json @@ -0,0 +1,70 @@ +{ + "80002": [ + [ + "0xAf415761604cf7A67A67e2B8f6bBa9790Ac55b67", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0xD77cADF287dD88906B6829BC2b0B129e9218B8A9", + "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", + 631571, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0xD77cADF287dD88906B6829BC2b0B129e9218B8A9", + "Vault", + "contracts/bridge/Vault.sol", + [ + "0xF679b8D109b2d23931237Ce948a7D784727c0897" + ] + ] + ], + "631571": [ + [ + "0x64D03E24E2d3fB3b22bD4B573d5E9981632C3F8a", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0x152Ab0b50b9704e898DadD3B24bb302F86F48B47", + "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", + 80002, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0x8aB3A56092d5534b804fCBA2400e39D9fF97510d", + "UnwrapHook", + "contracts/hooks/UnwrapHook.sol", + [ + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0x152Ab0b50b9704e898DadD3B24bb302F86F48B47", + "0x36d043cE023FD64abCa1160126fd3345dd3935A8" + ] + ], + [ + "0x152Ab0b50b9704e898DadD3B24bb302F86F48B47", + "Controller", + "contracts/bridge/Controller.sol", + [ + "0x36d043cE023FD64abCa1160126fd3345dd3935A8" + ] + ], + [ + "0x36d043cE023FD64abCa1160126fd3345dd3935A8", + "SuperToken", + "contracts/token/SuperToken.sol", + [ + "Aavegotchi Socket GHST", + "SGHST", + 18, + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + { + "type": "BigNumber", + "hex": "0x00" + } + ] + ] + ] +} \ No newline at end of file diff --git a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json index b6f6e5e1..b96aeec0 100644 --- a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json +++ b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json @@ -22,4 +22,4 @@ "UnwrapHook": "0x7F8fB0743d4f9A82ea2541a2A4ee538ae863b218" } } -} \ No newline at end of file +} diff --git a/deployments/supertoken/surge_socket_ghst_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_testnet_verification.json index 88c68527..be633043 100644 --- a/deployments/supertoken/surge_socket_ghst_testnet_verification.json +++ b/deployments/supertoken/surge_socket_ghst_testnet_verification.json @@ -25,9 +25,7 @@ "0x596A75D94d1Bf0b63af9F4a67Ce5Eeb427EeDdcE", "Vault", "contracts/bridge/Vault.sol", - [ - "0xF679b8D109b2d23931237Ce948a7D784727c0897" - ] + ["0xF679b8D109b2d23931237Ce948a7D784727c0897"] ] ], "631571": [ @@ -66,9 +64,7 @@ "0xA421Ed8a4E3cfbFbFd2F621b27bd3C27D71C8b97", "Controller", "contracts/bridge/Controller.sol", - [ - "0x0B08aCd19d96B5fAfb9dbDc4b935B58B7A50F16A" - ] + ["0x0B08aCd19d96B5fAfb9dbDc4b935B58B7A50F16A"] ], [ "0x0B08aCd19d96B5fAfb9dbDc4b935B58B7A50F16A", @@ -87,4 +83,4 @@ ] ] ] -} \ No newline at end of file +} diff --git a/script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts b/script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts new file mode 100644 index 00000000..d35210d3 --- /dev/null +++ b/script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts @@ -0,0 +1,29 @@ + +import { + ChainSlug, + DeploymentMode, + IntegrationTypes, +} from "@socket.tech/dl-core"; +import { Hooks, ProjectConstants } from "../../../../src"; +import { NFTs, Tokens } from "../../../../src/enums"; + +// For testnet deployments, ChainSlug enum may not have some chains, therefore some keys will look like {421614:{}} instead of {[ChainSlug.ARBITRUM_SEPOLIA]:{}}. This wont affect the functionality of the project. +export const pc: ProjectConstants = { + [DeploymentMode.SURGE]: { + [Tokens.SGHST]: { + vaultChains: [80002], + controllerChains: [631571], + hook: { + hookType: Hooks.UNWRAP_HOOK + }, + superTokenInfo: { + name: "Aavegotchi Socket GHST", + symbol: Tokens.SGHST, + decimals: 18, + owner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + initialSupplyOwner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + initialSupply: "0" + } + } + } +}; diff --git a/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts b/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts index d35210d3..1a6e779e 100644 --- a/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts +++ b/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts @@ -1,4 +1,3 @@ - import { ChainSlug, DeploymentMode, @@ -14,7 +13,7 @@ export const pc: ProjectConstants = { vaultChains: [80002], controllerChains: [631571], hook: { - hookType: Hooks.UNWRAP_HOOK + hookType: Hooks.UNWRAP_HOOK, }, superTokenInfo: { name: "Aavegotchi Socket GHST", @@ -22,8 +21,8 @@ export const pc: ProjectConstants = { decimals: 18, owner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", initialSupplyOwner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - initialSupply: "0" - } - } - } + initialSupply: "0", + }, + }, + }, }; diff --git a/src/enums/projectType.ts b/src/enums/projectType.ts index 0566475a..72fe29c8 100644 --- a/src/enums/projectType.ts +++ b/src/enums/projectType.ts @@ -25,4 +25,5 @@ export const ProjectTypeMap: Record = { [Project.POLTER_TESTNET]: ProjectType.SUPERBRIDGE, [Project.AAVEGOTCHI_BRIDGE_TESTNET]: ProjectType.SUPERBRIDGE, [Project.SOCKET_GHST_TESTNET]: ProjectType.SUPERTOKEN, + [Project.SOCKET_GHST_FINAL_TESTNET]: ProjectType.SUPERTOKEN, }; diff --git a/src/enums/projects.ts b/src/enums/projects.ts index 71d6de06..e88d3424 100644 --- a/src/enums/projects.ts +++ b/src/enums/projects.ts @@ -22,4 +22,5 @@ export enum Project { POLTER_TESTNET = "polter_testnet", AAVEGOTCHI_BRIDGE_TESTNET = "aavegotchi_bridge_testnet", SOCKET_GHST_TESTNET = "socket_ghst_testnet", + SOCKET_GHST_FINAL_TESTNET = "socket_ghst_final_testnet", } From 5d0ca91621f4b9e306780a8bc0095b942d2ebf12 Mon Sep 17 00:00:00 2001 From: Coderdan Date: Sat, 26 Oct 2024 17:30:40 +0800 Subject: [PATCH 29/57] chore: add addresses --- deployments/supertoken/surge_addresses.json | 2 +- ...e_socket_ghst_final_testnet_addresses.json | 2 +- ...ocket_ghst_final_testnet_verification.json | 10 +- .../supertoken/socket_ghst_final_testnet.ts | 11 +- src/enums/existing-token-addresses.ts | 205 +++++++++--------- 5 files changed, 112 insertions(+), 118 deletions(-) diff --git a/deployments/supertoken/surge_addresses.json b/deployments/supertoken/surge_addresses.json index 25045c5d..a166f5f5 100644 --- a/deployments/supertoken/surge_addresses.json +++ b/deployments/supertoken/surge_addresses.json @@ -49,4 +49,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json index 8ba8f529..c2b9291b 100644 --- a/deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json +++ b/deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json @@ -22,4 +22,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/supertoken/surge_socket_ghst_final_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_final_testnet_verification.json index b38ed09d..a260e0d5 100644 --- a/deployments/supertoken/surge_socket_ghst_final_testnet_verification.json +++ b/deployments/supertoken/surge_socket_ghst_final_testnet_verification.json @@ -15,9 +15,7 @@ "0xD77cADF287dD88906B6829BC2b0B129e9218B8A9", "Vault", "contracts/bridge/Vault.sol", - [ - "0xF679b8D109b2d23931237Ce948a7D784727c0897" - ] + ["0xF679b8D109b2d23931237Ce948a7D784727c0897"] ] ], "631571": [ @@ -46,9 +44,7 @@ "0x152Ab0b50b9704e898DadD3B24bb302F86F48B47", "Controller", "contracts/bridge/Controller.sol", - [ - "0x36d043cE023FD64abCa1160126fd3345dd3935A8" - ] + ["0x36d043cE023FD64abCa1160126fd3345dd3935A8"] ], [ "0x36d043cE023FD64abCa1160126fd3345dd3935A8", @@ -67,4 +63,4 @@ ] ] ] -} \ No newline at end of file +} diff --git a/script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts b/script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts index d35210d3..1a6e779e 100644 --- a/script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts +++ b/script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts @@ -1,4 +1,3 @@ - import { ChainSlug, DeploymentMode, @@ -14,7 +13,7 @@ export const pc: ProjectConstants = { vaultChains: [80002], controllerChains: [631571], hook: { - hookType: Hooks.UNWRAP_HOOK + hookType: Hooks.UNWRAP_HOOK, }, superTokenInfo: { name: "Aavegotchi Socket GHST", @@ -22,8 +21,8 @@ export const pc: ProjectConstants = { decimals: 18, owner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", initialSupplyOwner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - initialSupply: "0" - } - } - } + initialSupply: "0", + }, + }, + }, }; diff --git a/src/enums/existing-token-addresses.ts b/src/enums/existing-token-addresses.ts index 4a68cbb9..4907d043 100644 --- a/src/enums/existing-token-addresses.ts +++ b/src/enums/existing-token-addresses.ts @@ -1,105 +1,104 @@ +import { ChainSlug } from "@socket.tech/dl-core"; +import { Tokens } from "./tokens"; - import { ChainSlug } from "@socket.tech/dl-core"; - import { Tokens } from "./tokens"; - - export const ExistingTokenAddresses: { - [key in ChainSlug]?: { [key in Tokens]?: string }; - } = { - [ChainSlug.MAINNET]: { - [Tokens.USDC]: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - [Tokens.USDT]: "0xdac17f958d2ee523a2206206994597c13d831ec7", - [Tokens.WETH]: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - [Tokens.WBTC]: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - [Tokens.SNX]: "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", - [Tokens.WSTETH]: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", - [Tokens.DAI]: "0x6B175474E89094C44Da98b954EedeAC495271d0F", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.USDE]: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", - [Tokens.SUSDE]: "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", - [Tokens.SDEUSD]: "0x5c5b196abe0d54485975d1ec29617d42d9198326", - [Tokens.DEUSD]: "0x15700b564ca08d9439c58ca5053166e8317aa138" -}, -[ChainSlug.OPTIMISM]: { - [Tokens.USDC]: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", - [Tokens.USDCE]: "0x7f5c764cbc14f9669b88837ca1490cca17c31607", - [Tokens.USDT]: "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", - [Tokens.WETH]: "0x4200000000000000000000000000000000000006", - [Tokens.WBTC]: "0x68f180fcce6836688e9084f035309e29bf0a2095", - [Tokens.SNX]: "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", - [Tokens.WSTETH]: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", - [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" -}, -[ChainSlug.POLYGON_MAINNET]: { - [Tokens.USDC]: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", - [Tokens.USDCE]: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", - [Tokens.FUD]: "0x403e967b044d4be25170310157cb1a4bf10bdd0f", - [Tokens.FOMO]: "0x44a6e0be76e1d9620a7f76588e4509fe4fa8e8c8", - [Tokens.ALPHA]: "0x6a3E7C3c6EF65Ee26975b12293cA1AAD7e1dAeD2", - [Tokens.KEK]: "0x42E5E06EF5b90Fe15F853F59299Fc96259209c5C", - [Tokens.GLTR]: "0x3801C3B3B5c98F88a9c9005966AA96aa440B9Afc", - [Tokens.USDT]: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", - [Tokens.DAI]: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - [Tokens.WETH]: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", - [Tokens.WBTC]: "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6" -}, -[ChainSlug.BASE]: { - [Tokens.USDC]: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", - [Tokens.WETH]: "0x4200000000000000000000000000000000000006", - [Tokens.WSTETH]: "0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452", - [Tokens.DAI]: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" -}, -[ChainSlug.ARBITRUM]: { - [Tokens.USDC]: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", - [Tokens.USDCE]: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", - [Tokens.USDT]: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", - [Tokens.WETH]: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", - [Tokens.WBTC]: "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", - [Tokens.WSTETH]: "0x5979D7b546E38E414F7E9822514be443A4800529", - [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", - [Tokens.STIME]: "0x17AfF554423D2C40A1BBF51b443E9d43dd8AE1eb", - [Tokens.MAGIC]: "0x539bde0d7dbd336b79148aa742883198bbf60342", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" -}, -80002: { - [Tokens.SGHST]: "0xF679b8D109b2d23931237Ce948a7D784727c0897" -}, -[ChainSlug.ARBITRUM_SEPOLIA]: { - [Tokens.USDC]: "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", - [Tokens.USDT]: "0x66DFb9987C36c4be232156e70B085f664367599A", - [Tokens.DAI]: "0x9a573B27D7298c6E2f4d2D4a41c37A0C8AF6accA", - [Tokens.WETH]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", - [Tokens.WBTC]: "0x1019958C2BD43B882a4e1349337a32Ef9563FC4D" -}, -[ChainSlug.SEPOLIA]: { - [Tokens.USDC]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - [Tokens.USDT]: "0xB4130e87A180b9448286B291331aEe8A9C154A3A", - [Tokens.DAI]: "0x255745E5C7Ae620b7f523F5E4A0Ead37660EC5d6", - [Tokens.WETH]: "0x771d1Ae208377453D478dF08BbC38034F72aC833", - [Tokens.WBTC]: "0x94BEff5da6201cB2C8F489196FD970B3DF5aA32A", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" -}, -[ChainSlug.AEVO_TESTNET]: { - [Tokens.USDC]: "0x4D435C00E09034ec2113F63088CCD0be0a0fd06e" -}, -[ChainSlug.OPTIMISM_SEPOLIA]: { - [Tokens.USDC]: "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", - [Tokens.USDT]: "0x2d1abA6FaBAe80bF5C1C9EA433AAe9030E07CB22", - [Tokens.DAI]: "0xDC0258dc3dB980090E97EbF4f1FD9Cc3C5AD5894", - [Tokens.WETH]: "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.WBTC]: "0xfC5CC93d85861ac82d89fc2D3e56315540E9C8A7" -}, -[ChainSlug.REYA]: { - [Tokens.SUSDE]: "0x2339D41f410EA761F346a14c184385d15f7266c4", - [Tokens.DEUSD]: "0x809B99df4DDd6fA90F2CF305E2cDC310C6AD3C2c", - [Tokens.SDEUSD]: "0x4D3fEB76ab1C7eF40388Cd7a2066edacE1a2237D" -} +export const ExistingTokenAddresses: { + [key in ChainSlug]?: { [key in Tokens]?: string }; +} = { + [ChainSlug.MAINNET]: { + [Tokens.USDC]: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + [Tokens.USDT]: "0xdac17f958d2ee523a2206206994597c13d831ec7", + [Tokens.WETH]: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + [Tokens.WBTC]: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + [Tokens.SNX]: "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", + [Tokens.WSTETH]: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + [Tokens.DAI]: "0x6B175474E89094C44Da98b954EedeAC495271d0F", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.USDE]: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", + [Tokens.SUSDE]: "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", + [Tokens.SDEUSD]: "0x5c5b196abe0d54485975d1ec29617d42d9198326", + [Tokens.DEUSD]: "0x15700b564ca08d9439c58ca5053166e8317aa138", + }, + [ChainSlug.OPTIMISM]: { + [Tokens.USDC]: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", + [Tokens.USDCE]: "0x7f5c764cbc14f9669b88837ca1490cca17c31607", + [Tokens.USDT]: "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", + [Tokens.WETH]: "0x4200000000000000000000000000000000000006", + [Tokens.WBTC]: "0x68f180fcce6836688e9084f035309e29bf0a2095", + [Tokens.SNX]: "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", + [Tokens.WSTETH]: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", + [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", + }, + [ChainSlug.POLYGON_MAINNET]: { + [Tokens.USDC]: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", + [Tokens.USDCE]: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + [Tokens.FUD]: "0x403e967b044d4be25170310157cb1a4bf10bdd0f", + [Tokens.FOMO]: "0x44a6e0be76e1d9620a7f76588e4509fe4fa8e8c8", + [Tokens.ALPHA]: "0x6a3E7C3c6EF65Ee26975b12293cA1AAD7e1dAeD2", + [Tokens.KEK]: "0x42E5E06EF5b90Fe15F853F59299Fc96259209c5C", + [Tokens.GLTR]: "0x3801C3B3B5c98F88a9c9005966AA96aa440B9Afc", + [Tokens.USDT]: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", + [Tokens.DAI]: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", + [Tokens.WETH]: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", + [Tokens.WBTC]: "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6", + }, + [ChainSlug.BASE]: { + [Tokens.USDC]: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", + [Tokens.WETH]: "0x4200000000000000000000000000000000000006", + [Tokens.WSTETH]: "0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452", + [Tokens.DAI]: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", + }, + [ChainSlug.ARBITRUM]: { + [Tokens.USDC]: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", + [Tokens.USDCE]: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", + [Tokens.USDT]: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", + [Tokens.WETH]: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", + [Tokens.WBTC]: "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", + [Tokens.WSTETH]: "0x5979D7b546E38E414F7E9822514be443A4800529", + [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", + [Tokens.STIME]: "0x17AfF554423D2C40A1BBF51b443E9d43dd8AE1eb", + [Tokens.MAGIC]: "0x539bde0d7dbd336b79148aa742883198bbf60342", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", + }, + 80002: { + [Tokens.SGHST]: "0xF679b8D109b2d23931237Ce948a7D784727c0897", + }, + [ChainSlug.ARBITRUM_SEPOLIA]: { + [Tokens.USDC]: "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", + [Tokens.USDT]: "0x66DFb9987C36c4be232156e70B085f664367599A", + [Tokens.DAI]: "0x9a573B27D7298c6E2f4d2D4a41c37A0C8AF6accA", + [Tokens.WETH]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", + [Tokens.WBTC]: "0x1019958C2BD43B882a4e1349337a32Ef9563FC4D", + }, + [ChainSlug.SEPOLIA]: { + [Tokens.USDC]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", + [Tokens.USDT]: "0xB4130e87A180b9448286B291331aEe8A9C154A3A", + [Tokens.DAI]: "0x255745E5C7Ae620b7f523F5E4A0Ead37660EC5d6", + [Tokens.WETH]: "0x771d1Ae208377453D478dF08BbC38034F72aC833", + [Tokens.WBTC]: "0x94BEff5da6201cB2C8F489196FD970B3DF5aA32A", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + }, + [ChainSlug.AEVO_TESTNET]: { + [Tokens.USDC]: "0x4D435C00E09034ec2113F63088CCD0be0a0fd06e", + }, + [ChainSlug.OPTIMISM_SEPOLIA]: { + [Tokens.USDC]: "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", + [Tokens.USDT]: "0x2d1abA6FaBAe80bF5C1C9EA433AAe9030E07CB22", + [Tokens.DAI]: "0xDC0258dc3dB980090E97EbF4f1FD9Cc3C5AD5894", + [Tokens.WETH]: "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.WBTC]: "0xfC5CC93d85861ac82d89fc2D3e56315540E9C8A7", + }, + [ChainSlug.REYA]: { + [Tokens.SUSDE]: "0x2339D41f410EA761F346a14c184385d15f7266c4", + [Tokens.DEUSD]: "0x809B99df4DDd6fA90F2CF305E2cDC310C6AD3C2c", + [Tokens.SDEUSD]: "0x4D3fEB76ab1C7eF40388Cd7a2066edacE1a2237D", + }, }; From e7c1fbeb7fee290320a228146cee36f26777d1d7 Mon Sep 17 00:00:00 2001 From: Coderdan Date: Sat, 26 Oct 2024 19:52:05 +0800 Subject: [PATCH 30/57] chore: update hook --- contracts/hooks/UnwrapHook.sol | 65 +++++- deployments/supertoken/surge_addresses.json | 41 +--- ...e_socket_ghst_final_testnet_addresses.json | 25 --- ...e_socket_ghst_test2_testnet_addresses.json | 25 +++ ...cket_ghst_test2_testnet_verification.json} | 30 +-- .../surge_socket_ghst_testnet_addresses.json | 25 --- ...urge_socket_ghst_testnet_verification.json | 86 -------- ...estnet.ts => socket_ghst_test2_testnet.ts} | 11 +- .../supertoken/socket_ghst_testnet.ts | 28 --- script/deploy/deploy.ts | 2 - src/enums/existing-token-addresses.ts | 205 +++++++++--------- src/enums/projectType.ts | 3 +- src/enums/projects.ts | 3 +- 13 files changed, 217 insertions(+), 332 deletions(-) delete mode 100644 deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json create mode 100644 deployments/supertoken/surge_socket_ghst_test2_testnet_addresses.json rename deployments/supertoken/{surge_socket_ghst_final_testnet_verification.json => surge_socket_ghst_test2_testnet_verification.json} (62%) delete mode 100644 deployments/supertoken/surge_socket_ghst_testnet_addresses.json delete mode 100644 deployments/supertoken/surge_socket_ghst_testnet_verification.json rename script/constants/projectConstants/supertoken/{socket_ghst_final_testnet.ts => socket_ghst_test2_testnet.ts} (90%) delete mode 100644 script/constants/projectConstants/supertoken/socket_ghst_testnet.ts diff --git a/contracts/hooks/UnwrapHook.sol b/contracts/hooks/UnwrapHook.sol index 396f53b2..d50775b7 100644 --- a/contracts/hooks/UnwrapHook.sol +++ b/contracts/hooks/UnwrapHook.sol @@ -6,6 +6,7 @@ import "../common/Errors.sol"; import "../common/Constants.sol"; import "../interfaces/IHook.sol"; import "../utils/RescueBase.sol"; +import "./HookBase.sol"; import {IWrapERC20} from "../interfaces/IWrapERC20.sol"; /** @@ -14,9 +15,7 @@ import {IWrapERC20} from "../interfaces/IWrapERC20.sol"; * @dev This contract implements Socket's IPlug to enable message bridging and IMessageBridge * to support any type of message bridge. */ -contract UnwrapHook is ReentrancyGuard, RescueBase { - address public immutable vaultOrController; - bytes32 public hookType; +contract UnwrapHook is ReentrancyGuard, RescueBase, HookBase { address public socketGhstAddress; /** @@ -24,10 +23,9 @@ contract UnwrapHook is ReentrancyGuard, RescueBase { */ constructor( address owner_, - address vaultOrController_, + address controller_, address socketGhstAddress_ - ) AccessControl(owner_) { - vaultOrController = vaultOrController_; + ) HookBase(owner_, controller_) { socketGhstAddress = socketGhstAddress_; _grantRole(RESCUE_ROLE, owner_); } @@ -42,8 +40,57 @@ contract UnwrapHook is ReentrancyGuard, RescueBase { cacheData = CacheData(bytes(""), abi.encode(0)); } - modifier isVaultOrController() { - if (msg.sender != vaultOrController) revert NotAuthorized(); - _; + function srcPreHookCall( + SrcPreHookCallParams calldata params_ + ) + external + returns (TransferInfo memory transferInfo, bytes memory postHookData) + { + return (params_.transferInfo, bytes("")); + } + + function srcPostHookCall( + SrcPostHookCallParams calldata params_ + ) external returns (TransferInfo memory transferInfo) { + return params_.transferInfo; + } + + /** + * @notice Executes pre-hook call for destination underlyingAsset. + * @dev This function is used to execute a pre-hook call for the destination underlyingAsset before initiating a transfer. + * @param params_ Parameters for the pre-hook call. + */ + function dstPreHookCall( + DstPreHookCallParams calldata params_ + ) + external + returns (bytes memory postHookData, TransferInfo memory transferInfo) + { + return (bytes(""), params_.transferInfo); + } + + function preRetryHook( + PreRetryHookCallParams memory params_ + ) + external + nonReentrant + isVaultOrController + returns (bytes memory postHookData, TransferInfo memory transferInfo) + { + postHookData = bytes(""); + transferInfo = TransferInfo(address(0), 0, bytes("")); + return (postHookData, transferInfo); + } + + function postRetryHook( + PostRetryHookCallParams calldata params_ + ) + external + isVaultOrController + nonReentrant + returns (CacheData memory cacheData) + { + cacheData = CacheData(bytes(""), abi.encode(0)); + return cacheData; } } diff --git a/deployments/supertoken/surge_addresses.json b/deployments/supertoken/surge_addresses.json index a166f5f5..145945db 100644 --- a/deployments/supertoken/surge_addresses.json +++ b/deployments/supertoken/surge_addresses.json @@ -1,52 +1,27 @@ { - "socket_ghst_testnet": { + "socket_ghst_test2_testnet": { "80002": { "SGHST": { "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0x596A75D94d1Bf0b63af9F4a67Ce5Eeb427EeDdcE", + "Vault": "0x096c22daD52B2406511267c6f51f2a0467DF7831", "connectors": { "631571": { - "FAST": "0xA32137bfb57d2b6A9Fd2956Ba4B54741a6D54b58" + "FAST": "0x3A493e2bd30B6b9Fa315817FAB9d262FE946bf2e" } } } }, "631571": { "SGHST": { - "SuperToken": "0x0B08aCd19d96B5fAfb9dbDc4b935B58B7A50F16A", - "Controller": "0xA421Ed8a4E3cfbFbFd2F621b27bd3C27D71C8b97", + "SuperToken": "0xd6F3277a2EAb45c480E8aE871Df6423059b5ac3F", + "Controller": "0xE4d0A5C11342F796eE665AC3Cea271A2F1B6F023", + "UnwrapHook": "0x2dc4Eb0baA5804DeD56889947B92b2ae74f4119b", "connectors": { "80002": { - "FAST": "0x19d62CFdB02Db59758E477264c218CCa0F10c6B5" - } - }, - "UnwrapHook": "0x7F8fB0743d4f9A82ea2541a2A4ee538ae863b218" - } - } - }, - "socket_ghst_final_testnet": { - "80002": { - "SGHST": { - "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0xD77cADF287dD88906B6829BC2b0B129e9218B8A9", - "connectors": { - "631571": { - "FAST": "0xAf415761604cf7A67A67e2B8f6bBa9790Ac55b67" - } - } - } - }, - "631571": { - "SGHST": { - "SuperToken": "0x36d043cE023FD64abCa1160126fd3345dd3935A8", - "Controller": "0x152Ab0b50b9704e898DadD3B24bb302F86F48B47", - "UnwrapHook": "0x8aB3A56092d5534b804fCBA2400e39D9fF97510d", - "connectors": { - "80002": { - "FAST": "0x64D03E24E2d3fB3b22bD4B573d5E9981632C3F8a" + "FAST": "0x65C9733e5077AECce8c5326314d5BcCcDcF5dfcd" } } } } } -} +} \ No newline at end of file diff --git a/deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json deleted file mode 100644 index c2b9291b..00000000 --- a/deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "80002": { - "SGHST": { - "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0xD77cADF287dD88906B6829BC2b0B129e9218B8A9", - "connectors": { - "631571": { - "FAST": "0xAf415761604cf7A67A67e2B8f6bBa9790Ac55b67" - } - } - } - }, - "631571": { - "SGHST": { - "SuperToken": "0x36d043cE023FD64abCa1160126fd3345dd3935A8", - "Controller": "0x152Ab0b50b9704e898DadD3B24bb302F86F48B47", - "UnwrapHook": "0x8aB3A56092d5534b804fCBA2400e39D9fF97510d", - "connectors": { - "80002": { - "FAST": "0x64D03E24E2d3fB3b22bD4B573d5E9981632C3F8a" - } - } - } - } -} diff --git a/deployments/supertoken/surge_socket_ghst_test2_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_test2_testnet_addresses.json new file mode 100644 index 00000000..f5cabe2a --- /dev/null +++ b/deployments/supertoken/surge_socket_ghst_test2_testnet_addresses.json @@ -0,0 +1,25 @@ +{ + "80002": { + "SGHST": { + "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", + "Vault": "0x096c22daD52B2406511267c6f51f2a0467DF7831", + "connectors": { + "631571": { + "FAST": "0x3A493e2bd30B6b9Fa315817FAB9d262FE946bf2e" + } + } + } + }, + "631571": { + "SGHST": { + "SuperToken": "0xd6F3277a2EAb45c480E8aE871Df6423059b5ac3F", + "Controller": "0xE4d0A5C11342F796eE665AC3Cea271A2F1B6F023", + "UnwrapHook": "0x2dc4Eb0baA5804DeD56889947B92b2ae74f4119b", + "connectors": { + "80002": { + "FAST": "0x65C9733e5077AECce8c5326314d5BcCcDcF5dfcd" + } + } + } + } +} \ No newline at end of file diff --git a/deployments/supertoken/surge_socket_ghst_final_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_test2_testnet_verification.json similarity index 62% rename from deployments/supertoken/surge_socket_ghst_final_testnet_verification.json rename to deployments/supertoken/surge_socket_ghst_test2_testnet_verification.json index a260e0d5..87cb61ef 100644 --- a/deployments/supertoken/surge_socket_ghst_final_testnet_verification.json +++ b/deployments/supertoken/surge_socket_ghst_test2_testnet_verification.json @@ -1,53 +1,57 @@ { "80002": [ [ - "0xAf415761604cf7A67A67e2B8f6bBa9790Ac55b67", + "0x3A493e2bd30B6b9Fa315817FAB9d262FE946bf2e", "ConnectorPlug", "contracts/ConnectorPlug.sol", [ - "0xD77cADF287dD88906B6829BC2b0B129e9218B8A9", + "0x096c22daD52B2406511267c6f51f2a0467DF7831", "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", 631571, "0x0000000000000000000000000000000000000000000000000000000000000000" ] ], [ - "0xD77cADF287dD88906B6829BC2b0B129e9218B8A9", + "0x096c22daD52B2406511267c6f51f2a0467DF7831", "Vault", "contracts/bridge/Vault.sol", - ["0xF679b8D109b2d23931237Ce948a7D784727c0897"] + [ + "0xF679b8D109b2d23931237Ce948a7D784727c0897" + ] ] ], "631571": [ [ - "0x64D03E24E2d3fB3b22bD4B573d5E9981632C3F8a", + "0x65C9733e5077AECce8c5326314d5BcCcDcF5dfcd", "ConnectorPlug", "contracts/ConnectorPlug.sol", [ - "0x152Ab0b50b9704e898DadD3B24bb302F86F48B47", + "0xE4d0A5C11342F796eE665AC3Cea271A2F1B6F023", "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", 80002, "0x0000000000000000000000000000000000000000000000000000000000000000" ] ], [ - "0x8aB3A56092d5534b804fCBA2400e39D9fF97510d", + "0x2dc4Eb0baA5804DeD56889947B92b2ae74f4119b", "UnwrapHook", "contracts/hooks/UnwrapHook.sol", [ "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - "0x152Ab0b50b9704e898DadD3B24bb302F86F48B47", - "0x36d043cE023FD64abCa1160126fd3345dd3935A8" + "0xE4d0A5C11342F796eE665AC3Cea271A2F1B6F023", + "0xd6F3277a2EAb45c480E8aE871Df6423059b5ac3F" ] ], [ - "0x152Ab0b50b9704e898DadD3B24bb302F86F48B47", + "0xE4d0A5C11342F796eE665AC3Cea271A2F1B6F023", "Controller", "contracts/bridge/Controller.sol", - ["0x36d043cE023FD64abCa1160126fd3345dd3935A8"] + [ + "0xd6F3277a2EAb45c480E8aE871Df6423059b5ac3F" + ] ], [ - "0x36d043cE023FD64abCa1160126fd3345dd3935A8", + "0xd6F3277a2EAb45c480E8aE871Df6423059b5ac3F", "SuperToken", "contracts/token/SuperToken.sol", [ @@ -63,4 +67,4 @@ ] ] ] -} +} \ No newline at end of file diff --git a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json deleted file mode 100644 index b96aeec0..00000000 --- a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "80002": { - "SGHST": { - "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0x596A75D94d1Bf0b63af9F4a67Ce5Eeb427EeDdcE", - "connectors": { - "631571": { - "FAST": "0xA32137bfb57d2b6A9Fd2956Ba4B54741a6D54b58" - } - } - } - }, - "631571": { - "SGHST": { - "SuperToken": "0x0B08aCd19d96B5fAfb9dbDc4b935B58B7A50F16A", - "Controller": "0xA421Ed8a4E3cfbFbFd2F621b27bd3C27D71C8b97", - "connectors": { - "80002": { - "FAST": "0x19d62CFdB02Db59758E477264c218CCa0F10c6B5" - } - }, - "UnwrapHook": "0x7F8fB0743d4f9A82ea2541a2A4ee538ae863b218" - } - } -} diff --git a/deployments/supertoken/surge_socket_ghst_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_testnet_verification.json deleted file mode 100644 index be633043..00000000 --- a/deployments/supertoken/surge_socket_ghst_testnet_verification.json +++ /dev/null @@ -1,86 +0,0 @@ -{ - "80002": [ - [ - "0xA32137bfb57d2b6A9Fd2956Ba4B54741a6D54b58", - "ConnectorPlug", - "contracts/ConnectorPlug.sol", - [ - "0x596A75D94d1Bf0b63af9F4a67Ce5Eeb427EeDdcE", - "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", - 631571, - "0x0000000000000000000000000000000000000000000000000000000000000000" - ] - ], - [ - "0x2a9e7A2A9FeD4A83F59125cFf72761E467cEa419", - "LimitHook", - "contracts/hooks/LimitHook.sol", - [ - "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - "0x596A75D94d1Bf0b63af9F4a67Ce5Eeb427EeDdcE", - false - ] - ], - [ - "0x596A75D94d1Bf0b63af9F4a67Ce5Eeb427EeDdcE", - "Vault", - "contracts/bridge/Vault.sol", - ["0xF679b8D109b2d23931237Ce948a7D784727c0897"] - ] - ], - "631571": [ - [ - "0x7F8fB0743d4f9A82ea2541a2A4ee538ae863b218", - "UnwrapHook", - "contracts/hooks/UnwrapHook.sol", - [ - "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - "0xA421Ed8a4E3cfbFbFd2F621b27bd3C27D71C8b97", - "0x0B08aCd19d96B5fAfb9dbDc4b935B58B7A50F16A" - ] - ], - [ - "0x19d62CFdB02Db59758E477264c218CCa0F10c6B5", - "ConnectorPlug", - "contracts/ConnectorPlug.sol", - [ - "0xA421Ed8a4E3cfbFbFd2F621b27bd3C27D71C8b97", - "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", - 80002, - "0x0000000000000000000000000000000000000000000000000000000000000000" - ] - ], - [ - "0x1A9E2D17122B747871a1088FC38952c7dc5d8334", - "LimitHook", - "contracts/hooks/LimitHook.sol", - [ - "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - "0xA421Ed8a4E3cfbFbFd2F621b27bd3C27D71C8b97", - false - ] - ], - [ - "0xA421Ed8a4E3cfbFbFd2F621b27bd3C27D71C8b97", - "Controller", - "contracts/bridge/Controller.sol", - ["0x0B08aCd19d96B5fAfb9dbDc4b935B58B7A50F16A"] - ], - [ - "0x0B08aCd19d96B5fAfb9dbDc4b935B58B7A50F16A", - "SuperToken", - "contracts/token/SuperToken.sol", - [ - "Socket GHST", - "SGHST", - 18, - "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - { - "type": "BigNumber", - "hex": "0x00" - } - ] - ] - ] -} diff --git a/script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts b/script/constants/projectConstants/supertoken/socket_ghst_test2_testnet.ts similarity index 90% rename from script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts rename to script/constants/projectConstants/supertoken/socket_ghst_test2_testnet.ts index 1a6e779e..d35210d3 100644 --- a/script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts +++ b/script/constants/projectConstants/supertoken/socket_ghst_test2_testnet.ts @@ -1,3 +1,4 @@ + import { ChainSlug, DeploymentMode, @@ -13,7 +14,7 @@ export const pc: ProjectConstants = { vaultChains: [80002], controllerChains: [631571], hook: { - hookType: Hooks.UNWRAP_HOOK, + hookType: Hooks.UNWRAP_HOOK }, superTokenInfo: { name: "Aavegotchi Socket GHST", @@ -21,8 +22,8 @@ export const pc: ProjectConstants = { decimals: 18, owner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", initialSupplyOwner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - initialSupply: "0", - }, - }, - }, + initialSupply: "0" + } + } + } }; diff --git a/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts b/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts deleted file mode 100644 index 1a6e779e..00000000 --- a/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { - ChainSlug, - DeploymentMode, - IntegrationTypes, -} from "@socket.tech/dl-core"; -import { Hooks, ProjectConstants } from "../../../../src"; -import { NFTs, Tokens } from "../../../../src/enums"; - -// For testnet deployments, ChainSlug enum may not have some chains, therefore some keys will look like {421614:{}} instead of {[ChainSlug.ARBITRUM_SEPOLIA]:{}}. This wont affect the functionality of the project. -export const pc: ProjectConstants = { - [DeploymentMode.SURGE]: { - [Tokens.SGHST]: { - vaultChains: [80002], - controllerChains: [631571], - hook: { - hookType: Hooks.UNWRAP_HOOK, - }, - superTokenInfo: { - name: "Aavegotchi Socket GHST", - symbol: Tokens.SGHST, - decimals: 18, - owner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - initialSupplyOwner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - initialSupply: "0", - }, - }, - }, -}; diff --git a/script/deploy/deploy.ts b/script/deploy/deploy.ts index ff6cda40..3a96d925 100644 --- a/script/deploy/deploy.ts +++ b/script/deploy/deploy.ts @@ -294,8 +294,6 @@ export const deployControllerChainContracts = async ( if (isSuperToken()) { deployParams = await deploySuperToken(deployParams); - console.log("deploy params:", deployParams); - let token = deployParams.addresses[TokenContracts.SuperToken]; // if (deployParams.hookType == Hooks.UNWRAP_HOOK) { diff --git a/src/enums/existing-token-addresses.ts b/src/enums/existing-token-addresses.ts index 4907d043..4a68cbb9 100644 --- a/src/enums/existing-token-addresses.ts +++ b/src/enums/existing-token-addresses.ts @@ -1,104 +1,105 @@ -import { ChainSlug } from "@socket.tech/dl-core"; -import { Tokens } from "./tokens"; -export const ExistingTokenAddresses: { - [key in ChainSlug]?: { [key in Tokens]?: string }; -} = { - [ChainSlug.MAINNET]: { - [Tokens.USDC]: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - [Tokens.USDT]: "0xdac17f958d2ee523a2206206994597c13d831ec7", - [Tokens.WETH]: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - [Tokens.WBTC]: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - [Tokens.SNX]: "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", - [Tokens.WSTETH]: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", - [Tokens.DAI]: "0x6B175474E89094C44Da98b954EedeAC495271d0F", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.USDE]: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", - [Tokens.SUSDE]: "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", - [Tokens.SDEUSD]: "0x5c5b196abe0d54485975d1ec29617d42d9198326", - [Tokens.DEUSD]: "0x15700b564ca08d9439c58ca5053166e8317aa138", - }, - [ChainSlug.OPTIMISM]: { - [Tokens.USDC]: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", - [Tokens.USDCE]: "0x7f5c764cbc14f9669b88837ca1490cca17c31607", - [Tokens.USDT]: "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", - [Tokens.WETH]: "0x4200000000000000000000000000000000000006", - [Tokens.WBTC]: "0x68f180fcce6836688e9084f035309e29bf0a2095", - [Tokens.SNX]: "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", - [Tokens.WSTETH]: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", - [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", - }, - [ChainSlug.POLYGON_MAINNET]: { - [Tokens.USDC]: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", - [Tokens.USDCE]: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", - [Tokens.FUD]: "0x403e967b044d4be25170310157cb1a4bf10bdd0f", - [Tokens.FOMO]: "0x44a6e0be76e1d9620a7f76588e4509fe4fa8e8c8", - [Tokens.ALPHA]: "0x6a3E7C3c6EF65Ee26975b12293cA1AAD7e1dAeD2", - [Tokens.KEK]: "0x42E5E06EF5b90Fe15F853F59299Fc96259209c5C", - [Tokens.GLTR]: "0x3801C3B3B5c98F88a9c9005966AA96aa440B9Afc", - [Tokens.USDT]: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", - [Tokens.DAI]: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - [Tokens.WETH]: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", - [Tokens.WBTC]: "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6", - }, - [ChainSlug.BASE]: { - [Tokens.USDC]: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", - [Tokens.WETH]: "0x4200000000000000000000000000000000000006", - [Tokens.WSTETH]: "0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452", - [Tokens.DAI]: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", - }, - [ChainSlug.ARBITRUM]: { - [Tokens.USDC]: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", - [Tokens.USDCE]: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", - [Tokens.USDT]: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", - [Tokens.WETH]: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", - [Tokens.WBTC]: "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", - [Tokens.WSTETH]: "0x5979D7b546E38E414F7E9822514be443A4800529", - [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", - [Tokens.STIME]: "0x17AfF554423D2C40A1BBF51b443E9d43dd8AE1eb", - [Tokens.MAGIC]: "0x539bde0d7dbd336b79148aa742883198bbf60342", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", - }, - 80002: { - [Tokens.SGHST]: "0xF679b8D109b2d23931237Ce948a7D784727c0897", - }, - [ChainSlug.ARBITRUM_SEPOLIA]: { - [Tokens.USDC]: "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", - [Tokens.USDT]: "0x66DFb9987C36c4be232156e70B085f664367599A", - [Tokens.DAI]: "0x9a573B27D7298c6E2f4d2D4a41c37A0C8AF6accA", - [Tokens.WETH]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", - [Tokens.WBTC]: "0x1019958C2BD43B882a4e1349337a32Ef9563FC4D", - }, - [ChainSlug.SEPOLIA]: { - [Tokens.USDC]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - [Tokens.USDT]: "0xB4130e87A180b9448286B291331aEe8A9C154A3A", - [Tokens.DAI]: "0x255745E5C7Ae620b7f523F5E4A0Ead37660EC5d6", - [Tokens.WETH]: "0x771d1Ae208377453D478dF08BbC38034F72aC833", - [Tokens.WBTC]: "0x94BEff5da6201cB2C8F489196FD970B3DF5aA32A", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - }, - [ChainSlug.AEVO_TESTNET]: { - [Tokens.USDC]: "0x4D435C00E09034ec2113F63088CCD0be0a0fd06e", - }, - [ChainSlug.OPTIMISM_SEPOLIA]: { - [Tokens.USDC]: "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", - [Tokens.USDT]: "0x2d1abA6FaBAe80bF5C1C9EA433AAe9030E07CB22", - [Tokens.DAI]: "0xDC0258dc3dB980090E97EbF4f1FD9Cc3C5AD5894", - [Tokens.WETH]: "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.WBTC]: "0xfC5CC93d85861ac82d89fc2D3e56315540E9C8A7", - }, - [ChainSlug.REYA]: { - [Tokens.SUSDE]: "0x2339D41f410EA761F346a14c184385d15f7266c4", - [Tokens.DEUSD]: "0x809B99df4DDd6fA90F2CF305E2cDC310C6AD3C2c", - [Tokens.SDEUSD]: "0x4D3fEB76ab1C7eF40388Cd7a2066edacE1a2237D", - }, + import { ChainSlug } from "@socket.tech/dl-core"; + import { Tokens } from "./tokens"; + + export const ExistingTokenAddresses: { + [key in ChainSlug]?: { [key in Tokens]?: string }; + } = { + [ChainSlug.MAINNET]: { + [Tokens.USDC]: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + [Tokens.USDT]: "0xdac17f958d2ee523a2206206994597c13d831ec7", + [Tokens.WETH]: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + [Tokens.WBTC]: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + [Tokens.SNX]: "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", + [Tokens.WSTETH]: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + [Tokens.DAI]: "0x6B175474E89094C44Da98b954EedeAC495271d0F", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.USDE]: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", + [Tokens.SUSDE]: "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", + [Tokens.SDEUSD]: "0x5c5b196abe0d54485975d1ec29617d42d9198326", + [Tokens.DEUSD]: "0x15700b564ca08d9439c58ca5053166e8317aa138" +}, +[ChainSlug.OPTIMISM]: { + [Tokens.USDC]: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", + [Tokens.USDCE]: "0x7f5c764cbc14f9669b88837ca1490cca17c31607", + [Tokens.USDT]: "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", + [Tokens.WETH]: "0x4200000000000000000000000000000000000006", + [Tokens.WBTC]: "0x68f180fcce6836688e9084f035309e29bf0a2095", + [Tokens.SNX]: "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", + [Tokens.WSTETH]: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", + [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" +}, +[ChainSlug.POLYGON_MAINNET]: { + [Tokens.USDC]: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", + [Tokens.USDCE]: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + [Tokens.FUD]: "0x403e967b044d4be25170310157cb1a4bf10bdd0f", + [Tokens.FOMO]: "0x44a6e0be76e1d9620a7f76588e4509fe4fa8e8c8", + [Tokens.ALPHA]: "0x6a3E7C3c6EF65Ee26975b12293cA1AAD7e1dAeD2", + [Tokens.KEK]: "0x42E5E06EF5b90Fe15F853F59299Fc96259209c5C", + [Tokens.GLTR]: "0x3801C3B3B5c98F88a9c9005966AA96aa440B9Afc", + [Tokens.USDT]: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", + [Tokens.DAI]: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", + [Tokens.WETH]: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", + [Tokens.WBTC]: "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6" +}, +[ChainSlug.BASE]: { + [Tokens.USDC]: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", + [Tokens.WETH]: "0x4200000000000000000000000000000000000006", + [Tokens.WSTETH]: "0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452", + [Tokens.DAI]: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" +}, +[ChainSlug.ARBITRUM]: { + [Tokens.USDC]: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", + [Tokens.USDCE]: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", + [Tokens.USDT]: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", + [Tokens.WETH]: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", + [Tokens.WBTC]: "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", + [Tokens.WSTETH]: "0x5979D7b546E38E414F7E9822514be443A4800529", + [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", + [Tokens.STIME]: "0x17AfF554423D2C40A1BBF51b443E9d43dd8AE1eb", + [Tokens.MAGIC]: "0x539bde0d7dbd336b79148aa742883198bbf60342", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" +}, +80002: { + [Tokens.SGHST]: "0xF679b8D109b2d23931237Ce948a7D784727c0897" +}, +[ChainSlug.ARBITRUM_SEPOLIA]: { + [Tokens.USDC]: "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", + [Tokens.USDT]: "0x66DFb9987C36c4be232156e70B085f664367599A", + [Tokens.DAI]: "0x9a573B27D7298c6E2f4d2D4a41c37A0C8AF6accA", + [Tokens.WETH]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", + [Tokens.WBTC]: "0x1019958C2BD43B882a4e1349337a32Ef9563FC4D" +}, +[ChainSlug.SEPOLIA]: { + [Tokens.USDC]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", + [Tokens.USDT]: "0xB4130e87A180b9448286B291331aEe8A9C154A3A", + [Tokens.DAI]: "0x255745E5C7Ae620b7f523F5E4A0Ead37660EC5d6", + [Tokens.WETH]: "0x771d1Ae208377453D478dF08BbC38034F72aC833", + [Tokens.WBTC]: "0x94BEff5da6201cB2C8F489196FD970B3DF5aA32A", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" +}, +[ChainSlug.AEVO_TESTNET]: { + [Tokens.USDC]: "0x4D435C00E09034ec2113F63088CCD0be0a0fd06e" +}, +[ChainSlug.OPTIMISM_SEPOLIA]: { + [Tokens.USDC]: "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", + [Tokens.USDT]: "0x2d1abA6FaBAe80bF5C1C9EA433AAe9030E07CB22", + [Tokens.DAI]: "0xDC0258dc3dB980090E97EbF4f1FD9Cc3C5AD5894", + [Tokens.WETH]: "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.WBTC]: "0xfC5CC93d85861ac82d89fc2D3e56315540E9C8A7" +}, +[ChainSlug.REYA]: { + [Tokens.SUSDE]: "0x2339D41f410EA761F346a14c184385d15f7266c4", + [Tokens.DEUSD]: "0x809B99df4DDd6fA90F2CF305E2cDC310C6AD3C2c", + [Tokens.SDEUSD]: "0x4D3fEB76ab1C7eF40388Cd7a2066edacE1a2237D" +} }; diff --git a/src/enums/projectType.ts b/src/enums/projectType.ts index 72fe29c8..1b91304a 100644 --- a/src/enums/projectType.ts +++ b/src/enums/projectType.ts @@ -24,6 +24,5 @@ export const ProjectTypeMap: Record = { [Project.MAGIC_MAINNET]: ProjectType.SUPERTOKEN, [Project.POLTER_TESTNET]: ProjectType.SUPERBRIDGE, [Project.AAVEGOTCHI_BRIDGE_TESTNET]: ProjectType.SUPERBRIDGE, - [Project.SOCKET_GHST_TESTNET]: ProjectType.SUPERTOKEN, - [Project.SOCKET_GHST_FINAL_TESTNET]: ProjectType.SUPERTOKEN, + [Project.SOCKET_GHST_TEST2_TESTNET]: ProjectType.SUPERTOKEN, }; diff --git a/src/enums/projects.ts b/src/enums/projects.ts index e88d3424..6e568d45 100644 --- a/src/enums/projects.ts +++ b/src/enums/projects.ts @@ -21,6 +21,5 @@ export enum Project { MAGIC_MAINNET = "magic_mainnet", POLTER_TESTNET = "polter_testnet", AAVEGOTCHI_BRIDGE_TESTNET = "aavegotchi_bridge_testnet", - SOCKET_GHST_TESTNET = "socket_ghst_testnet", - SOCKET_GHST_FINAL_TESTNET = "socket_ghst_final_testnet", + SOCKET_GHST_TEST2_TESTNET = "socket_ghst_test2_testnet", } From 0b9bad38336283da6bde9ace54c5737f8666f337 Mon Sep 17 00:00:00 2001 From: Coderdan Date: Sat, 26 Oct 2024 19:52:36 +0800 Subject: [PATCH 31/57] chore: add addresses --- deployments/supertoken/surge_addresses.json | 2 +- ...e_socket_ghst_test2_testnet_addresses.json | 2 +- ...ocket_ghst_test2_testnet_verification.json | 10 +- .../supertoken/socket_ghst_test2_testnet.ts | 11 +- src/enums/existing-token-addresses.ts | 205 +++++++++--------- 5 files changed, 112 insertions(+), 118 deletions(-) diff --git a/deployments/supertoken/surge_addresses.json b/deployments/supertoken/surge_addresses.json index 145945db..0988afa2 100644 --- a/deployments/supertoken/surge_addresses.json +++ b/deployments/supertoken/surge_addresses.json @@ -24,4 +24,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/supertoken/surge_socket_ghst_test2_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_test2_testnet_addresses.json index f5cabe2a..5d7650f7 100644 --- a/deployments/supertoken/surge_socket_ghst_test2_testnet_addresses.json +++ b/deployments/supertoken/surge_socket_ghst_test2_testnet_addresses.json @@ -22,4 +22,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/supertoken/surge_socket_ghst_test2_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_test2_testnet_verification.json index 87cb61ef..ca14392e 100644 --- a/deployments/supertoken/surge_socket_ghst_test2_testnet_verification.json +++ b/deployments/supertoken/surge_socket_ghst_test2_testnet_verification.json @@ -15,9 +15,7 @@ "0x096c22daD52B2406511267c6f51f2a0467DF7831", "Vault", "contracts/bridge/Vault.sol", - [ - "0xF679b8D109b2d23931237Ce948a7D784727c0897" - ] + ["0xF679b8D109b2d23931237Ce948a7D784727c0897"] ] ], "631571": [ @@ -46,9 +44,7 @@ "0xE4d0A5C11342F796eE665AC3Cea271A2F1B6F023", "Controller", "contracts/bridge/Controller.sol", - [ - "0xd6F3277a2EAb45c480E8aE871Df6423059b5ac3F" - ] + ["0xd6F3277a2EAb45c480E8aE871Df6423059b5ac3F"] ], [ "0xd6F3277a2EAb45c480E8aE871Df6423059b5ac3F", @@ -67,4 +63,4 @@ ] ] ] -} \ No newline at end of file +} diff --git a/script/constants/projectConstants/supertoken/socket_ghst_test2_testnet.ts b/script/constants/projectConstants/supertoken/socket_ghst_test2_testnet.ts index d35210d3..1a6e779e 100644 --- a/script/constants/projectConstants/supertoken/socket_ghst_test2_testnet.ts +++ b/script/constants/projectConstants/supertoken/socket_ghst_test2_testnet.ts @@ -1,4 +1,3 @@ - import { ChainSlug, DeploymentMode, @@ -14,7 +13,7 @@ export const pc: ProjectConstants = { vaultChains: [80002], controllerChains: [631571], hook: { - hookType: Hooks.UNWRAP_HOOK + hookType: Hooks.UNWRAP_HOOK, }, superTokenInfo: { name: "Aavegotchi Socket GHST", @@ -22,8 +21,8 @@ export const pc: ProjectConstants = { decimals: 18, owner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", initialSupplyOwner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - initialSupply: "0" - } - } - } + initialSupply: "0", + }, + }, + }, }; diff --git a/src/enums/existing-token-addresses.ts b/src/enums/existing-token-addresses.ts index 4a68cbb9..4907d043 100644 --- a/src/enums/existing-token-addresses.ts +++ b/src/enums/existing-token-addresses.ts @@ -1,105 +1,104 @@ +import { ChainSlug } from "@socket.tech/dl-core"; +import { Tokens } from "./tokens"; - import { ChainSlug } from "@socket.tech/dl-core"; - import { Tokens } from "./tokens"; - - export const ExistingTokenAddresses: { - [key in ChainSlug]?: { [key in Tokens]?: string }; - } = { - [ChainSlug.MAINNET]: { - [Tokens.USDC]: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - [Tokens.USDT]: "0xdac17f958d2ee523a2206206994597c13d831ec7", - [Tokens.WETH]: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - [Tokens.WBTC]: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - [Tokens.SNX]: "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", - [Tokens.WSTETH]: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", - [Tokens.DAI]: "0x6B175474E89094C44Da98b954EedeAC495271d0F", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.USDE]: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", - [Tokens.SUSDE]: "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", - [Tokens.SDEUSD]: "0x5c5b196abe0d54485975d1ec29617d42d9198326", - [Tokens.DEUSD]: "0x15700b564ca08d9439c58ca5053166e8317aa138" -}, -[ChainSlug.OPTIMISM]: { - [Tokens.USDC]: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", - [Tokens.USDCE]: "0x7f5c764cbc14f9669b88837ca1490cca17c31607", - [Tokens.USDT]: "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", - [Tokens.WETH]: "0x4200000000000000000000000000000000000006", - [Tokens.WBTC]: "0x68f180fcce6836688e9084f035309e29bf0a2095", - [Tokens.SNX]: "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", - [Tokens.WSTETH]: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", - [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" -}, -[ChainSlug.POLYGON_MAINNET]: { - [Tokens.USDC]: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", - [Tokens.USDCE]: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", - [Tokens.FUD]: "0x403e967b044d4be25170310157cb1a4bf10bdd0f", - [Tokens.FOMO]: "0x44a6e0be76e1d9620a7f76588e4509fe4fa8e8c8", - [Tokens.ALPHA]: "0x6a3E7C3c6EF65Ee26975b12293cA1AAD7e1dAeD2", - [Tokens.KEK]: "0x42E5E06EF5b90Fe15F853F59299Fc96259209c5C", - [Tokens.GLTR]: "0x3801C3B3B5c98F88a9c9005966AA96aa440B9Afc", - [Tokens.USDT]: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", - [Tokens.DAI]: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - [Tokens.WETH]: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", - [Tokens.WBTC]: "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6" -}, -[ChainSlug.BASE]: { - [Tokens.USDC]: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", - [Tokens.WETH]: "0x4200000000000000000000000000000000000006", - [Tokens.WSTETH]: "0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452", - [Tokens.DAI]: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" -}, -[ChainSlug.ARBITRUM]: { - [Tokens.USDC]: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", - [Tokens.USDCE]: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", - [Tokens.USDT]: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", - [Tokens.WETH]: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", - [Tokens.WBTC]: "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", - [Tokens.WSTETH]: "0x5979D7b546E38E414F7E9822514be443A4800529", - [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", - [Tokens.STIME]: "0x17AfF554423D2C40A1BBF51b443E9d43dd8AE1eb", - [Tokens.MAGIC]: "0x539bde0d7dbd336b79148aa742883198bbf60342", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" -}, -80002: { - [Tokens.SGHST]: "0xF679b8D109b2d23931237Ce948a7D784727c0897" -}, -[ChainSlug.ARBITRUM_SEPOLIA]: { - [Tokens.USDC]: "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", - [Tokens.USDT]: "0x66DFb9987C36c4be232156e70B085f664367599A", - [Tokens.DAI]: "0x9a573B27D7298c6E2f4d2D4a41c37A0C8AF6accA", - [Tokens.WETH]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", - [Tokens.WBTC]: "0x1019958C2BD43B882a4e1349337a32Ef9563FC4D" -}, -[ChainSlug.SEPOLIA]: { - [Tokens.USDC]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - [Tokens.USDT]: "0xB4130e87A180b9448286B291331aEe8A9C154A3A", - [Tokens.DAI]: "0x255745E5C7Ae620b7f523F5E4A0Ead37660EC5d6", - [Tokens.WETH]: "0x771d1Ae208377453D478dF08BbC38034F72aC833", - [Tokens.WBTC]: "0x94BEff5da6201cB2C8F489196FD970B3DF5aA32A", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" -}, -[ChainSlug.AEVO_TESTNET]: { - [Tokens.USDC]: "0x4D435C00E09034ec2113F63088CCD0be0a0fd06e" -}, -[ChainSlug.OPTIMISM_SEPOLIA]: { - [Tokens.USDC]: "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", - [Tokens.USDT]: "0x2d1abA6FaBAe80bF5C1C9EA433AAe9030E07CB22", - [Tokens.DAI]: "0xDC0258dc3dB980090E97EbF4f1FD9Cc3C5AD5894", - [Tokens.WETH]: "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.WBTC]: "0xfC5CC93d85861ac82d89fc2D3e56315540E9C8A7" -}, -[ChainSlug.REYA]: { - [Tokens.SUSDE]: "0x2339D41f410EA761F346a14c184385d15f7266c4", - [Tokens.DEUSD]: "0x809B99df4DDd6fA90F2CF305E2cDC310C6AD3C2c", - [Tokens.SDEUSD]: "0x4D3fEB76ab1C7eF40388Cd7a2066edacE1a2237D" -} +export const ExistingTokenAddresses: { + [key in ChainSlug]?: { [key in Tokens]?: string }; +} = { + [ChainSlug.MAINNET]: { + [Tokens.USDC]: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + [Tokens.USDT]: "0xdac17f958d2ee523a2206206994597c13d831ec7", + [Tokens.WETH]: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + [Tokens.WBTC]: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + [Tokens.SNX]: "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", + [Tokens.WSTETH]: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + [Tokens.DAI]: "0x6B175474E89094C44Da98b954EedeAC495271d0F", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.USDE]: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", + [Tokens.SUSDE]: "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", + [Tokens.SDEUSD]: "0x5c5b196abe0d54485975d1ec29617d42d9198326", + [Tokens.DEUSD]: "0x15700b564ca08d9439c58ca5053166e8317aa138", + }, + [ChainSlug.OPTIMISM]: { + [Tokens.USDC]: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", + [Tokens.USDCE]: "0x7f5c764cbc14f9669b88837ca1490cca17c31607", + [Tokens.USDT]: "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", + [Tokens.WETH]: "0x4200000000000000000000000000000000000006", + [Tokens.WBTC]: "0x68f180fcce6836688e9084f035309e29bf0a2095", + [Tokens.SNX]: "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", + [Tokens.WSTETH]: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", + [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", + }, + [ChainSlug.POLYGON_MAINNET]: { + [Tokens.USDC]: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", + [Tokens.USDCE]: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + [Tokens.FUD]: "0x403e967b044d4be25170310157cb1a4bf10bdd0f", + [Tokens.FOMO]: "0x44a6e0be76e1d9620a7f76588e4509fe4fa8e8c8", + [Tokens.ALPHA]: "0x6a3E7C3c6EF65Ee26975b12293cA1AAD7e1dAeD2", + [Tokens.KEK]: "0x42E5E06EF5b90Fe15F853F59299Fc96259209c5C", + [Tokens.GLTR]: "0x3801C3B3B5c98F88a9c9005966AA96aa440B9Afc", + [Tokens.USDT]: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", + [Tokens.DAI]: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", + [Tokens.WETH]: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", + [Tokens.WBTC]: "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6", + }, + [ChainSlug.BASE]: { + [Tokens.USDC]: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", + [Tokens.WETH]: "0x4200000000000000000000000000000000000006", + [Tokens.WSTETH]: "0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452", + [Tokens.DAI]: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", + }, + [ChainSlug.ARBITRUM]: { + [Tokens.USDC]: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", + [Tokens.USDCE]: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", + [Tokens.USDT]: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", + [Tokens.WETH]: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", + [Tokens.WBTC]: "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", + [Tokens.WSTETH]: "0x5979D7b546E38E414F7E9822514be443A4800529", + [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", + [Tokens.STIME]: "0x17AfF554423D2C40A1BBF51b443E9d43dd8AE1eb", + [Tokens.MAGIC]: "0x539bde0d7dbd336b79148aa742883198bbf60342", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", + }, + 80002: { + [Tokens.SGHST]: "0xF679b8D109b2d23931237Ce948a7D784727c0897", + }, + [ChainSlug.ARBITRUM_SEPOLIA]: { + [Tokens.USDC]: "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", + [Tokens.USDT]: "0x66DFb9987C36c4be232156e70B085f664367599A", + [Tokens.DAI]: "0x9a573B27D7298c6E2f4d2D4a41c37A0C8AF6accA", + [Tokens.WETH]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", + [Tokens.WBTC]: "0x1019958C2BD43B882a4e1349337a32Ef9563FC4D", + }, + [ChainSlug.SEPOLIA]: { + [Tokens.USDC]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", + [Tokens.USDT]: "0xB4130e87A180b9448286B291331aEe8A9C154A3A", + [Tokens.DAI]: "0x255745E5C7Ae620b7f523F5E4A0Ead37660EC5d6", + [Tokens.WETH]: "0x771d1Ae208377453D478dF08BbC38034F72aC833", + [Tokens.WBTC]: "0x94BEff5da6201cB2C8F489196FD970B3DF5aA32A", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + }, + [ChainSlug.AEVO_TESTNET]: { + [Tokens.USDC]: "0x4D435C00E09034ec2113F63088CCD0be0a0fd06e", + }, + [ChainSlug.OPTIMISM_SEPOLIA]: { + [Tokens.USDC]: "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", + [Tokens.USDT]: "0x2d1abA6FaBAe80bF5C1C9EA433AAe9030E07CB22", + [Tokens.DAI]: "0xDC0258dc3dB980090E97EbF4f1FD9Cc3C5AD5894", + [Tokens.WETH]: "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.WBTC]: "0xfC5CC93d85861ac82d89fc2D3e56315540E9C8A7", + }, + [ChainSlug.REYA]: { + [Tokens.SUSDE]: "0x2339D41f410EA761F346a14c184385d15f7266c4", + [Tokens.DEUSD]: "0x809B99df4DDd6fA90F2CF305E2cDC310C6AD3C2c", + [Tokens.SDEUSD]: "0x4D3fEB76ab1C7eF40388Cd7a2066edacE1a2237D", + }, }; From 5b7303f3440de4636eb4ac0b5b19071d06db5d82 Mon Sep 17 00:00:00 2001 From: Coderdan Date: Sat, 26 Oct 2024 20:11:24 +0800 Subject: [PATCH 32/57] Update UnwrapHook.sol --- contracts/hooks/UnwrapHook.sol | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/contracts/hooks/UnwrapHook.sol b/contracts/hooks/UnwrapHook.sol index d50775b7..51e9e583 100644 --- a/contracts/hooks/UnwrapHook.sol +++ b/contracts/hooks/UnwrapHook.sol @@ -44,6 +44,7 @@ contract UnwrapHook is ReentrancyGuard, RescueBase, HookBase { SrcPreHookCallParams calldata params_ ) external + isVaultOrController returns (TransferInfo memory transferInfo, bytes memory postHookData) { return (params_.transferInfo, bytes("")); @@ -51,7 +52,7 @@ contract UnwrapHook is ReentrancyGuard, RescueBase, HookBase { function srcPostHookCall( SrcPostHookCallParams calldata params_ - ) external returns (TransferInfo memory transferInfo) { + ) external isVaultOrController returns (TransferInfo memory transferInfo) { return params_.transferInfo; } @@ -64,6 +65,7 @@ contract UnwrapHook is ReentrancyGuard, RescueBase, HookBase { DstPreHookCallParams calldata params_ ) external + isVaultOrController returns (bytes memory postHookData, TransferInfo memory transferInfo) { return (bytes(""), params_.transferInfo); From f132a34b07698ba423f756d70cb31b76f5719434 Mon Sep 17 00:00:00 2001 From: orionstardust Date: Sat, 26 Oct 2024 10:59:48 -0400 Subject: [PATCH 33/57] fix: unwrap hook and erc20 interface --- contracts/hooks/UnwrapHook.sol | 8 +-- deployments/supertoken/surge_addresses.json | 27 ++++++- .../surge_socket_ghst_testnet_addresses.json | 25 +++++++ ...urge_socket_ghst_testnet_verification.json | 70 +++++++++++++++++++ package.json | 2 +- .../supertoken/socket_ghst_testnet.ts | 29 ++++++++ src/enums/projectType.ts | 2 +- src/enums/projects.ts | 2 +- 8 files changed, 155 insertions(+), 10 deletions(-) create mode 100644 deployments/supertoken/surge_socket_ghst_testnet_addresses.json create mode 100644 deployments/supertoken/surge_socket_ghst_testnet_verification.json create mode 100644 script/constants/projectConstants/supertoken/socket_ghst_testnet.ts diff --git a/contracts/hooks/UnwrapHook.sol b/contracts/hooks/UnwrapHook.sol index 51e9e583..fd1db706 100644 --- a/contracts/hooks/UnwrapHook.sol +++ b/contracts/hooks/UnwrapHook.sol @@ -1,21 +1,18 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.13; -import "solmate/utils/ReentrancyGuard.sol"; import "../common/Errors.sol"; import "../common/Constants.sol"; -import "../interfaces/IHook.sol"; -import "../utils/RescueBase.sol"; import "./HookBase.sol"; import {IWrapERC20} from "../interfaces/IWrapERC20.sol"; /** - * @title Base contract for super token and vault + * @title Contract for super token and vault * @notice It contains relevant execution payload storages. * @dev This contract implements Socket's IPlug to enable message bridging and IMessageBridge * to support any type of message bridge. */ -contract UnwrapHook is ReentrancyGuard, RescueBase, HookBase { +contract UnwrapHook is HookBase { address public socketGhstAddress; /** @@ -27,7 +24,6 @@ contract UnwrapHook is ReentrancyGuard, RescueBase, HookBase { address socketGhstAddress_ ) HookBase(owner_, controller_) { socketGhstAddress = socketGhstAddress_; - _grantRole(RESCUE_ROLE, owner_); } // this should be run in Geist/Polter diff --git a/deployments/supertoken/surge_addresses.json b/deployments/supertoken/surge_addresses.json index 0988afa2..fd6400dd 100644 --- a/deployments/supertoken/surge_addresses.json +++ b/deployments/supertoken/surge_addresses.json @@ -23,5 +23,30 @@ } } } + }, + "socket_ghst_testnet": { + "80002": { + "SGHST": { + "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", + "Vault": "0x939FE77D4aF6108d2BDFf72cc4189C3C29252Ea2", + "connectors": { + "631571": { + "FAST": "0x48b7c506B67203bC42CB814D2b5dF1a62F5A7B6A" + } + } + } + }, + "631571": { + "SGHST": { + "SuperToken": "0x7dBE412Cf3FD3AB63A3576896A29aF35097415d0", + "Controller": "0xa325DF55D165F77d727798B974Fee596dECd5064", + "UnwrapHook": "0x173692C693ea88910ce2d0eA39F0a3c28ED9Ab74", + "connectors": { + "80002": { + "FAST": "0xce6Ca0303134958fEd7C5e2170360F9d000AF3c3" + } + } + } + } } -} +} \ No newline at end of file diff --git a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json new file mode 100644 index 00000000..8fb4d139 --- /dev/null +++ b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json @@ -0,0 +1,25 @@ +{ + "80002": { + "SGHST": { + "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", + "Vault": "0x939FE77D4aF6108d2BDFf72cc4189C3C29252Ea2", + "connectors": { + "631571": { + "FAST": "0x48b7c506B67203bC42CB814D2b5dF1a62F5A7B6A" + } + } + } + }, + "631571": { + "SGHST": { + "SuperToken": "0x7dBE412Cf3FD3AB63A3576896A29aF35097415d0", + "Controller": "0xa325DF55D165F77d727798B974Fee596dECd5064", + "UnwrapHook": "0x173692C693ea88910ce2d0eA39F0a3c28ED9Ab74", + "connectors": { + "80002": { + "FAST": "0xce6Ca0303134958fEd7C5e2170360F9d000AF3c3" + } + } + } + } +} \ No newline at end of file diff --git a/deployments/supertoken/surge_socket_ghst_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_testnet_verification.json new file mode 100644 index 00000000..28e056be --- /dev/null +++ b/deployments/supertoken/surge_socket_ghst_testnet_verification.json @@ -0,0 +1,70 @@ +{ + "80002": [ + [ + "0x48b7c506B67203bC42CB814D2b5dF1a62F5A7B6A", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0x939FE77D4aF6108d2BDFf72cc4189C3C29252Ea2", + "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", + 631571, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0x939FE77D4aF6108d2BDFf72cc4189C3C29252Ea2", + "Vault", + "contracts/bridge/Vault.sol", + [ + "0xF679b8D109b2d23931237Ce948a7D784727c0897" + ] + ] + ], + "631571": [ + [ + "0xce6Ca0303134958fEd7C5e2170360F9d000AF3c3", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0xa325DF55D165F77d727798B974Fee596dECd5064", + "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", + 80002, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0x173692C693ea88910ce2d0eA39F0a3c28ED9Ab74", + "UnwrapHook", + "contracts/hooks/UnwrapHook.sol", + [ + "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668", + "0xa325DF55D165F77d727798B974Fee596dECd5064", + "0x7dBE412Cf3FD3AB63A3576896A29aF35097415d0" + ] + ], + [ + "0xa325DF55D165F77d727798B974Fee596dECd5064", + "Controller", + "contracts/bridge/Controller.sol", + [ + "0x7dBE412Cf3FD3AB63A3576896A29aF35097415d0" + ] + ], + [ + "0x7dBE412Cf3FD3AB63A3576896A29aF35097415d0", + "SuperToken", + "contracts/token/SuperToken.sol", + [ + "Socket GHST", + "SGHST", + 18, + "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668", + "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668", + { + "type": "BigNumber", + "hex": "0x00" + } + ] + ] + ] +} \ No newline at end of file diff --git a/package.json b/package.json index fac34c38..27851b37 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "dependencies": { "@arbitrum/sdk": "^3.7.0", "@eth-optimism/sdk": "^3.3.2", - "@socket.tech/dl-core": "^2.28.0", + "@socket.tech/dl-core": "^2.31.0", "lodash": "^4.17.21", "prompts": "^2.4.2" } diff --git a/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts b/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts new file mode 100644 index 00000000..740661b6 --- /dev/null +++ b/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts @@ -0,0 +1,29 @@ + +import { + ChainSlug, + DeploymentMode, + IntegrationTypes, +} from "@socket.tech/dl-core"; +import { Hooks, ProjectConstants } from "../../../../src"; +import { NFTs, Tokens } from "../../../../src/enums"; + +// For testnet deployments, ChainSlug enum may not have some chains, therefore some keys will look like {421614:{}} instead of {[ChainSlug.ARBITRUM_SEPOLIA]:{}}. This wont affect the functionality of the project. +export const pc: ProjectConstants = { + [DeploymentMode.SURGE]: { + [Tokens.SGHST]: { + vaultChains: [80002], + controllerChains: [631571], + hook: { + hookType: Hooks.UNWRAP_HOOK + }, + superTokenInfo: { + name: "Socket GHST", + symbol: Tokens.SGHST, + decimals: 18, + owner: "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668", + initialSupplyOwner: "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668", + initialSupply: "0" + } + } + } +}; diff --git a/src/enums/projectType.ts b/src/enums/projectType.ts index 1b91304a..0566475a 100644 --- a/src/enums/projectType.ts +++ b/src/enums/projectType.ts @@ -24,5 +24,5 @@ export const ProjectTypeMap: Record = { [Project.MAGIC_MAINNET]: ProjectType.SUPERTOKEN, [Project.POLTER_TESTNET]: ProjectType.SUPERBRIDGE, [Project.AAVEGOTCHI_BRIDGE_TESTNET]: ProjectType.SUPERBRIDGE, - [Project.SOCKET_GHST_TEST2_TESTNET]: ProjectType.SUPERTOKEN, + [Project.SOCKET_GHST_TESTNET]: ProjectType.SUPERTOKEN, }; diff --git a/src/enums/projects.ts b/src/enums/projects.ts index 6e568d45..71d6de06 100644 --- a/src/enums/projects.ts +++ b/src/enums/projects.ts @@ -21,5 +21,5 @@ export enum Project { MAGIC_MAINNET = "magic_mainnet", POLTER_TESTNET = "polter_testnet", AAVEGOTCHI_BRIDGE_TESTNET = "aavegotchi_bridge_testnet", - SOCKET_GHST_TEST2_TESTNET = "socket_ghst_test2_testnet", + SOCKET_GHST_TESTNET = "socket_ghst_testnet", } From d2b0d1f201be83ceff135c50629082c318b56af9 Mon Sep 17 00:00:00 2001 From: Coderdan Date: Sun, 27 Oct 2024 13:28:49 +0800 Subject: [PATCH 34/57] chore: update scripts --- deployments/supertoken/surge_addresses.json | 25 +++ ...e_socket_ghst_final_testnet_addresses.json | 25 +++ ...ocket_ghst_final_testnet_verification.json | 70 ++++++ .../supertoken/socket_ghst_final_testnet.ts | 29 +++ script/helpers/hook/setHook.ts | 40 ++++ script/helpers/hook/verifyHook.ts | 23 ++ src/enums/existing-token-addresses.ts | 205 +++++++++--------- src/enums/projectType.ts | 1 + src/enums/projects.ts | 1 + 9 files changed, 317 insertions(+), 102 deletions(-) create mode 100644 deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json create mode 100644 deployments/supertoken/surge_socket_ghst_final_testnet_verification.json create mode 100644 script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts create mode 100644 script/helpers/hook/setHook.ts create mode 100644 script/helpers/hook/verifyHook.ts diff --git a/deployments/supertoken/surge_addresses.json b/deployments/supertoken/surge_addresses.json index fd6400dd..cf7ddbb4 100644 --- a/deployments/supertoken/surge_addresses.json +++ b/deployments/supertoken/surge_addresses.json @@ -48,5 +48,30 @@ } } } + }, + "socket_ghst_final_testnet": { + "80002": { + "SGHST": { + "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", + "Vault": "0xDF56Ba36f40536A919cb20295803321DCfCc1754", + "connectors": { + "631571": { + "FAST": "0x537a33E0991899DCB342ea4E4107Ef66880030aE" + } + } + } + }, + "631571": { + "SGHST": { + "SuperToken": "0x94168FF45b0e2E3c8D3e21Ee38f55301E0372366", + "Controller": "0x855127292feea3e1487f88dE3ACd8038de13B178", + "UnwrapHook": "0xbC4aF5e624bCf7D989349b15961Fb701528759Db", + "connectors": { + "80002": { + "FAST": "0x6188D1F465f7F5BaE538E0f08fE77C18769B5995" + } + } + } + } } } \ No newline at end of file diff --git a/deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json new file mode 100644 index 00000000..9bcb132e --- /dev/null +++ b/deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json @@ -0,0 +1,25 @@ +{ + "80002": { + "SGHST": { + "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", + "Vault": "0xDF56Ba36f40536A919cb20295803321DCfCc1754", + "connectors": { + "631571": { + "FAST": "0x537a33E0991899DCB342ea4E4107Ef66880030aE" + } + } + } + }, + "631571": { + "SGHST": { + "SuperToken": "0x94168FF45b0e2E3c8D3e21Ee38f55301E0372366", + "Controller": "0x855127292feea3e1487f88dE3ACd8038de13B178", + "UnwrapHook": "0xbC4aF5e624bCf7D989349b15961Fb701528759Db", + "connectors": { + "80002": { + "FAST": "0x6188D1F465f7F5BaE538E0f08fE77C18769B5995" + } + } + } + } +} \ No newline at end of file diff --git a/deployments/supertoken/surge_socket_ghst_final_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_final_testnet_verification.json new file mode 100644 index 00000000..7d0be27e --- /dev/null +++ b/deployments/supertoken/surge_socket_ghst_final_testnet_verification.json @@ -0,0 +1,70 @@ +{ + "80002": [ + [ + "0x537a33E0991899DCB342ea4E4107Ef66880030aE", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0xDF56Ba36f40536A919cb20295803321DCfCc1754", + "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", + 631571, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0xDF56Ba36f40536A919cb20295803321DCfCc1754", + "Vault", + "contracts/bridge/Vault.sol", + [ + "0xF679b8D109b2d23931237Ce948a7D784727c0897" + ] + ] + ], + "631571": [ + [ + "0x6188D1F465f7F5BaE538E0f08fE77C18769B5995", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0x855127292feea3e1487f88dE3ACd8038de13B178", + "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", + 80002, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0xbC4aF5e624bCf7D989349b15961Fb701528759Db", + "UnwrapHook", + "contracts/hooks/UnwrapHook.sol", + [ + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0x855127292feea3e1487f88dE3ACd8038de13B178", + "0x94168FF45b0e2E3c8D3e21Ee38f55301E0372366" + ] + ], + [ + "0x855127292feea3e1487f88dE3ACd8038de13B178", + "Controller", + "contracts/bridge/Controller.sol", + [ + "0x94168FF45b0e2E3c8D3e21Ee38f55301E0372366" + ] + ], + [ + "0x94168FF45b0e2E3c8D3e21Ee38f55301E0372366", + "SuperToken", + "contracts/token/SuperToken.sol", + [ + "Aavegotchi Socket GHST", + "SGHST", + 18, + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + { + "type": "BigNumber", + "hex": "0x00" + } + ] + ] + ] +} \ No newline at end of file diff --git a/script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts b/script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts new file mode 100644 index 00000000..d35210d3 --- /dev/null +++ b/script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts @@ -0,0 +1,29 @@ + +import { + ChainSlug, + DeploymentMode, + IntegrationTypes, +} from "@socket.tech/dl-core"; +import { Hooks, ProjectConstants } from "../../../../src"; +import { NFTs, Tokens } from "../../../../src/enums"; + +// For testnet deployments, ChainSlug enum may not have some chains, therefore some keys will look like {421614:{}} instead of {[ChainSlug.ARBITRUM_SEPOLIA]:{}}. This wont affect the functionality of the project. +export const pc: ProjectConstants = { + [DeploymentMode.SURGE]: { + [Tokens.SGHST]: { + vaultChains: [80002], + controllerChains: [631571], + hook: { + hookType: Hooks.UNWRAP_HOOK + }, + superTokenInfo: { + name: "Aavegotchi Socket GHST", + symbol: Tokens.SGHST, + decimals: 18, + owner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + initialSupplyOwner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + initialSupply: "0" + } + } + } +}; diff --git a/script/helpers/hook/setHook.ts b/script/helpers/hook/setHook.ts new file mode 100644 index 00000000..bd494a7d --- /dev/null +++ b/script/helpers/hook/setHook.ts @@ -0,0 +1,40 @@ +import { ethers } from "ethers"; + +export async function getHookAddress(chain: string): Promise { + const address = "0x855127292feea3e1487f88dE3ACd8038de13B178"; + + const hookAddress = "0xbC4aF5e624bCf7D989349b15961Fb701528759Db"; + + const provider = new ethers.providers.JsonRpcProvider( + process.env.POLTER_TESTNET_RPC + ); + + const signer = new ethers.Wallet(process.env.OWNER_SIGNER_KEY, provider); + + const bridgeABI = [ + "function hook__() public view returns (address)", + "function updateHook(address hook_, bool approve_) external", + ]; + + const bridgeContract = new ethers.Contract(address, bridgeABI, signer); + + try { + const hookAddressBefore = await bridgeContract.hook__(); + console.log("hookAddressBefore", hookAddressBefore); + + console.log("updating hook"); + const tx = await bridgeContract.updateHook(hookAddress, true); + console.log("tx", tx.hash); + await tx.wait(); + + const hookAddressAfter = await bridgeContract.hook__(); + console.log("hookAddressAfter", hookAddressAfter); + + return hookAddressAfter; + } catch (error) { + console.error("Error fetching hook address:", error); + throw error; + } +} + +getHookAddress("80002"); diff --git a/script/helpers/hook/verifyHook.ts b/script/helpers/hook/verifyHook.ts new file mode 100644 index 00000000..943d56ca --- /dev/null +++ b/script/helpers/hook/verifyHook.ts @@ -0,0 +1,23 @@ +import { ethers } from "ethers"; + +export async function getHookAddress(chain: string): Promise { + const address = "0x855127292feea3e1487f88dE3ACd8038de13B178"; + + const provider = new ethers.providers.JsonRpcProvider( + process.env.POLTER_TESTNET_RPC + ); + const bridgeABI = ["function hook__() public view returns (address)"]; + + const bridgeContract = new ethers.Contract(address, bridgeABI, provider); + + try { + const hookAddress = await bridgeContract.hook__(); + console.log("hookAddress", hookAddress); + return hookAddress; + } catch (error) { + console.error("Error fetching hook address:", error); + throw error; + } +} + +getHookAddress("80002"); diff --git a/src/enums/existing-token-addresses.ts b/src/enums/existing-token-addresses.ts index 4907d043..4a68cbb9 100644 --- a/src/enums/existing-token-addresses.ts +++ b/src/enums/existing-token-addresses.ts @@ -1,104 +1,105 @@ -import { ChainSlug } from "@socket.tech/dl-core"; -import { Tokens } from "./tokens"; -export const ExistingTokenAddresses: { - [key in ChainSlug]?: { [key in Tokens]?: string }; -} = { - [ChainSlug.MAINNET]: { - [Tokens.USDC]: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - [Tokens.USDT]: "0xdac17f958d2ee523a2206206994597c13d831ec7", - [Tokens.WETH]: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - [Tokens.WBTC]: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - [Tokens.SNX]: "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", - [Tokens.WSTETH]: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", - [Tokens.DAI]: "0x6B175474E89094C44Da98b954EedeAC495271d0F", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.USDE]: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", - [Tokens.SUSDE]: "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", - [Tokens.SDEUSD]: "0x5c5b196abe0d54485975d1ec29617d42d9198326", - [Tokens.DEUSD]: "0x15700b564ca08d9439c58ca5053166e8317aa138", - }, - [ChainSlug.OPTIMISM]: { - [Tokens.USDC]: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", - [Tokens.USDCE]: "0x7f5c764cbc14f9669b88837ca1490cca17c31607", - [Tokens.USDT]: "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", - [Tokens.WETH]: "0x4200000000000000000000000000000000000006", - [Tokens.WBTC]: "0x68f180fcce6836688e9084f035309e29bf0a2095", - [Tokens.SNX]: "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", - [Tokens.WSTETH]: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", - [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", - }, - [ChainSlug.POLYGON_MAINNET]: { - [Tokens.USDC]: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", - [Tokens.USDCE]: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", - [Tokens.FUD]: "0x403e967b044d4be25170310157cb1a4bf10bdd0f", - [Tokens.FOMO]: "0x44a6e0be76e1d9620a7f76588e4509fe4fa8e8c8", - [Tokens.ALPHA]: "0x6a3E7C3c6EF65Ee26975b12293cA1AAD7e1dAeD2", - [Tokens.KEK]: "0x42E5E06EF5b90Fe15F853F59299Fc96259209c5C", - [Tokens.GLTR]: "0x3801C3B3B5c98F88a9c9005966AA96aa440B9Afc", - [Tokens.USDT]: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", - [Tokens.DAI]: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - [Tokens.WETH]: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", - [Tokens.WBTC]: "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6", - }, - [ChainSlug.BASE]: { - [Tokens.USDC]: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", - [Tokens.WETH]: "0x4200000000000000000000000000000000000006", - [Tokens.WSTETH]: "0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452", - [Tokens.DAI]: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", - }, - [ChainSlug.ARBITRUM]: { - [Tokens.USDC]: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", - [Tokens.USDCE]: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", - [Tokens.USDT]: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", - [Tokens.WETH]: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", - [Tokens.WBTC]: "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", - [Tokens.WSTETH]: "0x5979D7b546E38E414F7E9822514be443A4800529", - [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", - [Tokens.STIME]: "0x17AfF554423D2C40A1BBF51b443E9d43dd8AE1eb", - [Tokens.MAGIC]: "0x539bde0d7dbd336b79148aa742883198bbf60342", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", - }, - 80002: { - [Tokens.SGHST]: "0xF679b8D109b2d23931237Ce948a7D784727c0897", - }, - [ChainSlug.ARBITRUM_SEPOLIA]: { - [Tokens.USDC]: "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", - [Tokens.USDT]: "0x66DFb9987C36c4be232156e70B085f664367599A", - [Tokens.DAI]: "0x9a573B27D7298c6E2f4d2D4a41c37A0C8AF6accA", - [Tokens.WETH]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", - [Tokens.WBTC]: "0x1019958C2BD43B882a4e1349337a32Ef9563FC4D", - }, - [ChainSlug.SEPOLIA]: { - [Tokens.USDC]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - [Tokens.USDT]: "0xB4130e87A180b9448286B291331aEe8A9C154A3A", - [Tokens.DAI]: "0x255745E5C7Ae620b7f523F5E4A0Ead37660EC5d6", - [Tokens.WETH]: "0x771d1Ae208377453D478dF08BbC38034F72aC833", - [Tokens.WBTC]: "0x94BEff5da6201cB2C8F489196FD970B3DF5aA32A", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - }, - [ChainSlug.AEVO_TESTNET]: { - [Tokens.USDC]: "0x4D435C00E09034ec2113F63088CCD0be0a0fd06e", - }, - [ChainSlug.OPTIMISM_SEPOLIA]: { - [Tokens.USDC]: "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", - [Tokens.USDT]: "0x2d1abA6FaBAe80bF5C1C9EA433AAe9030E07CB22", - [Tokens.DAI]: "0xDC0258dc3dB980090E97EbF4f1FD9Cc3C5AD5894", - [Tokens.WETH]: "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.WBTC]: "0xfC5CC93d85861ac82d89fc2D3e56315540E9C8A7", - }, - [ChainSlug.REYA]: { - [Tokens.SUSDE]: "0x2339D41f410EA761F346a14c184385d15f7266c4", - [Tokens.DEUSD]: "0x809B99df4DDd6fA90F2CF305E2cDC310C6AD3C2c", - [Tokens.SDEUSD]: "0x4D3fEB76ab1C7eF40388Cd7a2066edacE1a2237D", - }, + import { ChainSlug } from "@socket.tech/dl-core"; + import { Tokens } from "./tokens"; + + export const ExistingTokenAddresses: { + [key in ChainSlug]?: { [key in Tokens]?: string }; + } = { + [ChainSlug.MAINNET]: { + [Tokens.USDC]: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + [Tokens.USDT]: "0xdac17f958d2ee523a2206206994597c13d831ec7", + [Tokens.WETH]: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + [Tokens.WBTC]: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + [Tokens.SNX]: "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", + [Tokens.WSTETH]: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + [Tokens.DAI]: "0x6B175474E89094C44Da98b954EedeAC495271d0F", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.USDE]: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", + [Tokens.SUSDE]: "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", + [Tokens.SDEUSD]: "0x5c5b196abe0d54485975d1ec29617d42d9198326", + [Tokens.DEUSD]: "0x15700b564ca08d9439c58ca5053166e8317aa138" +}, +[ChainSlug.OPTIMISM]: { + [Tokens.USDC]: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", + [Tokens.USDCE]: "0x7f5c764cbc14f9669b88837ca1490cca17c31607", + [Tokens.USDT]: "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", + [Tokens.WETH]: "0x4200000000000000000000000000000000000006", + [Tokens.WBTC]: "0x68f180fcce6836688e9084f035309e29bf0a2095", + [Tokens.SNX]: "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", + [Tokens.WSTETH]: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", + [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" +}, +[ChainSlug.POLYGON_MAINNET]: { + [Tokens.USDC]: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", + [Tokens.USDCE]: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + [Tokens.FUD]: "0x403e967b044d4be25170310157cb1a4bf10bdd0f", + [Tokens.FOMO]: "0x44a6e0be76e1d9620a7f76588e4509fe4fa8e8c8", + [Tokens.ALPHA]: "0x6a3E7C3c6EF65Ee26975b12293cA1AAD7e1dAeD2", + [Tokens.KEK]: "0x42E5E06EF5b90Fe15F853F59299Fc96259209c5C", + [Tokens.GLTR]: "0x3801C3B3B5c98F88a9c9005966AA96aa440B9Afc", + [Tokens.USDT]: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", + [Tokens.DAI]: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", + [Tokens.WETH]: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", + [Tokens.WBTC]: "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6" +}, +[ChainSlug.BASE]: { + [Tokens.USDC]: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", + [Tokens.WETH]: "0x4200000000000000000000000000000000000006", + [Tokens.WSTETH]: "0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452", + [Tokens.DAI]: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" +}, +[ChainSlug.ARBITRUM]: { + [Tokens.USDC]: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", + [Tokens.USDCE]: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", + [Tokens.USDT]: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", + [Tokens.WETH]: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", + [Tokens.WBTC]: "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", + [Tokens.WSTETH]: "0x5979D7b546E38E414F7E9822514be443A4800529", + [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", + [Tokens.STIME]: "0x17AfF554423D2C40A1BBF51b443E9d43dd8AE1eb", + [Tokens.MAGIC]: "0x539bde0d7dbd336b79148aa742883198bbf60342", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" +}, +80002: { + [Tokens.SGHST]: "0xF679b8D109b2d23931237Ce948a7D784727c0897" +}, +[ChainSlug.ARBITRUM_SEPOLIA]: { + [Tokens.USDC]: "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", + [Tokens.USDT]: "0x66DFb9987C36c4be232156e70B085f664367599A", + [Tokens.DAI]: "0x9a573B27D7298c6E2f4d2D4a41c37A0C8AF6accA", + [Tokens.WETH]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", + [Tokens.WBTC]: "0x1019958C2BD43B882a4e1349337a32Ef9563FC4D" +}, +[ChainSlug.SEPOLIA]: { + [Tokens.USDC]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", + [Tokens.USDT]: "0xB4130e87A180b9448286B291331aEe8A9C154A3A", + [Tokens.DAI]: "0x255745E5C7Ae620b7f523F5E4A0Ead37660EC5d6", + [Tokens.WETH]: "0x771d1Ae208377453D478dF08BbC38034F72aC833", + [Tokens.WBTC]: "0x94BEff5da6201cB2C8F489196FD970B3DF5aA32A", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" +}, +[ChainSlug.AEVO_TESTNET]: { + [Tokens.USDC]: "0x4D435C00E09034ec2113F63088CCD0be0a0fd06e" +}, +[ChainSlug.OPTIMISM_SEPOLIA]: { + [Tokens.USDC]: "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", + [Tokens.USDT]: "0x2d1abA6FaBAe80bF5C1C9EA433AAe9030E07CB22", + [Tokens.DAI]: "0xDC0258dc3dB980090E97EbF4f1FD9Cc3C5AD5894", + [Tokens.WETH]: "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.WBTC]: "0xfC5CC93d85861ac82d89fc2D3e56315540E9C8A7" +}, +[ChainSlug.REYA]: { + [Tokens.SUSDE]: "0x2339D41f410EA761F346a14c184385d15f7266c4", + [Tokens.DEUSD]: "0x809B99df4DDd6fA90F2CF305E2cDC310C6AD3C2c", + [Tokens.SDEUSD]: "0x4D3fEB76ab1C7eF40388Cd7a2066edacE1a2237D" +} }; diff --git a/src/enums/projectType.ts b/src/enums/projectType.ts index 0566475a..72fe29c8 100644 --- a/src/enums/projectType.ts +++ b/src/enums/projectType.ts @@ -25,4 +25,5 @@ export const ProjectTypeMap: Record = { [Project.POLTER_TESTNET]: ProjectType.SUPERBRIDGE, [Project.AAVEGOTCHI_BRIDGE_TESTNET]: ProjectType.SUPERBRIDGE, [Project.SOCKET_GHST_TESTNET]: ProjectType.SUPERTOKEN, + [Project.SOCKET_GHST_FINAL_TESTNET]: ProjectType.SUPERTOKEN, }; diff --git a/src/enums/projects.ts b/src/enums/projects.ts index 71d6de06..e88d3424 100644 --- a/src/enums/projects.ts +++ b/src/enums/projects.ts @@ -22,4 +22,5 @@ export enum Project { POLTER_TESTNET = "polter_testnet", AAVEGOTCHI_BRIDGE_TESTNET = "aavegotchi_bridge_testnet", SOCKET_GHST_TESTNET = "socket_ghst_testnet", + SOCKET_GHST_FINAL_TESTNET = "socket_ghst_final_testnet", } From eeceb25ea9739410bf9793f3485c57cebec76819 Mon Sep 17 00:00:00 2001 From: Coderdan Date: Sun, 27 Oct 2024 13:29:19 +0800 Subject: [PATCH 35/57] chore: update addresses --- deployments/supertoken/surge_addresses.json | 2 +- ...e_socket_ghst_final_testnet_addresses.json | 2 +- ...ocket_ghst_final_testnet_verification.json | 10 +- .../surge_socket_ghst_testnet_addresses.json | 2 +- ...urge_socket_ghst_testnet_verification.json | 10 +- .../supertoken/socket_ghst_final_testnet.ts | 11 +- .../supertoken/socket_ghst_testnet.ts | 11 +- src/enums/existing-token-addresses.ts | 205 +++++++++--------- 8 files changed, 121 insertions(+), 132 deletions(-) diff --git a/deployments/supertoken/surge_addresses.json b/deployments/supertoken/surge_addresses.json index cf7ddbb4..1bf47c29 100644 --- a/deployments/supertoken/surge_addresses.json +++ b/deployments/supertoken/surge_addresses.json @@ -74,4 +74,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json index 9bcb132e..d3456bd2 100644 --- a/deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json +++ b/deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json @@ -22,4 +22,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/supertoken/surge_socket_ghst_final_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_final_testnet_verification.json index 7d0be27e..74f5b1b2 100644 --- a/deployments/supertoken/surge_socket_ghst_final_testnet_verification.json +++ b/deployments/supertoken/surge_socket_ghst_final_testnet_verification.json @@ -15,9 +15,7 @@ "0xDF56Ba36f40536A919cb20295803321DCfCc1754", "Vault", "contracts/bridge/Vault.sol", - [ - "0xF679b8D109b2d23931237Ce948a7D784727c0897" - ] + ["0xF679b8D109b2d23931237Ce948a7D784727c0897"] ] ], "631571": [ @@ -46,9 +44,7 @@ "0x855127292feea3e1487f88dE3ACd8038de13B178", "Controller", "contracts/bridge/Controller.sol", - [ - "0x94168FF45b0e2E3c8D3e21Ee38f55301E0372366" - ] + ["0x94168FF45b0e2E3c8D3e21Ee38f55301E0372366"] ], [ "0x94168FF45b0e2E3c8D3e21Ee38f55301E0372366", @@ -67,4 +63,4 @@ ] ] ] -} \ No newline at end of file +} diff --git a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json index 8fb4d139..0ba2b80f 100644 --- a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json +++ b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json @@ -22,4 +22,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/supertoken/surge_socket_ghst_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_testnet_verification.json index 28e056be..450aa0ff 100644 --- a/deployments/supertoken/surge_socket_ghst_testnet_verification.json +++ b/deployments/supertoken/surge_socket_ghst_testnet_verification.json @@ -15,9 +15,7 @@ "0x939FE77D4aF6108d2BDFf72cc4189C3C29252Ea2", "Vault", "contracts/bridge/Vault.sol", - [ - "0xF679b8D109b2d23931237Ce948a7D784727c0897" - ] + ["0xF679b8D109b2d23931237Ce948a7D784727c0897"] ] ], "631571": [ @@ -46,9 +44,7 @@ "0xa325DF55D165F77d727798B974Fee596dECd5064", "Controller", "contracts/bridge/Controller.sol", - [ - "0x7dBE412Cf3FD3AB63A3576896A29aF35097415d0" - ] + ["0x7dBE412Cf3FD3AB63A3576896A29aF35097415d0"] ], [ "0x7dBE412Cf3FD3AB63A3576896A29aF35097415d0", @@ -67,4 +63,4 @@ ] ] ] -} \ No newline at end of file +} diff --git a/script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts b/script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts index d35210d3..1a6e779e 100644 --- a/script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts +++ b/script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts @@ -1,4 +1,3 @@ - import { ChainSlug, DeploymentMode, @@ -14,7 +13,7 @@ export const pc: ProjectConstants = { vaultChains: [80002], controllerChains: [631571], hook: { - hookType: Hooks.UNWRAP_HOOK + hookType: Hooks.UNWRAP_HOOK, }, superTokenInfo: { name: "Aavegotchi Socket GHST", @@ -22,8 +21,8 @@ export const pc: ProjectConstants = { decimals: 18, owner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", initialSupplyOwner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - initialSupply: "0" - } - } - } + initialSupply: "0", + }, + }, + }, }; diff --git a/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts b/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts index 740661b6..50cf0740 100644 --- a/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts +++ b/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts @@ -1,4 +1,3 @@ - import { ChainSlug, DeploymentMode, @@ -14,7 +13,7 @@ export const pc: ProjectConstants = { vaultChains: [80002], controllerChains: [631571], hook: { - hookType: Hooks.UNWRAP_HOOK + hookType: Hooks.UNWRAP_HOOK, }, superTokenInfo: { name: "Socket GHST", @@ -22,8 +21,8 @@ export const pc: ProjectConstants = { decimals: 18, owner: "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668", initialSupplyOwner: "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668", - initialSupply: "0" - } - } - } + initialSupply: "0", + }, + }, + }, }; diff --git a/src/enums/existing-token-addresses.ts b/src/enums/existing-token-addresses.ts index 4a68cbb9..4907d043 100644 --- a/src/enums/existing-token-addresses.ts +++ b/src/enums/existing-token-addresses.ts @@ -1,105 +1,104 @@ +import { ChainSlug } from "@socket.tech/dl-core"; +import { Tokens } from "./tokens"; - import { ChainSlug } from "@socket.tech/dl-core"; - import { Tokens } from "./tokens"; - - export const ExistingTokenAddresses: { - [key in ChainSlug]?: { [key in Tokens]?: string }; - } = { - [ChainSlug.MAINNET]: { - [Tokens.USDC]: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - [Tokens.USDT]: "0xdac17f958d2ee523a2206206994597c13d831ec7", - [Tokens.WETH]: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - [Tokens.WBTC]: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - [Tokens.SNX]: "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", - [Tokens.WSTETH]: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", - [Tokens.DAI]: "0x6B175474E89094C44Da98b954EedeAC495271d0F", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.USDE]: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", - [Tokens.SUSDE]: "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", - [Tokens.SDEUSD]: "0x5c5b196abe0d54485975d1ec29617d42d9198326", - [Tokens.DEUSD]: "0x15700b564ca08d9439c58ca5053166e8317aa138" -}, -[ChainSlug.OPTIMISM]: { - [Tokens.USDC]: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", - [Tokens.USDCE]: "0x7f5c764cbc14f9669b88837ca1490cca17c31607", - [Tokens.USDT]: "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", - [Tokens.WETH]: "0x4200000000000000000000000000000000000006", - [Tokens.WBTC]: "0x68f180fcce6836688e9084f035309e29bf0a2095", - [Tokens.SNX]: "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", - [Tokens.WSTETH]: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", - [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" -}, -[ChainSlug.POLYGON_MAINNET]: { - [Tokens.USDC]: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", - [Tokens.USDCE]: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", - [Tokens.FUD]: "0x403e967b044d4be25170310157cb1a4bf10bdd0f", - [Tokens.FOMO]: "0x44a6e0be76e1d9620a7f76588e4509fe4fa8e8c8", - [Tokens.ALPHA]: "0x6a3E7C3c6EF65Ee26975b12293cA1AAD7e1dAeD2", - [Tokens.KEK]: "0x42E5E06EF5b90Fe15F853F59299Fc96259209c5C", - [Tokens.GLTR]: "0x3801C3B3B5c98F88a9c9005966AA96aa440B9Afc", - [Tokens.USDT]: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", - [Tokens.DAI]: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - [Tokens.WETH]: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", - [Tokens.WBTC]: "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6" -}, -[ChainSlug.BASE]: { - [Tokens.USDC]: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", - [Tokens.WETH]: "0x4200000000000000000000000000000000000006", - [Tokens.WSTETH]: "0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452", - [Tokens.DAI]: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" -}, -[ChainSlug.ARBITRUM]: { - [Tokens.USDC]: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", - [Tokens.USDCE]: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", - [Tokens.USDT]: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", - [Tokens.WETH]: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", - [Tokens.WBTC]: "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", - [Tokens.WSTETH]: "0x5979D7b546E38E414F7E9822514be443A4800529", - [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", - [Tokens.STIME]: "0x17AfF554423D2C40A1BBF51b443E9d43dd8AE1eb", - [Tokens.MAGIC]: "0x539bde0d7dbd336b79148aa742883198bbf60342", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" -}, -80002: { - [Tokens.SGHST]: "0xF679b8D109b2d23931237Ce948a7D784727c0897" -}, -[ChainSlug.ARBITRUM_SEPOLIA]: { - [Tokens.USDC]: "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", - [Tokens.USDT]: "0x66DFb9987C36c4be232156e70B085f664367599A", - [Tokens.DAI]: "0x9a573B27D7298c6E2f4d2D4a41c37A0C8AF6accA", - [Tokens.WETH]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", - [Tokens.WBTC]: "0x1019958C2BD43B882a4e1349337a32Ef9563FC4D" -}, -[ChainSlug.SEPOLIA]: { - [Tokens.USDC]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - [Tokens.USDT]: "0xB4130e87A180b9448286B291331aEe8A9C154A3A", - [Tokens.DAI]: "0x255745E5C7Ae620b7f523F5E4A0Ead37660EC5d6", - [Tokens.WETH]: "0x771d1Ae208377453D478dF08BbC38034F72aC833", - [Tokens.WBTC]: "0x94BEff5da6201cB2C8F489196FD970B3DF5aA32A", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" -}, -[ChainSlug.AEVO_TESTNET]: { - [Tokens.USDC]: "0x4D435C00E09034ec2113F63088CCD0be0a0fd06e" -}, -[ChainSlug.OPTIMISM_SEPOLIA]: { - [Tokens.USDC]: "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", - [Tokens.USDT]: "0x2d1abA6FaBAe80bF5C1C9EA433AAe9030E07CB22", - [Tokens.DAI]: "0xDC0258dc3dB980090E97EbF4f1FD9Cc3C5AD5894", - [Tokens.WETH]: "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.WBTC]: "0xfC5CC93d85861ac82d89fc2D3e56315540E9C8A7" -}, -[ChainSlug.REYA]: { - [Tokens.SUSDE]: "0x2339D41f410EA761F346a14c184385d15f7266c4", - [Tokens.DEUSD]: "0x809B99df4DDd6fA90F2CF305E2cDC310C6AD3C2c", - [Tokens.SDEUSD]: "0x4D3fEB76ab1C7eF40388Cd7a2066edacE1a2237D" -} +export const ExistingTokenAddresses: { + [key in ChainSlug]?: { [key in Tokens]?: string }; +} = { + [ChainSlug.MAINNET]: { + [Tokens.USDC]: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + [Tokens.USDT]: "0xdac17f958d2ee523a2206206994597c13d831ec7", + [Tokens.WETH]: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + [Tokens.WBTC]: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + [Tokens.SNX]: "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", + [Tokens.WSTETH]: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + [Tokens.DAI]: "0x6B175474E89094C44Da98b954EedeAC495271d0F", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.USDE]: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", + [Tokens.SUSDE]: "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", + [Tokens.SDEUSD]: "0x5c5b196abe0d54485975d1ec29617d42d9198326", + [Tokens.DEUSD]: "0x15700b564ca08d9439c58ca5053166e8317aa138", + }, + [ChainSlug.OPTIMISM]: { + [Tokens.USDC]: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", + [Tokens.USDCE]: "0x7f5c764cbc14f9669b88837ca1490cca17c31607", + [Tokens.USDT]: "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", + [Tokens.WETH]: "0x4200000000000000000000000000000000000006", + [Tokens.WBTC]: "0x68f180fcce6836688e9084f035309e29bf0a2095", + [Tokens.SNX]: "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", + [Tokens.WSTETH]: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", + [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", + }, + [ChainSlug.POLYGON_MAINNET]: { + [Tokens.USDC]: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", + [Tokens.USDCE]: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + [Tokens.FUD]: "0x403e967b044d4be25170310157cb1a4bf10bdd0f", + [Tokens.FOMO]: "0x44a6e0be76e1d9620a7f76588e4509fe4fa8e8c8", + [Tokens.ALPHA]: "0x6a3E7C3c6EF65Ee26975b12293cA1AAD7e1dAeD2", + [Tokens.KEK]: "0x42E5E06EF5b90Fe15F853F59299Fc96259209c5C", + [Tokens.GLTR]: "0x3801C3B3B5c98F88a9c9005966AA96aa440B9Afc", + [Tokens.USDT]: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", + [Tokens.DAI]: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", + [Tokens.WETH]: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", + [Tokens.WBTC]: "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6", + }, + [ChainSlug.BASE]: { + [Tokens.USDC]: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", + [Tokens.WETH]: "0x4200000000000000000000000000000000000006", + [Tokens.WSTETH]: "0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452", + [Tokens.DAI]: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", + }, + [ChainSlug.ARBITRUM]: { + [Tokens.USDC]: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", + [Tokens.USDCE]: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", + [Tokens.USDT]: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", + [Tokens.WETH]: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", + [Tokens.WBTC]: "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", + [Tokens.WSTETH]: "0x5979D7b546E38E414F7E9822514be443A4800529", + [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", + [Tokens.STIME]: "0x17AfF554423D2C40A1BBF51b443E9d43dd8AE1eb", + [Tokens.MAGIC]: "0x539bde0d7dbd336b79148aa742883198bbf60342", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", + }, + 80002: { + [Tokens.SGHST]: "0xF679b8D109b2d23931237Ce948a7D784727c0897", + }, + [ChainSlug.ARBITRUM_SEPOLIA]: { + [Tokens.USDC]: "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", + [Tokens.USDT]: "0x66DFb9987C36c4be232156e70B085f664367599A", + [Tokens.DAI]: "0x9a573B27D7298c6E2f4d2D4a41c37A0C8AF6accA", + [Tokens.WETH]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", + [Tokens.WBTC]: "0x1019958C2BD43B882a4e1349337a32Ef9563FC4D", + }, + [ChainSlug.SEPOLIA]: { + [Tokens.USDC]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", + [Tokens.USDT]: "0xB4130e87A180b9448286B291331aEe8A9C154A3A", + [Tokens.DAI]: "0x255745E5C7Ae620b7f523F5E4A0Ead37660EC5d6", + [Tokens.WETH]: "0x771d1Ae208377453D478dF08BbC38034F72aC833", + [Tokens.WBTC]: "0x94BEff5da6201cB2C8F489196FD970B3DF5aA32A", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + }, + [ChainSlug.AEVO_TESTNET]: { + [Tokens.USDC]: "0x4D435C00E09034ec2113F63088CCD0be0a0fd06e", + }, + [ChainSlug.OPTIMISM_SEPOLIA]: { + [Tokens.USDC]: "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", + [Tokens.USDT]: "0x2d1abA6FaBAe80bF5C1C9EA433AAe9030E07CB22", + [Tokens.DAI]: "0xDC0258dc3dB980090E97EbF4f1FD9Cc3C5AD5894", + [Tokens.WETH]: "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.WBTC]: "0xfC5CC93d85861ac82d89fc2D3e56315540E9C8A7", + }, + [ChainSlug.REYA]: { + [Tokens.SUSDE]: "0x2339D41f410EA761F346a14c184385d15f7266c4", + [Tokens.DEUSD]: "0x809B99df4DDd6fA90F2CF305E2cDC310C6AD3C2c", + [Tokens.SDEUSD]: "0x4D3fEB76ab1C7eF40388Cd7a2066edacE1a2237D", + }, }; From e07cc291dd397c5d4a35f5abf5ed0ec7c5cd9cea Mon Sep 17 00:00:00 2001 From: Coderdan Date: Sun, 27 Oct 2024 23:15:04 +0800 Subject: [PATCH 36/57] chore: hook is working --- contracts/hooks/UnwrapHook.sol | 5 +- contracts/interfaces/IWrapERC20.sol | 2 +- contracts/token/SuperToken.sol | 8 +-- deployments/supertoken/surge_addresses.json | 64 ++---------------- ...e_socket_ghst_final_testnet_addresses.json | 25 ------- ...e_socket_ghst_test2_testnet_addresses.json | 25 ------- ...ocket_ghst_test2_testnet_verification.json | 66 ------------------- ...ge_socket_ghst_test_testnet_addresses.json | 25 +++++++ ...ocket_ghst_test_testnet_verification.json} | 22 +++---- .../surge_socket_ghst_testnet_addresses.json | 25 ------- ...urge_socket_ghst_testnet_verification.json | 66 ------------------- .../supertoken/socket_ghst_test_testnet.ts | 28 ++++++++ script/helpers/hook/setHook.ts | 10 ++- src/enums/projectType.ts | 3 +- src/enums/projects.ts | 3 +- test/supertoken/Supertoken.t.sol | 2 +- 16 files changed, 90 insertions(+), 289 deletions(-) delete mode 100644 deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json delete mode 100644 deployments/supertoken/surge_socket_ghst_test2_testnet_addresses.json delete mode 100644 deployments/supertoken/surge_socket_ghst_test2_testnet_verification.json create mode 100644 deployments/supertoken/surge_socket_ghst_test_testnet_addresses.json rename deployments/supertoken/{surge_socket_ghst_final_testnet_verification.json => surge_socket_ghst_test_testnet_verification.json} (67%) delete mode 100644 deployments/supertoken/surge_socket_ghst_testnet_addresses.json delete mode 100644 deployments/supertoken/surge_socket_ghst_testnet_verification.json create mode 100644 script/constants/projectConstants/supertoken/socket_ghst_test_testnet.ts diff --git a/contracts/hooks/UnwrapHook.sol b/contracts/hooks/UnwrapHook.sol index fd1db706..d847b2cc 100644 --- a/contracts/hooks/UnwrapHook.sol +++ b/contracts/hooks/UnwrapHook.sol @@ -31,7 +31,10 @@ contract UnwrapHook is HookBase { DstPostHookCallParams calldata params_ ) external isVaultOrController returns (CacheData memory cacheData) { // unwrap - IWrapERC20(socketGhstAddress).withdraw(params_.transferInfo.amount); + IWrapERC20(socketGhstAddress).withdraw( + params_.transferInfo.amount, + params_.transferInfo.receiver + ); cacheData = CacheData(bytes(""), abi.encode(0)); } diff --git a/contracts/interfaces/IWrapERC20.sol b/contracts/interfaces/IWrapERC20.sol index 5d97890a..38dccca9 100644 --- a/contracts/interfaces/IWrapERC20.sol +++ b/contracts/interfaces/IWrapERC20.sol @@ -6,5 +6,5 @@ interface IWrapERC20 { function burn(address burner_, uint256 amount_) external; - function withdraw(uint256 amount_) external; + function withdraw(uint256 amount_, address to_) external; } diff --git a/contracts/token/SuperToken.sol b/contracts/token/SuperToken.sol index b3652946..68b111ad 100644 --- a/contracts/token/SuperToken.sol +++ b/contracts/token/SuperToken.sol @@ -70,10 +70,10 @@ contract SuperToken is ERC20, RescueBase { } //withdraws native GHST and burns the supertoken - function withdraw(uint256 amount_) external { - _burn(msg.sender, amount_); - msg.sender.safeTransferETH(amount_); - emit Withdrawal(msg.sender, amount_); + function withdraw(uint256 amount_, address to_) external { + _burn(to_, amount_); + to_.safeTransferETH(amount_); + emit Withdrawal(to_, amount_); } receive() external payable { diff --git a/deployments/supertoken/surge_addresses.json b/deployments/supertoken/surge_addresses.json index 1bf47c29..b64e1d7f 100644 --- a/deployments/supertoken/surge_addresses.json +++ b/deployments/supertoken/surge_addresses.json @@ -1,74 +1,24 @@ { - "socket_ghst_test2_testnet": { + "socket_ghst_test_testnet": { "80002": { "SGHST": { "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0x096c22daD52B2406511267c6f51f2a0467DF7831", + "Vault": "0x1eD34c0C9b0f08Bb013CD16E4b75A77cf47cE919", "connectors": { "631571": { - "FAST": "0x3A493e2bd30B6b9Fa315817FAB9d262FE946bf2e" + "FAST": "0x978c0D945DcAa716fe24bb231eAeeA703e82C439" } } } }, "631571": { "SGHST": { - "SuperToken": "0xd6F3277a2EAb45c480E8aE871Df6423059b5ac3F", - "Controller": "0xE4d0A5C11342F796eE665AC3Cea271A2F1B6F023", - "UnwrapHook": "0x2dc4Eb0baA5804DeD56889947B92b2ae74f4119b", + "SuperToken": "0x59C5b4d348F4D7b97643884c1486BfF69faB4597", + "Controller": "0x425096b13F41405653392438ad33cebB598bC174", + "UnwrapHook": "0x8602AA51da2a6769DEBea9bf1Bcd14737b617a37", "connectors": { "80002": { - "FAST": "0x65C9733e5077AECce8c5326314d5BcCcDcF5dfcd" - } - } - } - } - }, - "socket_ghst_testnet": { - "80002": { - "SGHST": { - "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0x939FE77D4aF6108d2BDFf72cc4189C3C29252Ea2", - "connectors": { - "631571": { - "FAST": "0x48b7c506B67203bC42CB814D2b5dF1a62F5A7B6A" - } - } - } - }, - "631571": { - "SGHST": { - "SuperToken": "0x7dBE412Cf3FD3AB63A3576896A29aF35097415d0", - "Controller": "0xa325DF55D165F77d727798B974Fee596dECd5064", - "UnwrapHook": "0x173692C693ea88910ce2d0eA39F0a3c28ED9Ab74", - "connectors": { - "80002": { - "FAST": "0xce6Ca0303134958fEd7C5e2170360F9d000AF3c3" - } - } - } - } - }, - "socket_ghst_final_testnet": { - "80002": { - "SGHST": { - "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0xDF56Ba36f40536A919cb20295803321DCfCc1754", - "connectors": { - "631571": { - "FAST": "0x537a33E0991899DCB342ea4E4107Ef66880030aE" - } - } - } - }, - "631571": { - "SGHST": { - "SuperToken": "0x94168FF45b0e2E3c8D3e21Ee38f55301E0372366", - "Controller": "0x855127292feea3e1487f88dE3ACd8038de13B178", - "UnwrapHook": "0xbC4aF5e624bCf7D989349b15961Fb701528759Db", - "connectors": { - "80002": { - "FAST": "0x6188D1F465f7F5BaE538E0f08fE77C18769B5995" + "FAST": "0xC8c8E45F56937F37c5BdDf38e1A321Cf5A3Ba911" } } } diff --git a/deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json deleted file mode 100644 index d3456bd2..00000000 --- a/deployments/supertoken/surge_socket_ghst_final_testnet_addresses.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "80002": { - "SGHST": { - "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0xDF56Ba36f40536A919cb20295803321DCfCc1754", - "connectors": { - "631571": { - "FAST": "0x537a33E0991899DCB342ea4E4107Ef66880030aE" - } - } - } - }, - "631571": { - "SGHST": { - "SuperToken": "0x94168FF45b0e2E3c8D3e21Ee38f55301E0372366", - "Controller": "0x855127292feea3e1487f88dE3ACd8038de13B178", - "UnwrapHook": "0xbC4aF5e624bCf7D989349b15961Fb701528759Db", - "connectors": { - "80002": { - "FAST": "0x6188D1F465f7F5BaE538E0f08fE77C18769B5995" - } - } - } - } -} diff --git a/deployments/supertoken/surge_socket_ghst_test2_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_test2_testnet_addresses.json deleted file mode 100644 index 5d7650f7..00000000 --- a/deployments/supertoken/surge_socket_ghst_test2_testnet_addresses.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "80002": { - "SGHST": { - "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0x096c22daD52B2406511267c6f51f2a0467DF7831", - "connectors": { - "631571": { - "FAST": "0x3A493e2bd30B6b9Fa315817FAB9d262FE946bf2e" - } - } - } - }, - "631571": { - "SGHST": { - "SuperToken": "0xd6F3277a2EAb45c480E8aE871Df6423059b5ac3F", - "Controller": "0xE4d0A5C11342F796eE665AC3Cea271A2F1B6F023", - "UnwrapHook": "0x2dc4Eb0baA5804DeD56889947B92b2ae74f4119b", - "connectors": { - "80002": { - "FAST": "0x65C9733e5077AECce8c5326314d5BcCcDcF5dfcd" - } - } - } - } -} diff --git a/deployments/supertoken/surge_socket_ghst_test2_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_test2_testnet_verification.json deleted file mode 100644 index ca14392e..00000000 --- a/deployments/supertoken/surge_socket_ghst_test2_testnet_verification.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "80002": [ - [ - "0x3A493e2bd30B6b9Fa315817FAB9d262FE946bf2e", - "ConnectorPlug", - "contracts/ConnectorPlug.sol", - [ - "0x096c22daD52B2406511267c6f51f2a0467DF7831", - "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", - 631571, - "0x0000000000000000000000000000000000000000000000000000000000000000" - ] - ], - [ - "0x096c22daD52B2406511267c6f51f2a0467DF7831", - "Vault", - "contracts/bridge/Vault.sol", - ["0xF679b8D109b2d23931237Ce948a7D784727c0897"] - ] - ], - "631571": [ - [ - "0x65C9733e5077AECce8c5326314d5BcCcDcF5dfcd", - "ConnectorPlug", - "contracts/ConnectorPlug.sol", - [ - "0xE4d0A5C11342F796eE665AC3Cea271A2F1B6F023", - "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", - 80002, - "0x0000000000000000000000000000000000000000000000000000000000000000" - ] - ], - [ - "0x2dc4Eb0baA5804DeD56889947B92b2ae74f4119b", - "UnwrapHook", - "contracts/hooks/UnwrapHook.sol", - [ - "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - "0xE4d0A5C11342F796eE665AC3Cea271A2F1B6F023", - "0xd6F3277a2EAb45c480E8aE871Df6423059b5ac3F" - ] - ], - [ - "0xE4d0A5C11342F796eE665AC3Cea271A2F1B6F023", - "Controller", - "contracts/bridge/Controller.sol", - ["0xd6F3277a2EAb45c480E8aE871Df6423059b5ac3F"] - ], - [ - "0xd6F3277a2EAb45c480E8aE871Df6423059b5ac3F", - "SuperToken", - "contracts/token/SuperToken.sol", - [ - "Aavegotchi Socket GHST", - "SGHST", - 18, - "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - { - "type": "BigNumber", - "hex": "0x00" - } - ] - ] - ] -} diff --git a/deployments/supertoken/surge_socket_ghst_test_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_test_testnet_addresses.json new file mode 100644 index 00000000..f5161a42 --- /dev/null +++ b/deployments/supertoken/surge_socket_ghst_test_testnet_addresses.json @@ -0,0 +1,25 @@ +{ + "80002": { + "SGHST": { + "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", + "Vault": "0x1eD34c0C9b0f08Bb013CD16E4b75A77cf47cE919", + "connectors": { + "631571": { + "FAST": "0x978c0D945DcAa716fe24bb231eAeeA703e82C439" + } + } + } + }, + "631571": { + "SGHST": { + "SuperToken": "0x59C5b4d348F4D7b97643884c1486BfF69faB4597", + "Controller": "0x425096b13F41405653392438ad33cebB598bC174", + "UnwrapHook": "0x8602AA51da2a6769DEBea9bf1Bcd14737b617a37", + "connectors": { + "80002": { + "FAST": "0xC8c8E45F56937F37c5BdDf38e1A321Cf5A3Ba911" + } + } + } + } +} diff --git a/deployments/supertoken/surge_socket_ghst_final_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_test_testnet_verification.json similarity index 67% rename from deployments/supertoken/surge_socket_ghst_final_testnet_verification.json rename to deployments/supertoken/surge_socket_ghst_test_testnet_verification.json index 74f5b1b2..5394d072 100644 --- a/deployments/supertoken/surge_socket_ghst_final_testnet_verification.json +++ b/deployments/supertoken/surge_socket_ghst_test_testnet_verification.json @@ -1,18 +1,18 @@ { "80002": [ [ - "0x537a33E0991899DCB342ea4E4107Ef66880030aE", + "0x978c0D945DcAa716fe24bb231eAeeA703e82C439", "ConnectorPlug", "contracts/ConnectorPlug.sol", [ - "0xDF56Ba36f40536A919cb20295803321DCfCc1754", + "0x1eD34c0C9b0f08Bb013CD16E4b75A77cf47cE919", "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", 631571, "0x0000000000000000000000000000000000000000000000000000000000000000" ] ], [ - "0xDF56Ba36f40536A919cb20295803321DCfCc1754", + "0x1eD34c0C9b0f08Bb013CD16E4b75A77cf47cE919", "Vault", "contracts/bridge/Vault.sol", ["0xF679b8D109b2d23931237Ce948a7D784727c0897"] @@ -20,34 +20,34 @@ ], "631571": [ [ - "0x6188D1F465f7F5BaE538E0f08fE77C18769B5995", + "0xC8c8E45F56937F37c5BdDf38e1A321Cf5A3Ba911", "ConnectorPlug", "contracts/ConnectorPlug.sol", [ - "0x855127292feea3e1487f88dE3ACd8038de13B178", + "0x425096b13F41405653392438ad33cebB598bC174", "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", 80002, "0x0000000000000000000000000000000000000000000000000000000000000000" ] ], [ - "0xbC4aF5e624bCf7D989349b15961Fb701528759Db", + "0x8602AA51da2a6769DEBea9bf1Bcd14737b617a37", "UnwrapHook", "contracts/hooks/UnwrapHook.sol", [ "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - "0x855127292feea3e1487f88dE3ACd8038de13B178", - "0x94168FF45b0e2E3c8D3e21Ee38f55301E0372366" + "0x425096b13F41405653392438ad33cebB598bC174", + "0x59C5b4d348F4D7b97643884c1486BfF69faB4597" ] ], [ - "0x855127292feea3e1487f88dE3ACd8038de13B178", + "0x425096b13F41405653392438ad33cebB598bC174", "Controller", "contracts/bridge/Controller.sol", - ["0x94168FF45b0e2E3c8D3e21Ee38f55301E0372366"] + ["0x59C5b4d348F4D7b97643884c1486BfF69faB4597"] ], [ - "0x94168FF45b0e2E3c8D3e21Ee38f55301E0372366", + "0x59C5b4d348F4D7b97643884c1486BfF69faB4597", "SuperToken", "contracts/token/SuperToken.sol", [ diff --git a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json deleted file mode 100644 index 0ba2b80f..00000000 --- a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "80002": { - "SGHST": { - "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0x939FE77D4aF6108d2BDFf72cc4189C3C29252Ea2", - "connectors": { - "631571": { - "FAST": "0x48b7c506B67203bC42CB814D2b5dF1a62F5A7B6A" - } - } - } - }, - "631571": { - "SGHST": { - "SuperToken": "0x7dBE412Cf3FD3AB63A3576896A29aF35097415d0", - "Controller": "0xa325DF55D165F77d727798B974Fee596dECd5064", - "UnwrapHook": "0x173692C693ea88910ce2d0eA39F0a3c28ED9Ab74", - "connectors": { - "80002": { - "FAST": "0xce6Ca0303134958fEd7C5e2170360F9d000AF3c3" - } - } - } - } -} diff --git a/deployments/supertoken/surge_socket_ghst_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_testnet_verification.json deleted file mode 100644 index 450aa0ff..00000000 --- a/deployments/supertoken/surge_socket_ghst_testnet_verification.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "80002": [ - [ - "0x48b7c506B67203bC42CB814D2b5dF1a62F5A7B6A", - "ConnectorPlug", - "contracts/ConnectorPlug.sol", - [ - "0x939FE77D4aF6108d2BDFf72cc4189C3C29252Ea2", - "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", - 631571, - "0x0000000000000000000000000000000000000000000000000000000000000000" - ] - ], - [ - "0x939FE77D4aF6108d2BDFf72cc4189C3C29252Ea2", - "Vault", - "contracts/bridge/Vault.sol", - ["0xF679b8D109b2d23931237Ce948a7D784727c0897"] - ] - ], - "631571": [ - [ - "0xce6Ca0303134958fEd7C5e2170360F9d000AF3c3", - "ConnectorPlug", - "contracts/ConnectorPlug.sol", - [ - "0xa325DF55D165F77d727798B974Fee596dECd5064", - "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", - 80002, - "0x0000000000000000000000000000000000000000000000000000000000000000" - ] - ], - [ - "0x173692C693ea88910ce2d0eA39F0a3c28ED9Ab74", - "UnwrapHook", - "contracts/hooks/UnwrapHook.sol", - [ - "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668", - "0xa325DF55D165F77d727798B974Fee596dECd5064", - "0x7dBE412Cf3FD3AB63A3576896A29aF35097415d0" - ] - ], - [ - "0xa325DF55D165F77d727798B974Fee596dECd5064", - "Controller", - "contracts/bridge/Controller.sol", - ["0x7dBE412Cf3FD3AB63A3576896A29aF35097415d0"] - ], - [ - "0x7dBE412Cf3FD3AB63A3576896A29aF35097415d0", - "SuperToken", - "contracts/token/SuperToken.sol", - [ - "Socket GHST", - "SGHST", - 18, - "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668", - "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668", - { - "type": "BigNumber", - "hex": "0x00" - } - ] - ] - ] -} diff --git a/script/constants/projectConstants/supertoken/socket_ghst_test_testnet.ts b/script/constants/projectConstants/supertoken/socket_ghst_test_testnet.ts new file mode 100644 index 00000000..1a6e779e --- /dev/null +++ b/script/constants/projectConstants/supertoken/socket_ghst_test_testnet.ts @@ -0,0 +1,28 @@ +import { + ChainSlug, + DeploymentMode, + IntegrationTypes, +} from "@socket.tech/dl-core"; +import { Hooks, ProjectConstants } from "../../../../src"; +import { NFTs, Tokens } from "../../../../src/enums"; + +// For testnet deployments, ChainSlug enum may not have some chains, therefore some keys will look like {421614:{}} instead of {[ChainSlug.ARBITRUM_SEPOLIA]:{}}. This wont affect the functionality of the project. +export const pc: ProjectConstants = { + [DeploymentMode.SURGE]: { + [Tokens.SGHST]: { + vaultChains: [80002], + controllerChains: [631571], + hook: { + hookType: Hooks.UNWRAP_HOOK, + }, + superTokenInfo: { + name: "Aavegotchi Socket GHST", + symbol: Tokens.SGHST, + decimals: 18, + owner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + initialSupplyOwner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + initialSupply: "0", + }, + }, + }, +}; diff --git a/script/helpers/hook/setHook.ts b/script/helpers/hook/setHook.ts index bd494a7d..651f8929 100644 --- a/script/helpers/hook/setHook.ts +++ b/script/helpers/hook/setHook.ts @@ -1,9 +1,9 @@ import { ethers } from "ethers"; export async function getHookAddress(chain: string): Promise { - const address = "0x855127292feea3e1487f88dE3ACd8038de13B178"; + const controllerAddress = "0x425096b13F41405653392438ad33cebB598bC174"; - const hookAddress = "0xbC4aF5e624bCf7D989349b15961Fb701528759Db"; + const hookAddress = "0x8602AA51da2a6769DEBea9bf1Bcd14737b617a37"; const provider = new ethers.providers.JsonRpcProvider( process.env.POLTER_TESTNET_RPC @@ -16,7 +16,11 @@ export async function getHookAddress(chain: string): Promise { "function updateHook(address hook_, bool approve_) external", ]; - const bridgeContract = new ethers.Contract(address, bridgeABI, signer); + const bridgeContract = new ethers.Contract( + controllerAddress, + bridgeABI, + signer + ); try { const hookAddressBefore = await bridgeContract.hook__(); diff --git a/src/enums/projectType.ts b/src/enums/projectType.ts index 72fe29c8..4a993af5 100644 --- a/src/enums/projectType.ts +++ b/src/enums/projectType.ts @@ -24,6 +24,5 @@ export const ProjectTypeMap: Record = { [Project.MAGIC_MAINNET]: ProjectType.SUPERTOKEN, [Project.POLTER_TESTNET]: ProjectType.SUPERBRIDGE, [Project.AAVEGOTCHI_BRIDGE_TESTNET]: ProjectType.SUPERBRIDGE, - [Project.SOCKET_GHST_TESTNET]: ProjectType.SUPERTOKEN, - [Project.SOCKET_GHST_FINAL_TESTNET]: ProjectType.SUPERTOKEN, + [Project.SOCKET_GHST_TEST_TESTNET]: ProjectType.SUPERTOKEN, }; diff --git a/src/enums/projects.ts b/src/enums/projects.ts index e88d3424..c7edd8a1 100644 --- a/src/enums/projects.ts +++ b/src/enums/projects.ts @@ -21,6 +21,5 @@ export enum Project { MAGIC_MAINNET = "magic_mainnet", POLTER_TESTNET = "polter_testnet", AAVEGOTCHI_BRIDGE_TESTNET = "aavegotchi_bridge_testnet", - SOCKET_GHST_TESTNET = "socket_ghst_testnet", - SOCKET_GHST_FINAL_TESTNET = "socket_ghst_final_testnet", + SOCKET_GHST_TEST_TESTNET = "socket_ghst_test_testnet", } diff --git a/test/supertoken/Supertoken.t.sol b/test/supertoken/Supertoken.t.sol index 94c0cebf..df3830eb 100644 --- a/test/supertoken/Supertoken.t.sol +++ b/test/supertoken/Supertoken.t.sol @@ -91,7 +91,7 @@ contract SuperTokenTest is Test { uint256 initialBalance = user.balance; vm.prank(user); - superToken.withdraw(1 ether); + superToken.withdraw(1 ether, user); assertEq(superToken.balanceOf(user), 0); assertEq(user.balance, initialBalance + 1 ether); From dce001925e2ff2e01966b7cf4022cd1934f7bec4 Mon Sep 17 00:00:00 2001 From: Coderdan Date: Mon, 28 Oct 2024 12:04:18 +0800 Subject: [PATCH 37/57] chore: prep unwrap supertoken --- contracts/token/SuperToken.sol | 43 +-------- contracts/token/SuperToken_old.sol | 51 ---------- contracts/token/UnwrapSuperToken.sol | 94 +++++++++++++++++++ deployments/supertoken/surge_addresses.json | 25 +++++ ...st_unwrapsupertoken_testnet_addresses.json | 25 +++++ ...unwrapsupertoken_testnet_verification.json | 66 +++++++++++++ .../ghst_unwrapsupertoken_testnet.ts | 28 ++++++ script/deploy/deploy.ts | 15 ++- script/deploy/deployHook.ts | 7 +- script/helpers/hook/setHook.ts | 4 +- src/enums/projectType.ts | 1 + src/enums/projects.ts | 1 + ...upertoken.t.sol => UnwrapSupertoken.t.sol} | 8 +- 13 files changed, 256 insertions(+), 112 deletions(-) delete mode 100644 contracts/token/SuperToken_old.sol create mode 100644 contracts/token/UnwrapSuperToken.sol create mode 100644 deployments/supertoken/surge_ghst_unwrapsupertoken_testnet_addresses.json create mode 100644 deployments/supertoken/surge_ghst_unwrapsupertoken_testnet_verification.json create mode 100644 script/constants/projectConstants/supertoken/ghst_unwrapsupertoken_testnet.ts rename test/supertoken/{Supertoken.t.sol => UnwrapSupertoken.t.sol} (94%) diff --git a/contracts/token/SuperToken.sol b/contracts/token/SuperToken.sol index 68b111ad..3eceeee5 100644 --- a/contracts/token/SuperToken.sol +++ b/contracts/token/SuperToken.sol @@ -1,26 +1,18 @@ // SPDX-License-Identifier: MIT pragma solidity 0.8.13; +import "solmate/tokens/ERC20.sol"; import "../utils/RescueBase.sol"; import "../interfaces/IHook.sol"; -import {ERC20} from "solmate/tokens/ERC20.sol"; -import {SafeTransferLib} from "solmate/utils/SafeTransferLib.sol"; /** * @title SuperToken * @notice An ERC20 contract which enables bridging a token to its sibling chains. * @dev This contract implements ISuperTokenOrVault to support message bridging through IMessageBridge compliant contracts. */ -contract SuperToken is ERC20, RescueBase { - using SafeTransferLib for address; - - event Deposit(address indexed from, uint256 amount); - event Withdrawal(address indexed to, uint256 amount); - +contract SuperToken_old is ERC20, RescueBase { // for all controller access (mint, burn) - bytes32 public constant CONTROLLER_ROLE = keccak256("CONTROLLER_ROLE"); - - // bytes32 public constant RESCUE_ROLE = keccak256("RESCUE_ROLE"); + bytes32 constant CONTROLLER_ROLE = keccak256("CONTROLLER_ROLE"); /** * @notice constructor for creating a new SuperToken. @@ -43,9 +35,6 @@ contract SuperToken is ERC20, RescueBase { _grantRole(RESCUE_ROLE, owner_); } - //Controller Functions - - //burns the supertoken and and unlocks it on the parent chain chain function burn( address user_, uint256 amount_ @@ -53,36 +42,10 @@ contract SuperToken is ERC20, RescueBase { _burn(user_, amount_); } - //lock the NonMintable ERC20 token on the source chain and mint it on the child chain function mint( address receiver_, uint256 amount_ ) external onlyRole(CONTROLLER_ROLE) { _mint(receiver_, amount_); } - - //Wrapping Functions - - //deposits native GHST and mints the supertoken - function deposit() public payable { - _mint(msg.sender, msg.value); - emit Deposit(msg.sender, msg.value); - } - - //withdraws native GHST and burns the supertoken - function withdraw(uint256 amount_, address to_) external { - _burn(to_, amount_); - to_.safeTransferETH(amount_); - emit Withdrawal(to_, amount_); - } - - receive() external payable { - deposit(); - } } - -//So the flow is: -//1. User locks their GHST on Polygon, which triggers the mint function on Geist, minting the supertoken version of GHST. -//2. Next, we need to automatically unwrap the supertoken GHST into native GHST. -//3. To do this, we call the withdraw function. This burns the supertoken and sends the native GHST back to the user. -//4. But if there isn't enough native GHST in the contract, the withdraw will fail. So we need to deposit more native GHST to the contract. diff --git a/contracts/token/SuperToken_old.sol b/contracts/token/SuperToken_old.sol deleted file mode 100644 index 3eceeee5..00000000 --- a/contracts/token/SuperToken_old.sol +++ /dev/null @@ -1,51 +0,0 @@ -// SPDX-License-Identifier: MIT -pragma solidity 0.8.13; - -import "solmate/tokens/ERC20.sol"; -import "../utils/RescueBase.sol"; -import "../interfaces/IHook.sol"; - -/** - * @title SuperToken - * @notice An ERC20 contract which enables bridging a token to its sibling chains. - * @dev This contract implements ISuperTokenOrVault to support message bridging through IMessageBridge compliant contracts. - */ -contract SuperToken_old is ERC20, RescueBase { - // for all controller access (mint, burn) - bytes32 constant CONTROLLER_ROLE = keccak256("CONTROLLER_ROLE"); - - /** - * @notice constructor for creating a new SuperToken. - * @param name_ token name - * @param symbol_ token symbol - * @param decimals_ token decimals (should be same on all chains) - * @param initialSupplyHolder_ address to which initial supply will be minted - * @param owner_ owner of this contract - * @param initialSupply_ initial supply of super token - */ - constructor( - string memory name_, - string memory symbol_, - uint8 decimals_, - address initialSupplyHolder_, - address owner_, - uint256 initialSupply_ - ) ERC20(name_, symbol_, decimals_) AccessControl(owner_) { - _mint(initialSupplyHolder_, initialSupply_); - _grantRole(RESCUE_ROLE, owner_); - } - - function burn( - address user_, - uint256 amount_ - ) external onlyRole(CONTROLLER_ROLE) { - _burn(user_, amount_); - } - - function mint( - address receiver_, - uint256 amount_ - ) external onlyRole(CONTROLLER_ROLE) { - _mint(receiver_, amount_); - } -} diff --git a/contracts/token/UnwrapSuperToken.sol b/contracts/token/UnwrapSuperToken.sol new file mode 100644 index 00000000..a53c7e48 --- /dev/null +++ b/contracts/token/UnwrapSuperToken.sol @@ -0,0 +1,94 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.13; + +import "../utils/RescueBase.sol"; +import "../interfaces/IHook.sol"; +import {ERC20} from "solmate/tokens/ERC20.sol"; +import {SafeTransferLib} from "solmate/utils/SafeTransferLib.sol"; + +/** + * @title UnwrapSupertoken + * @notice An ERC20 contract which enables bridging a token to its sibling chains. + * @dev This contract implements ISuperTokenOrVault to support message bridging through IMessageBridge compliant contracts. + */ +contract UnwrapSuperToken is ERC20, RescueBase { + using SafeTransferLib for address; + + event Deposit(address indexed from, uint256 amount); + event Withdrawal(address indexed to, uint256 amount); + + // for all controller access (mint, burn) + bytes32 public constant CONTROLLER_ROLE = keccak256("CONTROLLER_ROLE"); + + // bytes32 public constant RESCUE_ROLE = keccak256("RESCUE_ROLE"); + + /** + * @notice constructor for creating a new SuperToken. + * @param name_ token name + * @param symbol_ token symbol + * @param decimals_ token decimals (should be same on all chains) + * @param initialSupplyHolder_ address to which initial supply will be minted + * @param owner_ owner of this contract + * @param initialSupply_ initial supply of super token + */ + constructor( + string memory name_, + string memory symbol_, + uint8 decimals_, + address initialSupplyHolder_, + address owner_, + uint256 initialSupply_ + ) ERC20(name_, symbol_, decimals_) AccessControl(owner_) { + _mint(initialSupplyHolder_, initialSupply_); + _grantRole(RESCUE_ROLE, owner_); + } + + //Controller Functions + + //burns the supertoken and and unlocks it on the parent chain chain + function burn( + address user_, + uint256 amount_ + ) external onlyRole(CONTROLLER_ROLE) { + _burn(user_, amount_); + } + + //lock the NonMintable ERC20 token on the source chain and mint it on the child chain + function mint( + address receiver_, + uint256 amount_ + ) external onlyRole(CONTROLLER_ROLE) { + _mint(receiver_, amount_); + } + + //Wrapping Functions + + //deposits native GHST and mints the supertoken + function deposit() public payable { + _mint(msg.sender, msg.value); + emit Deposit(msg.sender, msg.value); + } + + //withdraws native GHST and burns the supertoken + function withdraw(uint256 amount_, address to_) external { + //perform a balance check to ensure the contract has enough to withdraw and not revert + if (address(this).balance < amount_) { + //silently fail, so we don't break the bridging tx + return; + } else { + _burn(to_, amount_); + to_.safeTransferETH(amount_); + emit Withdrawal(to_, amount_); + } + } + + receive() external payable { + deposit(); + } +} + +//So the flow is: +//1. User locks their GHST on Polygon, which triggers the mint function on Geist, minting the supertoken version of GHST. +//2. Next, we need to automatically unwrap the supertoken GHST into native GHST. +//3. To do this, we call the withdraw function. This burns the supertoken and sends the native GHST back to the user. +//4. But if there isn't enough native GHST in the contract, the withdraw will fail. So we need to deposit more native GHST to the contract. diff --git a/deployments/supertoken/surge_addresses.json b/deployments/supertoken/surge_addresses.json index b64e1d7f..d774419d 100644 --- a/deployments/supertoken/surge_addresses.json +++ b/deployments/supertoken/surge_addresses.json @@ -23,5 +23,30 @@ } } } + }, + "ghst_unwrapsupertoken_testnet": { + "80002": { + "SGHST": { + "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", + "Vault": "0x252e9438f70ECC17DfCC2373303fC6e5709d7F97", + "connectors": { + "631571": { + "FAST": "0xb7ef8752398476977B924Acf5ef015c6cE71bA12" + } + } + } + }, + "631571": { + "SGHST": { + "UnwrapSuperToken": "0x7C98F4f7272ad2D6F95Db137fbB80C2eFb94aD39", + "Controller": "0x966539AD75843cA2f59f09A89B269236a7174046", + "UnwrapHook": "0x9054cA80bffeA161Fb6cD5c1F69d8DcE7f89bAef", + "connectors": { + "80002": { + "FAST": "0x35D8Ef4CF5EA943212d1Ca65A4EDfDb2D07E14EE" + } + } + } + } } } diff --git a/deployments/supertoken/surge_ghst_unwrapsupertoken_testnet_addresses.json b/deployments/supertoken/surge_ghst_unwrapsupertoken_testnet_addresses.json new file mode 100644 index 00000000..ce082a89 --- /dev/null +++ b/deployments/supertoken/surge_ghst_unwrapsupertoken_testnet_addresses.json @@ -0,0 +1,25 @@ +{ + "80002": { + "SGHST": { + "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", + "Vault": "0x252e9438f70ECC17DfCC2373303fC6e5709d7F97", + "connectors": { + "631571": { + "FAST": "0xb7ef8752398476977B924Acf5ef015c6cE71bA12" + } + } + } + }, + "631571": { + "SGHST": { + "UnwrapSuperToken": "0x7C98F4f7272ad2D6F95Db137fbB80C2eFb94aD39", + "Controller": "0x966539AD75843cA2f59f09A89B269236a7174046", + "UnwrapHook": "0x9054cA80bffeA161Fb6cD5c1F69d8DcE7f89bAef", + "connectors": { + "80002": { + "FAST": "0x35D8Ef4CF5EA943212d1Ca65A4EDfDb2D07E14EE" + } + } + } + } +} diff --git a/deployments/supertoken/surge_ghst_unwrapsupertoken_testnet_verification.json b/deployments/supertoken/surge_ghst_unwrapsupertoken_testnet_verification.json new file mode 100644 index 00000000..450df1e8 --- /dev/null +++ b/deployments/supertoken/surge_ghst_unwrapsupertoken_testnet_verification.json @@ -0,0 +1,66 @@ +{ + "80002": [ + [ + "0xb7ef8752398476977B924Acf5ef015c6cE71bA12", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0x252e9438f70ECC17DfCC2373303fC6e5709d7F97", + "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", + 631571, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0x252e9438f70ECC17DfCC2373303fC6e5709d7F97", + "Vault", + "contracts/bridge/Vault.sol", + ["0xF679b8D109b2d23931237Ce948a7D784727c0897"] + ] + ], + "631571": [ + [ + "0x35D8Ef4CF5EA943212d1Ca65A4EDfDb2D07E14EE", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0x966539AD75843cA2f59f09A89B269236a7174046", + "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", + 80002, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0x9054cA80bffeA161Fb6cD5c1F69d8DcE7f89bAef", + "UnwrapHook", + "contracts/hooks/UnwrapHook.sol", + [ + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0x966539AD75843cA2f59f09A89B269236a7174046", + "0x7C98F4f7272ad2D6F95Db137fbB80C2eFb94aD39" + ] + ], + [ + "0x966539AD75843cA2f59f09A89B269236a7174046", + "Controller", + "contracts/bridge/Controller.sol", + ["0x7C98F4f7272ad2D6F95Db137fbB80C2eFb94aD39"] + ], + [ + "0x7C98F4f7272ad2D6F95Db137fbB80C2eFb94aD39", + "UnwrapSuperToken", + "contracts/token/UnwrapSuperToken.sol", + [ + "Aavegotchi Socket GHST", + "SGHST", + 18, + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + { + "type": "BigNumber", + "hex": "0x00" + } + ] + ] + ] +} diff --git a/script/constants/projectConstants/supertoken/ghst_unwrapsupertoken_testnet.ts b/script/constants/projectConstants/supertoken/ghst_unwrapsupertoken_testnet.ts new file mode 100644 index 00000000..1a6e779e --- /dev/null +++ b/script/constants/projectConstants/supertoken/ghst_unwrapsupertoken_testnet.ts @@ -0,0 +1,28 @@ +import { + ChainSlug, + DeploymentMode, + IntegrationTypes, +} from "@socket.tech/dl-core"; +import { Hooks, ProjectConstants } from "../../../../src"; +import { NFTs, Tokens } from "../../../../src/enums"; + +// For testnet deployments, ChainSlug enum may not have some chains, therefore some keys will look like {421614:{}} instead of {[ChainSlug.ARBITRUM_SEPOLIA]:{}}. This wont affect the functionality of the project. +export const pc: ProjectConstants = { + [DeploymentMode.SURGE]: { + [Tokens.SGHST]: { + vaultChains: [80002], + controllerChains: [631571], + hook: { + hookType: Hooks.UNWRAP_HOOK, + }, + superTokenInfo: { + name: "Aavegotchi Socket GHST", + symbol: Tokens.SGHST, + decimals: 18, + owner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + initialSupplyOwner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + initialSupply: "0", + }, + }, + }, +}; diff --git a/script/deploy/deploy.ts b/script/deploy/deploy.ts index 3a96d925..19d4c964 100644 --- a/script/deploy/deploy.ts +++ b/script/deploy/deploy.ts @@ -296,11 +296,9 @@ export const deployControllerChainContracts = async ( let token = deployParams.addresses[TokenContracts.SuperToken]; - // if (deployParams.hookType == Hooks.UNWRAP_HOOK) { - // token = deployParams.addresses[SuperTokenContracts.UnwrapSuperToken]; - // } else { - - // } + //Use the UnwrapSuperToken for Unwrap Hook + if (deployParams.hookType == Hooks.UNWRAP_HOOK) + token = deployParams.addresses[SuperTokenContracts.UnwrapSuperToken]; if (token) mintableToken = token; else throw new Error("SuperToken not found on chain"); @@ -464,10 +462,9 @@ export const deployVaultChainContracts = async ( const deploySuperToken = async (deployParams: DeployParams) => { let contractName = SuperTokenContracts.SuperToken; - //todo: change this to UnwrapSuperToken later - if (deployParams.hookType === Hooks.UNWRAP_HOOK) { - contractName = SuperTokenContracts.SuperToken; - } + //Use the UnwrapSuperToken for Unwrap Hook + if (deployParams.hookType === Hooks.UNWRAP_HOOK) + contractName = SuperTokenContracts.UnwrapSuperToken; if ( ExistingTokenAddresses[deployParams.currentChainSlug]?.[ diff --git a/script/deploy/deployHook.ts b/script/deploy/deployHook.ts index 896eae36..38c233df 100644 --- a/script/deploy/deployHook.ts +++ b/script/deploy/deployHook.ts @@ -110,16 +110,11 @@ export const deployHookContracts = async ( useConnnectorPools, // useControllerPools ]; } else if (hookType == Hooks.UNWRAP_HOOK) { - console.log("addresses:", deployParams.addresses); - contractName = HookContracts.UnwrapHook; - // deployParams = await deployExecutionHelper(deployParams); args = [ getOwner(), bridgeAddress, - - //todo: change to UnwrapSuperToken later - deployParams.addresses[TokenContracts.SuperToken], + deployParams.addresses[TokenContracts.UnwrapSuperToken], ]; } diff --git a/script/helpers/hook/setHook.ts b/script/helpers/hook/setHook.ts index 651f8929..f96e39b2 100644 --- a/script/helpers/hook/setHook.ts +++ b/script/helpers/hook/setHook.ts @@ -1,9 +1,9 @@ import { ethers } from "ethers"; export async function getHookAddress(chain: string): Promise { - const controllerAddress = "0x425096b13F41405653392438ad33cebB598bC174"; + const controllerAddress = "0x966539AD75843cA2f59f09A89B269236a7174046"; - const hookAddress = "0x8602AA51da2a6769DEBea9bf1Bcd14737b617a37"; + const hookAddress = "0x9054cA80bffeA161Fb6cD5c1F69d8DcE7f89bAef"; const provider = new ethers.providers.JsonRpcProvider( process.env.POLTER_TESTNET_RPC diff --git a/src/enums/projectType.ts b/src/enums/projectType.ts index 4a993af5..bdf8e6d9 100644 --- a/src/enums/projectType.ts +++ b/src/enums/projectType.ts @@ -25,4 +25,5 @@ export const ProjectTypeMap: Record = { [Project.POLTER_TESTNET]: ProjectType.SUPERBRIDGE, [Project.AAVEGOTCHI_BRIDGE_TESTNET]: ProjectType.SUPERBRIDGE, [Project.SOCKET_GHST_TEST_TESTNET]: ProjectType.SUPERTOKEN, + [Project.GHST_UNWRAPSUPERTOKEN_TESTNET]: ProjectType.SUPERTOKEN, }; diff --git a/src/enums/projects.ts b/src/enums/projects.ts index c7edd8a1..60c42ef2 100644 --- a/src/enums/projects.ts +++ b/src/enums/projects.ts @@ -22,4 +22,5 @@ export enum Project { POLTER_TESTNET = "polter_testnet", AAVEGOTCHI_BRIDGE_TESTNET = "aavegotchi_bridge_testnet", SOCKET_GHST_TEST_TESTNET = "socket_ghst_test_testnet", + GHST_UNWRAPSUPERTOKEN_TESTNET = "ghst_unwrapsupertoken_testnet", } diff --git a/test/supertoken/Supertoken.t.sol b/test/supertoken/UnwrapSupertoken.t.sol similarity index 94% rename from test/supertoken/Supertoken.t.sol rename to test/supertoken/UnwrapSupertoken.t.sol index df3830eb..72eaf6db 100644 --- a/test/supertoken/Supertoken.t.sol +++ b/test/supertoken/UnwrapSupertoken.t.sol @@ -2,10 +2,10 @@ pragma solidity 0.8.13; import "forge-std/Test.sol"; -import "../../contracts/token/SuperToken.sol"; +import "../../contracts/token/UnwrapSuperToken.sol"; -contract SuperTokenTest is Test { - SuperToken public superToken; +contract UnwrapSuperTokenTest is Test { + UnwrapSuperToken public superToken; address public owner; address public initialSupplyHolder; address public user; @@ -19,7 +19,7 @@ contract SuperTokenTest is Test { user = address(0x2); controller = address(0x3); - superToken = new SuperToken( + superToken = new UnwrapSuperToken( "Aavegotchi Socket GHST", "sGHST", 18, From 0fb48d70594c2edd3829f782cdda972bfd4a11ca Mon Sep 17 00:00:00 2001 From: Coderdan Date: Mon, 28 Oct 2024 12:23:06 +0800 Subject: [PATCH 38/57] chore: add checks and documentation --- contracts/token/UnwrapSuperToken.sol | 42 +++++++++++++++++----------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/contracts/token/UnwrapSuperToken.sol b/contracts/token/UnwrapSuperToken.sol index a53c7e48..4a88843a 100644 --- a/contracts/token/UnwrapSuperToken.sol +++ b/contracts/token/UnwrapSuperToken.sol @@ -9,19 +9,18 @@ import {SafeTransferLib} from "solmate/utils/SafeTransferLib.sol"; /** * @title UnwrapSupertoken * @notice An ERC20 contract which enables bridging a token to its sibling chains. - * @dev This contract implements ISuperTokenOrVault to support message bridging through IMessageBridge compliant contracts. + * @dev This contract implements ISuperTokenOrVault to support message bridging through IMessageBridge compliant contracts. The contract is designed to be used as a wrapper for a native gas token and unwrap automatically once it arrives onto the destination chain. */ contract UnwrapSuperToken is ERC20, RescueBase { using SafeTransferLib for address; event Deposit(address indexed from, uint256 amount); event Withdrawal(address indexed to, uint256 amount); + event WithdrawalFailed(address indexed to, uint256 amount); // for all controller access (mint, burn) bytes32 public constant CONTROLLER_ROLE = keccak256("CONTROLLER_ROLE"); - // bytes32 public constant RESCUE_ROLE = keccak256("RESCUE_ROLE"); - /** * @notice constructor for creating a new SuperToken. * @param name_ token name @@ -43,13 +42,18 @@ contract UnwrapSuperToken is ERC20, RescueBase { _grantRole(RESCUE_ROLE, owner_); } - //Controller Functions - - //burns the supertoken and and unlocks it on the parent chain chain + /// @notice Burns supertokens from a user's balance + /// @dev Only callable by addresses with CONTROLLER_ROLE + /// @param user_ Address to burn tokens from + /// @param amount_ Amount of tokens to burn function burn( address user_, uint256 amount_ ) external onlyRole(CONTROLLER_ROLE) { + require(user_ != address(0), "Invalid user address"); + require(amount_ > 0, "Amount must be greater than 0"); + require(balanceOf[user_] >= amount_, "Insufficient balance"); + _burn(user_, amount_); } @@ -58,22 +62,32 @@ contract UnwrapSuperToken is ERC20, RescueBase { address receiver_, uint256 amount_ ) external onlyRole(CONTROLLER_ROLE) { + require(receiver_ != address(0), "Invalid receiver address"); + require(amount_ > 0, "Amount must be greater than 0"); _mint(receiver_, amount_); } - //Wrapping Functions - - //deposits native GHST and mints the supertoken + /// @notice Deposits native GHST and mints the corresponding supertoken + /// @dev Mints supertokens 1:1 with deposited native GHST + /// @dev The deposited GHST is held by this contract as backing for the supertokens function deposit() public payable { _mint(msg.sender, msg.value); emit Deposit(msg.sender, msg.value); } - //withdraws native GHST and burns the supertoken + /// @notice Withdraws native GHST and burns the corresponding supertoken + /// @dev Burns supertokens 1:1 and transfers the backing native GHST to the receiver + /// @dev If contract has insufficient native GHST balance, emits WithdrawalFailed and returns + /// @param amount_ Amount of GHST to withdraw + /// @param to_ Address to receive the withdrawn GHST function withdraw(uint256 amount_, address to_) external { + require(to_ != address(0), "Invalid receiver address"); + require(amount_ > 0, "Amount must be greater than 0"); + //perform a balance check to ensure the contract has enough to withdraw and not revert if (address(this).balance < amount_) { - //silently fail, so we don't break the bridging tx + //silently fail with an event, so we don't break the bridging tx + emit WithdrawalFailed(to_, amount_); return; } else { _burn(to_, amount_); @@ -86,9 +100,3 @@ contract UnwrapSuperToken is ERC20, RescueBase { deposit(); } } - -//So the flow is: -//1. User locks their GHST on Polygon, which triggers the mint function on Geist, minting the supertoken version of GHST. -//2. Next, we need to automatically unwrap the supertoken GHST into native GHST. -//3. To do this, we call the withdraw function. This burns the supertoken and sends the native GHST back to the user. -//4. But if there isn't enough native GHST in the contract, the withdraw will fail. So we need to deposit more native GHST to the contract. From 129b19aba85fff89c73313d40ea111ef5df8710a Mon Sep 17 00:00:00 2001 From: Coderdan Date: Mon, 28 Oct 2024 21:23:29 +0800 Subject: [PATCH 39/57] chore: update pre hook --- contracts/hooks/UnwrapHook.sol | 26 ++++++++++++++++++++++++++ contracts/interfaces/IWrapERC20.sol | 4 ++++ contracts/token/UnwrapSuperToken.sol | 10 ++++++---- test/supertoken/UnwrapSupertoken.t.sol | 2 +- 4 files changed, 37 insertions(+), 5 deletions(-) diff --git a/contracts/hooks/UnwrapHook.sol b/contracts/hooks/UnwrapHook.sol index d847b2cc..dbc3af07 100644 --- a/contracts/hooks/UnwrapHook.sol +++ b/contracts/hooks/UnwrapHook.sol @@ -46,6 +46,32 @@ contract UnwrapHook is HookBase { isVaultOrController returns (TransferInfo memory transferInfo, bytes memory postHookData) { + // Check if user's wrapped GHST balance is enough, if not deposit ETH + if ( + params_.transferInfo.amount > + IWrapERC20(socketGhstAddress).balanceOf( + params_.transferInfo.receiver + ) + ) { + //Calculate how much is needed to cover the deposit + uint256 ethNeeded = params_.transferInfo.amount - + IWrapERC20(socketGhstAddress).balanceOf( + params_.transferInfo.receiver + ); + + //Revert if the user doesn't have enough + require( + params_.transferInfo.receiver.balance >= ethNeeded, + "Insufficient balance" + ); + + // Deposit native ETH to cover the difference + IWrapERC20(socketGhstAddress).deposit( + params_.transferInfo.amount, + params_.transferInfo.receiver + ); + } + return (params_.transferInfo, bytes("")); } diff --git a/contracts/interfaces/IWrapERC20.sol b/contracts/interfaces/IWrapERC20.sol index 38dccca9..c77e86d0 100644 --- a/contracts/interfaces/IWrapERC20.sol +++ b/contracts/interfaces/IWrapERC20.sol @@ -6,5 +6,9 @@ interface IWrapERC20 { function burn(address burner_, uint256 amount_) external; + function deposit(uint256 amount_, address to_) external; + function withdraw(uint256 amount_, address to_) external; + + function balanceOf(address user_) external view returns (uint256); } diff --git a/contracts/token/UnwrapSuperToken.sol b/contracts/token/UnwrapSuperToken.sol index 4a88843a..ef787a63 100644 --- a/contracts/token/UnwrapSuperToken.sol +++ b/contracts/token/UnwrapSuperToken.sol @@ -70,9 +70,11 @@ contract UnwrapSuperToken is ERC20, RescueBase { /// @notice Deposits native GHST and mints the corresponding supertoken /// @dev Mints supertokens 1:1 with deposited native GHST /// @dev The deposited GHST is held by this contract as backing for the supertokens - function deposit() public payable { - _mint(msg.sender, msg.value); - emit Deposit(msg.sender, msg.value); + function deposit(address to_) public payable { + require(to_ != address(0), "Invalid receiver address"); + require(msg.value > 0, "Amount must be greater than 0"); + _mint(to_, msg.value); + emit Deposit(to_, msg.value); } /// @notice Withdraws native GHST and burns the corresponding supertoken @@ -97,6 +99,6 @@ contract UnwrapSuperToken is ERC20, RescueBase { } receive() external payable { - deposit(); + deposit(msg.sender); } } diff --git a/test/supertoken/UnwrapSupertoken.t.sol b/test/supertoken/UnwrapSupertoken.t.sol index 72eaf6db..c519ba03 100644 --- a/test/supertoken/UnwrapSupertoken.t.sol +++ b/test/supertoken/UnwrapSupertoken.t.sol @@ -79,7 +79,7 @@ contract UnwrapSuperTokenTest is Test { function testDeposit() public { vm.deal(user, 1 ether); vm.prank(user); - superToken.deposit{value: 1 ether}(); + superToken.deposit{value: 1 ether}(user); assertEq(superToken.balanceOf(user), 1 ether); assertEq(address(superToken).balance, 1 ether); } From 591c1f263cc527e9239b4d51a351bc301fa3a168 Mon Sep 17 00:00:00 2001 From: orionstardust Date: Mon, 28 Oct 2024 23:51:06 -0400 Subject: [PATCH 40/57] fix: unwrap hook and erc20 interface --- contracts/bridge/Base.sol | 6 +++--- contracts/hooks/Controller_YieldLimitExecHook.sol | 1 + contracts/hooks/LimitExecutionHook.sol | 1 + contracts/hooks/LimitHook.sol | 1 + contracts/hooks/UnwrapHook.sol | 12 ++++++++++-- contracts/hooks/Vault_YieldLimitExecHook.sol | 8 +++++++- contracts/interfaces/IHook.sol | 1 + contracts/interfaces/IWrapERC20.sol | 2 +- 8 files changed, 25 insertions(+), 7 deletions(-) diff --git a/contracts/bridge/Base.sol b/contracts/bridge/Base.sol index 0c0fa5a8..30317926 100644 --- a/contracts/bridge/Base.sol +++ b/contracts/bridge/Base.sol @@ -112,9 +112,9 @@ abstract contract Base is ReentrancyGuard, IBridge, RescueBase { revert InsufficientMsgValue(); if (address(hook__) != address(0)) { - (transferInfo, postHookData) = hook__.srcPreHookCall( - SrcPreHookCallParams(connector_, msg.sender, transferInfo_) - ); + (transferInfo, postHookData) = hook__.srcPreHookCall{ + value: msg.value + }(SrcPreHookCallParams(connector_, msg.sender, transferInfo_)); } else { transferInfo = transferInfo_; } diff --git a/contracts/hooks/Controller_YieldLimitExecHook.sol b/contracts/hooks/Controller_YieldLimitExecHook.sol index c343924b..195c24e5 100644 --- a/contracts/hooks/Controller_YieldLimitExecHook.sol +++ b/contracts/hooks/Controller_YieldLimitExecHook.sol @@ -60,6 +60,7 @@ contract Controller_YieldLimitExecHook is LimitExecutionHook { SrcPreHookCallParams calldata params_ ) public + payable override notShutdown returns (TransferInfo memory transferInfo, bytes memory postHookData) diff --git a/contracts/hooks/LimitExecutionHook.sol b/contracts/hooks/LimitExecutionHook.sol index 12511dd7..960034b3 100644 --- a/contracts/hooks/LimitExecutionHook.sol +++ b/contracts/hooks/LimitExecutionHook.sol @@ -36,6 +36,7 @@ contract LimitExecutionHook is LimitPlugin, ConnectorPoolPlugin { SrcPreHookCallParams calldata params_ ) public + payable virtual isVaultOrController returns (TransferInfo memory, bytes memory) diff --git a/contracts/hooks/LimitHook.sol b/contracts/hooks/LimitHook.sol index 564e2f90..afb2f3a1 100644 --- a/contracts/hooks/LimitHook.sol +++ b/contracts/hooks/LimitHook.sol @@ -26,6 +26,7 @@ contract LimitHook is LimitPlugin, ConnectorPoolPlugin { SrcPreHookCallParams memory params_ ) external + payable isVaultOrController returns (TransferInfo memory transferInfo, bytes memory postHookData) { diff --git a/contracts/hooks/UnwrapHook.sol b/contracts/hooks/UnwrapHook.sol index dbc3af07..c4296df7 100644 --- a/contracts/hooks/UnwrapHook.sol +++ b/contracts/hooks/UnwrapHook.sol @@ -43,6 +43,7 @@ contract UnwrapHook is HookBase { SrcPreHookCallParams calldata params_ ) external + payable isVaultOrController returns (TransferInfo memory transferInfo, bytes memory postHookData) { @@ -64,12 +65,19 @@ contract UnwrapHook is HookBase { params_.transferInfo.receiver.balance >= ethNeeded, "Insufficient balance" ); + require(msg.value >= ethNeeded, "Insufficient token amount"); // Deposit native ETH to cover the difference - IWrapERC20(socketGhstAddress).deposit( - params_.transferInfo.amount, + IWrapERC20(socketGhstAddress).deposit{value: ethNeeded}( params_.transferInfo.receiver ); + + // Refund excess amount if there's any + uint256 excessAmount = msg.value - ethNeeded; + if (excessAmount > 0) { + (bool success, ) = msg.sender.call{value: excessAmount}(""); + require(success, "Failed to send refund"); + } } return (params_.transferInfo, bytes("")); diff --git a/contracts/hooks/Vault_YieldLimitExecHook.sol b/contracts/hooks/Vault_YieldLimitExecHook.sol index 23ee7fde..459ae615 100644 --- a/contracts/hooks/Vault_YieldLimitExecHook.sol +++ b/contracts/hooks/Vault_YieldLimitExecHook.sol @@ -80,7 +80,13 @@ contract Vault_YieldLimitExecHook is LimitExecutionHook { */ function srcPreHookCall( SrcPreHookCallParams calldata params_ - ) public override notShutdown returns (TransferInfo memory, bytes memory) { + ) + public + payable + override + notShutdown + returns (TransferInfo memory, bytes memory) + { totalIdle += params_.transferInfo.amount; return super.srcPreHookCall(params_); } diff --git a/contracts/interfaces/IHook.sol b/contracts/interfaces/IHook.sol index 1403b017..81a2fb70 100644 --- a/contracts/interfaces/IHook.sol +++ b/contracts/interfaces/IHook.sol @@ -14,6 +14,7 @@ interface IHook { SrcPreHookCallParams calldata params_ ) external + payable returns (TransferInfo memory transferInfo, bytes memory postHookData); function srcPostHookCall( diff --git a/contracts/interfaces/IWrapERC20.sol b/contracts/interfaces/IWrapERC20.sol index c77e86d0..dcc3a5a2 100644 --- a/contracts/interfaces/IWrapERC20.sol +++ b/contracts/interfaces/IWrapERC20.sol @@ -6,7 +6,7 @@ interface IWrapERC20 { function burn(address burner_, uint256 amount_) external; - function deposit(uint256 amount_, address to_) external; + function deposit(address to_) external payable; function withdraw(uint256 amount_, address to_) external; From 060a89fa13b7b8ac07d24aac48a845b72519073d Mon Sep 17 00:00:00 2001 From: orionstardust Date: Tue, 29 Oct 2024 02:57:51 -0400 Subject: [PATCH 41/57] fix: issues in wrap hook --- contracts/hooks/UnwrapHook.sol | 14 ++-- deployments/supertoken/surge_addresses.json | 27 ++++++- .../surge_socket_ghst_testnet_addresses.json | 25 +++++++ ...urge_socket_ghst_testnet_verification.json | 70 +++++++++++++++++++ script/helpers/hook/setHook.ts | 6 +- script/helpers/hook/testHook.ts | 45 ++++++++++++ script/helpers/hook/verifyHook.ts | 4 +- src/enums/projectType.ts | 1 + src/enums/projects.ts | 1 + 9 files changed, 180 insertions(+), 13 deletions(-) create mode 100644 deployments/supertoken/surge_socket_ghst_testnet_addresses.json create mode 100644 deployments/supertoken/surge_socket_ghst_testnet_verification.json create mode 100644 script/helpers/hook/testHook.ts diff --git a/contracts/hooks/UnwrapHook.sol b/contracts/hooks/UnwrapHook.sol index c4296df7..c8a2a6e8 100644 --- a/contracts/hooks/UnwrapHook.sol +++ b/contracts/hooks/UnwrapHook.sol @@ -68,16 +68,16 @@ contract UnwrapHook is HookBase { require(msg.value >= ethNeeded, "Insufficient token amount"); // Deposit native ETH to cover the difference - IWrapERC20(socketGhstAddress).deposit{value: ethNeeded}( + IWrapERC20(socketGhstAddress).deposit{value: msg.value}( params_.transferInfo.receiver ); - // Refund excess amount if there's any - uint256 excessAmount = msg.value - ethNeeded; - if (excessAmount > 0) { - (bool success, ) = msg.sender.call{value: excessAmount}(""); - require(success, "Failed to send refund"); - } + // // Refund excess amount if there's any + // uint256 excessAmount = msg.value - ethNeeded; + // if (excessAmount > 0) { + // (bool success, ) = msg.sender.call{value: excessAmount}(""); + // require(success, "Failed to send refund"); + // } } return (params_.transferInfo, bytes("")); diff --git a/deployments/supertoken/surge_addresses.json b/deployments/supertoken/surge_addresses.json index d774419d..42564873 100644 --- a/deployments/supertoken/surge_addresses.json +++ b/deployments/supertoken/surge_addresses.json @@ -48,5 +48,30 @@ } } } + }, + "socket_ghst_testnet": { + "80002": { + "SGHST": { + "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", + "Vault": "0x9De7cB3224a2431358Af81d9Def8100FC2Fd8bDC", + "connectors": { + "631571": { + "FAST": "0xfbE62310Db3e7B501104F662AD7458717D98E8c6" + } + } + } + }, + "631571": { + "SGHST": { + "UnwrapSuperToken": "0xdfa1D6CeDe8848D4bc2bA31726Ee7fcEaB2Fac60", + "Controller": "0xA4b377a04B7591C5F96937890a3306cF949f41a0", + "UnwrapHook": "0xda0E570169fDE5F97afF51a797159f9de0F926d7", + "connectors": { + "80002": { + "FAST": "0xfdb08700CcF55489c277Df5a136Ad8D404a5e1Fd" + } + } + } + } } -} +} \ No newline at end of file diff --git a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json new file mode 100644 index 00000000..e39c8571 --- /dev/null +++ b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json @@ -0,0 +1,25 @@ +{ + "80002": { + "SGHST": { + "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", + "Vault": "0x9De7cB3224a2431358Af81d9Def8100FC2Fd8bDC", + "connectors": { + "631571": { + "FAST": "0xfbE62310Db3e7B501104F662AD7458717D98E8c6" + } + } + } + }, + "631571": { + "SGHST": { + "UnwrapSuperToken": "0xdfa1D6CeDe8848D4bc2bA31726Ee7fcEaB2Fac60", + "Controller": "0xA4b377a04B7591C5F96937890a3306cF949f41a0", + "UnwrapHook": "0xda0E570169fDE5F97afF51a797159f9de0F926d7", + "connectors": { + "80002": { + "FAST": "0xfdb08700CcF55489c277Df5a136Ad8D404a5e1Fd" + } + } + } + } +} \ No newline at end of file diff --git a/deployments/supertoken/surge_socket_ghst_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_testnet_verification.json new file mode 100644 index 00000000..50064ad6 --- /dev/null +++ b/deployments/supertoken/surge_socket_ghst_testnet_verification.json @@ -0,0 +1,70 @@ +{ + "80002": [ + [ + "0xfbE62310Db3e7B501104F662AD7458717D98E8c6", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0x9De7cB3224a2431358Af81d9Def8100FC2Fd8bDC", + "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", + 631571, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0x9De7cB3224a2431358Af81d9Def8100FC2Fd8bDC", + "Vault", + "contracts/bridge/Vault.sol", + [ + "0xF679b8D109b2d23931237Ce948a7D784727c0897" + ] + ] + ], + "631571": [ + [ + "0xfdb08700CcF55489c277Df5a136Ad8D404a5e1Fd", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0xA4b377a04B7591C5F96937890a3306cF949f41a0", + "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", + 80002, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0xda0E570169fDE5F97afF51a797159f9de0F926d7", + "UnwrapHook", + "contracts/hooks/UnwrapHook.sol", + [ + "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668", + "0xA4b377a04B7591C5F96937890a3306cF949f41a0", + "0xdfa1D6CeDe8848D4bc2bA31726Ee7fcEaB2Fac60" + ] + ], + [ + "0xA4b377a04B7591C5F96937890a3306cF949f41a0", + "Controller", + "contracts/bridge/Controller.sol", + [ + "0xdfa1D6CeDe8848D4bc2bA31726Ee7fcEaB2Fac60" + ] + ], + [ + "0xdfa1D6CeDe8848D4bc2bA31726Ee7fcEaB2Fac60", + "UnwrapSuperToken", + "contracts/token/UnwrapSuperToken.sol", + [ + "Socket GHST", + "SGHST", + 18, + "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668", + "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668", + { + "type": "BigNumber", + "hex": "0x00" + } + ] + ] + ] +} \ No newline at end of file diff --git a/script/helpers/hook/setHook.ts b/script/helpers/hook/setHook.ts index f96e39b2..9df5dd63 100644 --- a/script/helpers/hook/setHook.ts +++ b/script/helpers/hook/setHook.ts @@ -1,9 +1,9 @@ import { ethers } from "ethers"; export async function getHookAddress(chain: string): Promise { - const controllerAddress = "0x966539AD75843cA2f59f09A89B269236a7174046"; + const controllerAddress = "0xA4b377a04B7591C5F96937890a3306cF949f41a0"; - const hookAddress = "0x9054cA80bffeA161Fb6cD5c1F69d8DcE7f89bAef"; + const hookAddress = "0xda0E570169fDE5F97afF51a797159f9de0F926d7"; const provider = new ethers.providers.JsonRpcProvider( process.env.POLTER_TESTNET_RPC @@ -41,4 +41,4 @@ export async function getHookAddress(chain: string): Promise { } } -getHookAddress("80002"); +getHookAddress("631571"); diff --git a/script/helpers/hook/testHook.ts b/script/helpers/hook/testHook.ts new file mode 100644 index 00000000..b52ce8b5 --- /dev/null +++ b/script/helpers/hook/testHook.ts @@ -0,0 +1,45 @@ +import { ethers } from "ethers"; + +export async function getHookAddress(chain: string): Promise { + const controllerAddress = "0xA4b377a04B7591C5F96937890a3306cF949f41a0"; + + const provider = new ethers.providers.JsonRpcProvider( + process.env.POLTER_TESTNET_RPC + ); + + const signer = new ethers.Wallet(process.env.OWNER_SIGNER_KEY, provider); + const bridgeABI = [ + "function bridge(address receiver_, uint256 amount_, uint256 msgGasLimit_, address connector_, bytes calldata extraData_, bytes calldata options_ ) external payable", + ]; + + const bridgeContract = new ethers.Contract( + controllerAddress, + bridgeABI, + signer + ); + + const bridgeAmount = ethers.utils.parseEther("120"); + const neededAmount = ethers.utils.parseEther("25"); + const gasLimit = 2000000; + const connector = "0xfdb08700CcF55489c277Df5a136Ad8D404a5e1Fd"; + + try { + console.log("testing hook"); + const tx = await bridgeContract.bridge( + signer.address, + bridgeAmount, + gasLimit, + connector, + "0x", + "0x", + { value: neededAmount, gasLimit: gasLimit } + ); + console.log("tx", tx.hash); + await tx.wait(); + } catch (error) { + console.error("Error fetching hook address:", error); + throw error; + } +} + +getHookAddress("631571"); diff --git a/script/helpers/hook/verifyHook.ts b/script/helpers/hook/verifyHook.ts index 943d56ca..7b098138 100644 --- a/script/helpers/hook/verifyHook.ts +++ b/script/helpers/hook/verifyHook.ts @@ -1,7 +1,7 @@ import { ethers } from "ethers"; export async function getHookAddress(chain: string): Promise { - const address = "0x855127292feea3e1487f88dE3ACd8038de13B178"; + const address = "0xA4b377a04B7591C5F96937890a3306cF949f41a0"; const provider = new ethers.providers.JsonRpcProvider( process.env.POLTER_TESTNET_RPC @@ -20,4 +20,4 @@ export async function getHookAddress(chain: string): Promise { } } -getHookAddress("80002"); +getHookAddress("631571"); diff --git a/src/enums/projectType.ts b/src/enums/projectType.ts index bdf8e6d9..d546a350 100644 --- a/src/enums/projectType.ts +++ b/src/enums/projectType.ts @@ -26,4 +26,5 @@ export const ProjectTypeMap: Record = { [Project.AAVEGOTCHI_BRIDGE_TESTNET]: ProjectType.SUPERBRIDGE, [Project.SOCKET_GHST_TEST_TESTNET]: ProjectType.SUPERTOKEN, [Project.GHST_UNWRAPSUPERTOKEN_TESTNET]: ProjectType.SUPERTOKEN, + [Project.SOCKET_GHST_TESTNET]: ProjectType.SUPERTOKEN, }; diff --git a/src/enums/projects.ts b/src/enums/projects.ts index 60c42ef2..7d96d7d1 100644 --- a/src/enums/projects.ts +++ b/src/enums/projects.ts @@ -23,4 +23,5 @@ export enum Project { AAVEGOTCHI_BRIDGE_TESTNET = "aavegotchi_bridge_testnet", SOCKET_GHST_TEST_TESTNET = "socket_ghst_test_testnet", GHST_UNWRAPSUPERTOKEN_TESTNET = "ghst_unwrapsupertoken_testnet", + SOCKET_GHST_TESTNET = "socket_ghst_testnet", } From 5ed3ca35fff2d5958af59fc7ae51855ae20b5759 Mon Sep 17 00:00:00 2001 From: orionstardust Date: Tue, 29 Oct 2024 12:35:52 -0400 Subject: [PATCH 42/57] fix: remove wrap hook --- contracts/hooks/UnwrapHook.sol | 33 -------------- deployments/supertoken/surge_addresses.json | 14 +++--- .../surge_socket_ghst_testnet_addresses.json | 14 +++--- ...urge_socket_ghst_testnet_verification.json | 30 ++++++------- script/helpers/hook/setHook.ts | 4 +- script/helpers/hook/testHook.ts | 45 ------------------- script/helpers/hook/verifyHook.ts | 2 +- 7 files changed, 30 insertions(+), 112 deletions(-) delete mode 100644 script/helpers/hook/testHook.ts diff --git a/contracts/hooks/UnwrapHook.sol b/contracts/hooks/UnwrapHook.sol index c8a2a6e8..4a05bdee 100644 --- a/contracts/hooks/UnwrapHook.sol +++ b/contracts/hooks/UnwrapHook.sol @@ -47,39 +47,6 @@ contract UnwrapHook is HookBase { isVaultOrController returns (TransferInfo memory transferInfo, bytes memory postHookData) { - // Check if user's wrapped GHST balance is enough, if not deposit ETH - if ( - params_.transferInfo.amount > - IWrapERC20(socketGhstAddress).balanceOf( - params_.transferInfo.receiver - ) - ) { - //Calculate how much is needed to cover the deposit - uint256 ethNeeded = params_.transferInfo.amount - - IWrapERC20(socketGhstAddress).balanceOf( - params_.transferInfo.receiver - ); - - //Revert if the user doesn't have enough - require( - params_.transferInfo.receiver.balance >= ethNeeded, - "Insufficient balance" - ); - require(msg.value >= ethNeeded, "Insufficient token amount"); - - // Deposit native ETH to cover the difference - IWrapERC20(socketGhstAddress).deposit{value: msg.value}( - params_.transferInfo.receiver - ); - - // // Refund excess amount if there's any - // uint256 excessAmount = msg.value - ethNeeded; - // if (excessAmount > 0) { - // (bool success, ) = msg.sender.call{value: excessAmount}(""); - // require(success, "Failed to send refund"); - // } - } - return (params_.transferInfo, bytes("")); } diff --git a/deployments/supertoken/surge_addresses.json b/deployments/supertoken/surge_addresses.json index 42564873..a0c2a4ff 100644 --- a/deployments/supertoken/surge_addresses.json +++ b/deployments/supertoken/surge_addresses.json @@ -53,25 +53,25 @@ "80002": { "SGHST": { "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0x9De7cB3224a2431358Af81d9Def8100FC2Fd8bDC", + "Vault": "0x5c281776a76f358f64BB8Fe3E9D375B629003f99", "connectors": { "631571": { - "FAST": "0xfbE62310Db3e7B501104F662AD7458717D98E8c6" + "FAST": "0xbDc4521612f17Cd4dE9A37977A07Ec2aBCDef016" } } } }, "631571": { "SGHST": { - "UnwrapSuperToken": "0xdfa1D6CeDe8848D4bc2bA31726Ee7fcEaB2Fac60", - "Controller": "0xA4b377a04B7591C5F96937890a3306cF949f41a0", - "UnwrapHook": "0xda0E570169fDE5F97afF51a797159f9de0F926d7", + "UnwrapSuperToken": "0x9647B3144c943C0ee817A2eAD08acf864B98034b", + "Controller": "0x848d95fc52Ee5C7F145CB8A444d814F0183832e0", + "UnwrapHook": "0xaCD22bD3306A24748f340DA8eF924012b0613387", "connectors": { "80002": { - "FAST": "0xfdb08700CcF55489c277Df5a136Ad8D404a5e1Fd" + "FAST": "0xA8418aa189d35e531D87adcC3B4b6Ac2cd4Bd16c" } } } } } -} \ No newline at end of file +} diff --git a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json index e39c8571..a1d7cfa4 100644 --- a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json +++ b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json @@ -2,24 +2,24 @@ "80002": { "SGHST": { "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0x9De7cB3224a2431358Af81d9Def8100FC2Fd8bDC", + "Vault": "0x5c281776a76f358f64BB8Fe3E9D375B629003f99", "connectors": { "631571": { - "FAST": "0xfbE62310Db3e7B501104F662AD7458717D98E8c6" + "FAST": "0xbDc4521612f17Cd4dE9A37977A07Ec2aBCDef016" } } } }, "631571": { "SGHST": { - "UnwrapSuperToken": "0xdfa1D6CeDe8848D4bc2bA31726Ee7fcEaB2Fac60", - "Controller": "0xA4b377a04B7591C5F96937890a3306cF949f41a0", - "UnwrapHook": "0xda0E570169fDE5F97afF51a797159f9de0F926d7", + "UnwrapSuperToken": "0x9647B3144c943C0ee817A2eAD08acf864B98034b", + "Controller": "0x848d95fc52Ee5C7F145CB8A444d814F0183832e0", + "UnwrapHook": "0xaCD22bD3306A24748f340DA8eF924012b0613387", "connectors": { "80002": { - "FAST": "0xfdb08700CcF55489c277Df5a136Ad8D404a5e1Fd" + "FAST": "0xA8418aa189d35e531D87adcC3B4b6Ac2cd4Bd16c" } } } } -} \ No newline at end of file +} diff --git a/deployments/supertoken/surge_socket_ghst_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_testnet_verification.json index 50064ad6..65f59815 100644 --- a/deployments/supertoken/surge_socket_ghst_testnet_verification.json +++ b/deployments/supertoken/surge_socket_ghst_testnet_verification.json @@ -1,57 +1,53 @@ { "80002": [ [ - "0xfbE62310Db3e7B501104F662AD7458717D98E8c6", + "0xbDc4521612f17Cd4dE9A37977A07Ec2aBCDef016", "ConnectorPlug", "contracts/ConnectorPlug.sol", [ - "0x9De7cB3224a2431358Af81d9Def8100FC2Fd8bDC", + "0x5c281776a76f358f64BB8Fe3E9D375B629003f99", "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", 631571, "0x0000000000000000000000000000000000000000000000000000000000000000" ] ], [ - "0x9De7cB3224a2431358Af81d9Def8100FC2Fd8bDC", + "0x5c281776a76f358f64BB8Fe3E9D375B629003f99", "Vault", "contracts/bridge/Vault.sol", - [ - "0xF679b8D109b2d23931237Ce948a7D784727c0897" - ] + ["0xF679b8D109b2d23931237Ce948a7D784727c0897"] ] ], "631571": [ [ - "0xfdb08700CcF55489c277Df5a136Ad8D404a5e1Fd", + "0xA8418aa189d35e531D87adcC3B4b6Ac2cd4Bd16c", "ConnectorPlug", "contracts/ConnectorPlug.sol", [ - "0xA4b377a04B7591C5F96937890a3306cF949f41a0", + "0x848d95fc52Ee5C7F145CB8A444d814F0183832e0", "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", 80002, "0x0000000000000000000000000000000000000000000000000000000000000000" ] ], [ - "0xda0E570169fDE5F97afF51a797159f9de0F926d7", + "0xaCD22bD3306A24748f340DA8eF924012b0613387", "UnwrapHook", "contracts/hooks/UnwrapHook.sol", [ "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668", - "0xA4b377a04B7591C5F96937890a3306cF949f41a0", - "0xdfa1D6CeDe8848D4bc2bA31726Ee7fcEaB2Fac60" + "0x848d95fc52Ee5C7F145CB8A444d814F0183832e0", + "0x9647B3144c943C0ee817A2eAD08acf864B98034b" ] ], [ - "0xA4b377a04B7591C5F96937890a3306cF949f41a0", + "0x848d95fc52Ee5C7F145CB8A444d814F0183832e0", "Controller", "contracts/bridge/Controller.sol", - [ - "0xdfa1D6CeDe8848D4bc2bA31726Ee7fcEaB2Fac60" - ] + ["0x9647B3144c943C0ee817A2eAD08acf864B98034b"] ], [ - "0xdfa1D6CeDe8848D4bc2bA31726Ee7fcEaB2Fac60", + "0x9647B3144c943C0ee817A2eAD08acf864B98034b", "UnwrapSuperToken", "contracts/token/UnwrapSuperToken.sol", [ @@ -67,4 +63,4 @@ ] ] ] -} \ No newline at end of file +} diff --git a/script/helpers/hook/setHook.ts b/script/helpers/hook/setHook.ts index 9df5dd63..3453aed5 100644 --- a/script/helpers/hook/setHook.ts +++ b/script/helpers/hook/setHook.ts @@ -1,9 +1,9 @@ import { ethers } from "ethers"; export async function getHookAddress(chain: string): Promise { - const controllerAddress = "0xA4b377a04B7591C5F96937890a3306cF949f41a0"; + const controllerAddress = "0x848d95fc52Ee5C7F145CB8A444d814F0183832e0"; - const hookAddress = "0xda0E570169fDE5F97afF51a797159f9de0F926d7"; + const hookAddress = "0xaCD22bD3306A24748f340DA8eF924012b0613387"; const provider = new ethers.providers.JsonRpcProvider( process.env.POLTER_TESTNET_RPC diff --git a/script/helpers/hook/testHook.ts b/script/helpers/hook/testHook.ts deleted file mode 100644 index b52ce8b5..00000000 --- a/script/helpers/hook/testHook.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { ethers } from "ethers"; - -export async function getHookAddress(chain: string): Promise { - const controllerAddress = "0xA4b377a04B7591C5F96937890a3306cF949f41a0"; - - const provider = new ethers.providers.JsonRpcProvider( - process.env.POLTER_TESTNET_RPC - ); - - const signer = new ethers.Wallet(process.env.OWNER_SIGNER_KEY, provider); - const bridgeABI = [ - "function bridge(address receiver_, uint256 amount_, uint256 msgGasLimit_, address connector_, bytes calldata extraData_, bytes calldata options_ ) external payable", - ]; - - const bridgeContract = new ethers.Contract( - controllerAddress, - bridgeABI, - signer - ); - - const bridgeAmount = ethers.utils.parseEther("120"); - const neededAmount = ethers.utils.parseEther("25"); - const gasLimit = 2000000; - const connector = "0xfdb08700CcF55489c277Df5a136Ad8D404a5e1Fd"; - - try { - console.log("testing hook"); - const tx = await bridgeContract.bridge( - signer.address, - bridgeAmount, - gasLimit, - connector, - "0x", - "0x", - { value: neededAmount, gasLimit: gasLimit } - ); - console.log("tx", tx.hash); - await tx.wait(); - } catch (error) { - console.error("Error fetching hook address:", error); - throw error; - } -} - -getHookAddress("631571"); diff --git a/script/helpers/hook/verifyHook.ts b/script/helpers/hook/verifyHook.ts index 7b098138..29f2806b 100644 --- a/script/helpers/hook/verifyHook.ts +++ b/script/helpers/hook/verifyHook.ts @@ -1,7 +1,7 @@ import { ethers } from "ethers"; export async function getHookAddress(chain: string): Promise { - const address = "0xA4b377a04B7591C5F96937890a3306cF949f41a0"; + const address = "0x848d95fc52Ee5C7F145CB8A444d814F0183832e0"; const provider = new ethers.providers.JsonRpcProvider( process.env.POLTER_TESTNET_RPC From 0af169c4e2ab166132e0ab03337c90ff36a8fb2d Mon Sep 17 00:00:00 2001 From: orionstardust Date: Wed, 30 Oct 2024 23:37:08 -0400 Subject: [PATCH 43/57] fix: rollback for wrap hook --- contracts/bridge/Base.sol | 6 +++--- contracts/hooks/Controller_YieldLimitExecHook.sol | 1 - contracts/hooks/LimitExecutionHook.sol | 1 - contracts/hooks/LimitHook.sol | 1 - contracts/hooks/UnwrapHook.sol | 1 - contracts/hooks/Vault_YieldLimitExecHook.sol | 8 +------- contracts/interfaces/IHook.sol | 1 - contracts/interfaces/IWrapERC20.sol | 2 +- 8 files changed, 5 insertions(+), 16 deletions(-) diff --git a/contracts/bridge/Base.sol b/contracts/bridge/Base.sol index 30317926..0c0fa5a8 100644 --- a/contracts/bridge/Base.sol +++ b/contracts/bridge/Base.sol @@ -112,9 +112,9 @@ abstract contract Base is ReentrancyGuard, IBridge, RescueBase { revert InsufficientMsgValue(); if (address(hook__) != address(0)) { - (transferInfo, postHookData) = hook__.srcPreHookCall{ - value: msg.value - }(SrcPreHookCallParams(connector_, msg.sender, transferInfo_)); + (transferInfo, postHookData) = hook__.srcPreHookCall( + SrcPreHookCallParams(connector_, msg.sender, transferInfo_) + ); } else { transferInfo = transferInfo_; } diff --git a/contracts/hooks/Controller_YieldLimitExecHook.sol b/contracts/hooks/Controller_YieldLimitExecHook.sol index 195c24e5..c343924b 100644 --- a/contracts/hooks/Controller_YieldLimitExecHook.sol +++ b/contracts/hooks/Controller_YieldLimitExecHook.sol @@ -60,7 +60,6 @@ contract Controller_YieldLimitExecHook is LimitExecutionHook { SrcPreHookCallParams calldata params_ ) public - payable override notShutdown returns (TransferInfo memory transferInfo, bytes memory postHookData) diff --git a/contracts/hooks/LimitExecutionHook.sol b/contracts/hooks/LimitExecutionHook.sol index 960034b3..12511dd7 100644 --- a/contracts/hooks/LimitExecutionHook.sol +++ b/contracts/hooks/LimitExecutionHook.sol @@ -36,7 +36,6 @@ contract LimitExecutionHook is LimitPlugin, ConnectorPoolPlugin { SrcPreHookCallParams calldata params_ ) public - payable virtual isVaultOrController returns (TransferInfo memory, bytes memory) diff --git a/contracts/hooks/LimitHook.sol b/contracts/hooks/LimitHook.sol index afb2f3a1..564e2f90 100644 --- a/contracts/hooks/LimitHook.sol +++ b/contracts/hooks/LimitHook.sol @@ -26,7 +26,6 @@ contract LimitHook is LimitPlugin, ConnectorPoolPlugin { SrcPreHookCallParams memory params_ ) external - payable isVaultOrController returns (TransferInfo memory transferInfo, bytes memory postHookData) { diff --git a/contracts/hooks/UnwrapHook.sol b/contracts/hooks/UnwrapHook.sol index 4a05bdee..d847b2cc 100644 --- a/contracts/hooks/UnwrapHook.sol +++ b/contracts/hooks/UnwrapHook.sol @@ -43,7 +43,6 @@ contract UnwrapHook is HookBase { SrcPreHookCallParams calldata params_ ) external - payable isVaultOrController returns (TransferInfo memory transferInfo, bytes memory postHookData) { diff --git a/contracts/hooks/Vault_YieldLimitExecHook.sol b/contracts/hooks/Vault_YieldLimitExecHook.sol index 459ae615..23ee7fde 100644 --- a/contracts/hooks/Vault_YieldLimitExecHook.sol +++ b/contracts/hooks/Vault_YieldLimitExecHook.sol @@ -80,13 +80,7 @@ contract Vault_YieldLimitExecHook is LimitExecutionHook { */ function srcPreHookCall( SrcPreHookCallParams calldata params_ - ) - public - payable - override - notShutdown - returns (TransferInfo memory, bytes memory) - { + ) public override notShutdown returns (TransferInfo memory, bytes memory) { totalIdle += params_.transferInfo.amount; return super.srcPreHookCall(params_); } diff --git a/contracts/interfaces/IHook.sol b/contracts/interfaces/IHook.sol index 81a2fb70..1403b017 100644 --- a/contracts/interfaces/IHook.sol +++ b/contracts/interfaces/IHook.sol @@ -14,7 +14,6 @@ interface IHook { SrcPreHookCallParams calldata params_ ) external - payable returns (TransferInfo memory transferInfo, bytes memory postHookData); function srcPostHookCall( diff --git a/contracts/interfaces/IWrapERC20.sol b/contracts/interfaces/IWrapERC20.sol index dcc3a5a2..c77e86d0 100644 --- a/contracts/interfaces/IWrapERC20.sol +++ b/contracts/interfaces/IWrapERC20.sol @@ -6,7 +6,7 @@ interface IWrapERC20 { function burn(address burner_, uint256 amount_) external; - function deposit(address to_) external payable; + function deposit(uint256 amount_, address to_) external; function withdraw(uint256 amount_, address to_) external; From 92aeecddcfc2a7d5e2e062f8c095d0545906259b Mon Sep 17 00:00:00 2001 From: orionstardust Date: Thu, 31 Oct 2024 02:12:42 -0400 Subject: [PATCH 44/57] feat: add fee logic of bridging to hook --- contracts/hooks/UnwrapHook.sol | 40 ++++++-- deployments/supertoken/surge_addresses.json | 63 ++---------- ...st_unwrapsupertoken_testnet_addresses.json | 25 ----- ...unwrapsupertoken_testnet_verification.json | 66 ------------- ...ge_socket_ghst_test_testnet_addresses.json | 25 ----- ...socket_ghst_test_testnet_verification.json | 66 ------------- .../surge_socket_ghst_testnet_addresses.json | 13 +-- ...urge_socket_ghst_testnet_verification.json | 34 ++++--- hardhat.config.ts | 27 +++-- script/constants/config.ts | 6 ++ script/deploy/deploy.ts | 2 +- script/deploy/deployHook.ts | 12 ++- script/helpers/hook/setHook.ts | 47 +++++++-- script/helpers/hook/testHook.ts | 98 +++++++++++++++++++ 14 files changed, 241 insertions(+), 283 deletions(-) delete mode 100644 deployments/supertoken/surge_ghst_unwrapsupertoken_testnet_addresses.json delete mode 100644 deployments/supertoken/surge_ghst_unwrapsupertoken_testnet_verification.json delete mode 100644 deployments/supertoken/surge_socket_ghst_test_testnet_addresses.json delete mode 100644 deployments/supertoken/surge_socket_ghst_test_testnet_verification.json create mode 100644 script/helpers/hook/testHook.ts diff --git a/contracts/hooks/UnwrapHook.sol b/contracts/hooks/UnwrapHook.sol index d847b2cc..99d72898 100644 --- a/contracts/hooks/UnwrapHook.sol +++ b/contracts/hooks/UnwrapHook.sol @@ -5,6 +5,8 @@ import "../common/Errors.sol"; import "../common/Constants.sol"; import "./HookBase.sol"; import {IWrapERC20} from "../interfaces/IWrapERC20.sol"; +import "solmate/tokens/ERC20.sol"; +import "solmate/utils/SafeTransferLib.sol"; /** * @title Contract for super token and vault @@ -13,7 +15,10 @@ import {IWrapERC20} from "../interfaces/IWrapERC20.sol"; * to support any type of message bridge. */ contract UnwrapHook is HookBase { - address public socketGhstAddress; + using SafeTransferLib for ERC20; + + address public ghstAddress; + address public treasuryAddress; /** * @notice Constructor for creating a new SuperToken. @@ -21,20 +26,24 @@ contract UnwrapHook is HookBase { constructor( address owner_, address controller_, - address socketGhstAddress_ + address ghstAddress_, + address treasuryAddress_ ) HookBase(owner_, controller_) { - socketGhstAddress = socketGhstAddress_; + ghstAddress = ghstAddress_; + treasuryAddress_ = treasuryAddress; } // this should be run in Geist/Polter function dstPostHookCall( DstPostHookCallParams calldata params_ ) external isVaultOrController returns (CacheData memory cacheData) { - // unwrap - IWrapERC20(socketGhstAddress).withdraw( - params_.transferInfo.amount, - params_.transferInfo.receiver - ); + if (block.chainid == 63157 || block.chainid == 631571) { + // unwrap for Geist network + IWrapERC20(ghstAddress).withdraw( + params_.transferInfo.amount, + params_.transferInfo.receiver + ); + } cacheData = CacheData(bytes(""), abi.encode(0)); } @@ -46,7 +55,20 @@ contract UnwrapHook is HookBase { isVaultOrController returns (TransferInfo memory transferInfo, bytes memory postHookData) { - return (params_.transferInfo, bytes("")); + uint256 fee = params_.transferInfo.amount / 1000; // fee: 0.1% + + // Transfer the fee to the treasury address + if (fee > 0) { + ERC20(ghstAddress).safeTransferFrom( + params_.transferInfo.receiver, + treasuryAddress, + fee + ); + } + + transferInfo = params_.transferInfo; + transferInfo.amount = params_.transferInfo.amount - fee; // Deduct the fee + postHookData = hex""; } function srcPostHookCall( diff --git a/deployments/supertoken/surge_addresses.json b/deployments/supertoken/surge_addresses.json index a0c2a4ff..82cf3f93 100644 --- a/deployments/supertoken/surge_addresses.json +++ b/deployments/supertoken/surge_addresses.json @@ -1,74 +1,25 @@ { - "socket_ghst_test_testnet": { - "80002": { - "SGHST": { - "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0x1eD34c0C9b0f08Bb013CD16E4b75A77cf47cE919", - "connectors": { - "631571": { - "FAST": "0x978c0D945DcAa716fe24bb231eAeeA703e82C439" - } - } - } - }, - "631571": { - "SGHST": { - "SuperToken": "0x59C5b4d348F4D7b97643884c1486BfF69faB4597", - "Controller": "0x425096b13F41405653392438ad33cebB598bC174", - "UnwrapHook": "0x8602AA51da2a6769DEBea9bf1Bcd14737b617a37", - "connectors": { - "80002": { - "FAST": "0xC8c8E45F56937F37c5BdDf38e1A321Cf5A3Ba911" - } - } - } - } - }, - "ghst_unwrapsupertoken_testnet": { - "80002": { - "SGHST": { - "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0x252e9438f70ECC17DfCC2373303fC6e5709d7F97", - "connectors": { - "631571": { - "FAST": "0xb7ef8752398476977B924Acf5ef015c6cE71bA12" - } - } - } - }, - "631571": { - "SGHST": { - "UnwrapSuperToken": "0x7C98F4f7272ad2D6F95Db137fbB80C2eFb94aD39", - "Controller": "0x966539AD75843cA2f59f09A89B269236a7174046", - "UnwrapHook": "0x9054cA80bffeA161Fb6cD5c1F69d8DcE7f89bAef", - "connectors": { - "80002": { - "FAST": "0x35D8Ef4CF5EA943212d1Ca65A4EDfDb2D07E14EE" - } - } - } - } - }, "socket_ghst_testnet": { "80002": { "SGHST": { "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0x5c281776a76f358f64BB8Fe3E9D375B629003f99", + "Vault": "0x24be569085c3e4b6AeBa2dfB7555E51290AA4350", + "UnwrapHook": "0x2d25dB3BC421ea93d0A150D375E3E882cdcf60c5", "connectors": { "631571": { - "FAST": "0xbDc4521612f17Cd4dE9A37977A07Ec2aBCDef016" + "FAST": "0xC8838B87fD1b979D3982A2ffa7CBA3456cE1c27b" } } } }, "631571": { "SGHST": { - "UnwrapSuperToken": "0x9647B3144c943C0ee817A2eAD08acf864B98034b", - "Controller": "0x848d95fc52Ee5C7F145CB8A444d814F0183832e0", - "UnwrapHook": "0xaCD22bD3306A24748f340DA8eF924012b0613387", + "UnwrapSuperToken": "0x33A5BBa7C07E6d30FC10e5Cb0847b925A7e7496F", + "Controller": "0x42e5E7c6fE23f01bD1388C1ac2Bc0417007C016b", + "UnwrapHook": "0xF616d065b25ae91aBFB0B4a1729c7dD73597C1C5", "connectors": { "80002": { - "FAST": "0xA8418aa189d35e531D87adcC3B4b6Ac2cd4Bd16c" + "FAST": "0xCc3fc1Ebc23C5Cb3674cA51f77eE58A9acaEcb25" } } } diff --git a/deployments/supertoken/surge_ghst_unwrapsupertoken_testnet_addresses.json b/deployments/supertoken/surge_ghst_unwrapsupertoken_testnet_addresses.json deleted file mode 100644 index ce082a89..00000000 --- a/deployments/supertoken/surge_ghst_unwrapsupertoken_testnet_addresses.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "80002": { - "SGHST": { - "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0x252e9438f70ECC17DfCC2373303fC6e5709d7F97", - "connectors": { - "631571": { - "FAST": "0xb7ef8752398476977B924Acf5ef015c6cE71bA12" - } - } - } - }, - "631571": { - "SGHST": { - "UnwrapSuperToken": "0x7C98F4f7272ad2D6F95Db137fbB80C2eFb94aD39", - "Controller": "0x966539AD75843cA2f59f09A89B269236a7174046", - "UnwrapHook": "0x9054cA80bffeA161Fb6cD5c1F69d8DcE7f89bAef", - "connectors": { - "80002": { - "FAST": "0x35D8Ef4CF5EA943212d1Ca65A4EDfDb2D07E14EE" - } - } - } - } -} diff --git a/deployments/supertoken/surge_ghst_unwrapsupertoken_testnet_verification.json b/deployments/supertoken/surge_ghst_unwrapsupertoken_testnet_verification.json deleted file mode 100644 index 450df1e8..00000000 --- a/deployments/supertoken/surge_ghst_unwrapsupertoken_testnet_verification.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "80002": [ - [ - "0xb7ef8752398476977B924Acf5ef015c6cE71bA12", - "ConnectorPlug", - "contracts/ConnectorPlug.sol", - [ - "0x252e9438f70ECC17DfCC2373303fC6e5709d7F97", - "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", - 631571, - "0x0000000000000000000000000000000000000000000000000000000000000000" - ] - ], - [ - "0x252e9438f70ECC17DfCC2373303fC6e5709d7F97", - "Vault", - "contracts/bridge/Vault.sol", - ["0xF679b8D109b2d23931237Ce948a7D784727c0897"] - ] - ], - "631571": [ - [ - "0x35D8Ef4CF5EA943212d1Ca65A4EDfDb2D07E14EE", - "ConnectorPlug", - "contracts/ConnectorPlug.sol", - [ - "0x966539AD75843cA2f59f09A89B269236a7174046", - "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", - 80002, - "0x0000000000000000000000000000000000000000000000000000000000000000" - ] - ], - [ - "0x9054cA80bffeA161Fb6cD5c1F69d8DcE7f89bAef", - "UnwrapHook", - "contracts/hooks/UnwrapHook.sol", - [ - "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - "0x966539AD75843cA2f59f09A89B269236a7174046", - "0x7C98F4f7272ad2D6F95Db137fbB80C2eFb94aD39" - ] - ], - [ - "0x966539AD75843cA2f59f09A89B269236a7174046", - "Controller", - "contracts/bridge/Controller.sol", - ["0x7C98F4f7272ad2D6F95Db137fbB80C2eFb94aD39"] - ], - [ - "0x7C98F4f7272ad2D6F95Db137fbB80C2eFb94aD39", - "UnwrapSuperToken", - "contracts/token/UnwrapSuperToken.sol", - [ - "Aavegotchi Socket GHST", - "SGHST", - 18, - "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - { - "type": "BigNumber", - "hex": "0x00" - } - ] - ] - ] -} diff --git a/deployments/supertoken/surge_socket_ghst_test_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_test_testnet_addresses.json deleted file mode 100644 index f5161a42..00000000 --- a/deployments/supertoken/surge_socket_ghst_test_testnet_addresses.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "80002": { - "SGHST": { - "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0x1eD34c0C9b0f08Bb013CD16E4b75A77cf47cE919", - "connectors": { - "631571": { - "FAST": "0x978c0D945DcAa716fe24bb231eAeeA703e82C439" - } - } - } - }, - "631571": { - "SGHST": { - "SuperToken": "0x59C5b4d348F4D7b97643884c1486BfF69faB4597", - "Controller": "0x425096b13F41405653392438ad33cebB598bC174", - "UnwrapHook": "0x8602AA51da2a6769DEBea9bf1Bcd14737b617a37", - "connectors": { - "80002": { - "FAST": "0xC8c8E45F56937F37c5BdDf38e1A321Cf5A3Ba911" - } - } - } - } -} diff --git a/deployments/supertoken/surge_socket_ghst_test_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_test_testnet_verification.json deleted file mode 100644 index 5394d072..00000000 --- a/deployments/supertoken/surge_socket_ghst_test_testnet_verification.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "80002": [ - [ - "0x978c0D945DcAa716fe24bb231eAeeA703e82C439", - "ConnectorPlug", - "contracts/ConnectorPlug.sol", - [ - "0x1eD34c0C9b0f08Bb013CD16E4b75A77cf47cE919", - "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", - 631571, - "0x0000000000000000000000000000000000000000000000000000000000000000" - ] - ], - [ - "0x1eD34c0C9b0f08Bb013CD16E4b75A77cf47cE919", - "Vault", - "contracts/bridge/Vault.sol", - ["0xF679b8D109b2d23931237Ce948a7D784727c0897"] - ] - ], - "631571": [ - [ - "0xC8c8E45F56937F37c5BdDf38e1A321Cf5A3Ba911", - "ConnectorPlug", - "contracts/ConnectorPlug.sol", - [ - "0x425096b13F41405653392438ad33cebB598bC174", - "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", - 80002, - "0x0000000000000000000000000000000000000000000000000000000000000000" - ] - ], - [ - "0x8602AA51da2a6769DEBea9bf1Bcd14737b617a37", - "UnwrapHook", - "contracts/hooks/UnwrapHook.sol", - [ - "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - "0x425096b13F41405653392438ad33cebB598bC174", - "0x59C5b4d348F4D7b97643884c1486BfF69faB4597" - ] - ], - [ - "0x425096b13F41405653392438ad33cebB598bC174", - "Controller", - "contracts/bridge/Controller.sol", - ["0x59C5b4d348F4D7b97643884c1486BfF69faB4597"] - ], - [ - "0x59C5b4d348F4D7b97643884c1486BfF69faB4597", - "SuperToken", - "contracts/token/SuperToken.sol", - [ - "Aavegotchi Socket GHST", - "SGHST", - 18, - "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - { - "type": "BigNumber", - "hex": "0x00" - } - ] - ] - ] -} diff --git a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json index a1d7cfa4..3262c8f2 100644 --- a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json +++ b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json @@ -2,22 +2,23 @@ "80002": { "SGHST": { "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0x5c281776a76f358f64BB8Fe3E9D375B629003f99", + "Vault": "0x24be569085c3e4b6AeBa2dfB7555E51290AA4350", + "UnwrapHook": "0x2d25dB3BC421ea93d0A150D375E3E882cdcf60c5", "connectors": { "631571": { - "FAST": "0xbDc4521612f17Cd4dE9A37977A07Ec2aBCDef016" + "FAST": "0xC8838B87fD1b979D3982A2ffa7CBA3456cE1c27b" } } } }, "631571": { "SGHST": { - "UnwrapSuperToken": "0x9647B3144c943C0ee817A2eAD08acf864B98034b", - "Controller": "0x848d95fc52Ee5C7F145CB8A444d814F0183832e0", - "UnwrapHook": "0xaCD22bD3306A24748f340DA8eF924012b0613387", + "UnwrapSuperToken": "0x33A5BBa7C07E6d30FC10e5Cb0847b925A7e7496F", + "Controller": "0x42e5E7c6fE23f01bD1388C1ac2Bc0417007C016b", + "UnwrapHook": "0xF616d065b25ae91aBFB0B4a1729c7dD73597C1C5", "connectors": { "80002": { - "FAST": "0xA8418aa189d35e531D87adcC3B4b6Ac2cd4Bd16c" + "FAST": "0xCc3fc1Ebc23C5Cb3674cA51f77eE58A9acaEcb25" } } } diff --git a/deployments/supertoken/surge_socket_ghst_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_testnet_verification.json index 65f59815..b3dcb6bc 100644 --- a/deployments/supertoken/surge_socket_ghst_testnet_verification.json +++ b/deployments/supertoken/surge_socket_ghst_testnet_verification.json @@ -1,18 +1,29 @@ { "80002": [ [ - "0xbDc4521612f17Cd4dE9A37977A07Ec2aBCDef016", + "0xC8838B87fD1b979D3982A2ffa7CBA3456cE1c27b", "ConnectorPlug", "contracts/ConnectorPlug.sol", [ - "0x5c281776a76f358f64BB8Fe3E9D375B629003f99", + "0x24be569085c3e4b6AeBa2dfB7555E51290AA4350", "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", 631571, "0x0000000000000000000000000000000000000000000000000000000000000000" ] ], [ - "0x5c281776a76f358f64BB8Fe3E9D375B629003f99", + "0x2d25dB3BC421ea93d0A150D375E3E882cdcf60c5", + "UnwrapHook", + "contracts/hooks/UnwrapHook.sol", + [ + "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668", + "0x24be569085c3e4b6AeBa2dfB7555E51290AA4350", + "0xF679b8D109b2d23931237Ce948a7D784727c0897", + "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668" + ] + ], + [ + "0x24be569085c3e4b6AeBa2dfB7555E51290AA4350", "Vault", "contracts/bridge/Vault.sol", ["0xF679b8D109b2d23931237Ce948a7D784727c0897"] @@ -20,34 +31,35 @@ ], "631571": [ [ - "0xA8418aa189d35e531D87adcC3B4b6Ac2cd4Bd16c", + "0xCc3fc1Ebc23C5Cb3674cA51f77eE58A9acaEcb25", "ConnectorPlug", "contracts/ConnectorPlug.sol", [ - "0x848d95fc52Ee5C7F145CB8A444d814F0183832e0", + "0x42e5E7c6fE23f01bD1388C1ac2Bc0417007C016b", "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", 80002, "0x0000000000000000000000000000000000000000000000000000000000000000" ] ], [ - "0xaCD22bD3306A24748f340DA8eF924012b0613387", + "0xF616d065b25ae91aBFB0B4a1729c7dD73597C1C5", "UnwrapHook", "contracts/hooks/UnwrapHook.sol", [ "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668", - "0x848d95fc52Ee5C7F145CB8A444d814F0183832e0", - "0x9647B3144c943C0ee817A2eAD08acf864B98034b" + "0x42e5E7c6fE23f01bD1388C1ac2Bc0417007C016b", + "0x33A5BBa7C07E6d30FC10e5Cb0847b925A7e7496F", + "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668" ] ], [ - "0x848d95fc52Ee5C7F145CB8A444d814F0183832e0", + "0x42e5E7c6fE23f01bD1388C1ac2Bc0417007C016b", "Controller", "contracts/bridge/Controller.sol", - ["0x9647B3144c943C0ee817A2eAD08acf864B98034b"] + ["0x33A5BBa7C07E6d30FC10e5Cb0847b925A7e7496F"] ], [ - "0x9647B3144c943C0ee817A2eAD08acf864B98034b", + "0x33A5BBa7C07E6d30FC10e5Cb0847b925A7e7496F", "UnwrapSuperToken", "contracts/token/UnwrapSuperToken.sol", [ diff --git a/hardhat.config.ts b/hardhat.config.ts index 15e20240..f700bf8f 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -43,15 +43,21 @@ function getRemappings() { } export enum CustomNetworks { - POLTER_DEVNET = "polter_devnet", + POLTER_TESTNET = "polter", + POLYGON_AMOY = "amoy", } export const CustomNetworksConfig = { - [CustomNetworks.POLTER_DEVNET]: { + [CustomNetworks.POLTER_TESTNET]: { chainId: 398274, url: process.env.POLTER_DEVNET_RPC || "none", accounts: [`0x${privateKey}`], }, + [CustomNetworks.POLYGON_AMOY]: { + chainId: 80002, + url: process.env.POLYGON_AMOY_RPC || "none", + accounts: [`0x${privateKey}`], + }, }; function getChainConfig(chain: string): NetworkUserConfig { @@ -83,7 +89,8 @@ const liveNetworks = [ HardhatChainName.REYA_CRONOS, HardhatChainName.REYA, HardhatChainName.SYNDR_SEPOLIA_L3, - CustomNetworks.POLTER_DEVNET, + CustomNetworks.POLTER_TESTNET, + CustomNetworks.POLYGON_AMOY, ]; let hardhatNetworkDetails = {}; @@ -116,7 +123,7 @@ const config: HardhatUserConfig = { [HardhatChainName.REYA_CRONOS]: "none", [HardhatChainName.REYA]: "none", [HardhatChainName.AEVO]: "none", - [CustomNetworks.POLTER_DEVNET]: "none", + [CustomNetworks.POLTER_TESTNET]: "none", }, // Custom chains for verification. These are only for verification to work. The hardhat etherscan plugin does not support these chains. customChains: [ @@ -195,13 +202,21 @@ const config: HardhatUserConfig = { }, }, { - network: CustomNetworks.POLTER_DEVNET, - chainId: CustomNetworksConfig[CustomNetworks.POLTER_DEVNET].chainId, + network: CustomNetworks.POLTER_TESTNET, + chainId: CustomNetworksConfig[CustomNetworks.POLTER_TESTNET].chainId, urls: { apiURL: "https://polter-sepolia-explorer-be.devnet.alchemy.com/api", browserURL: "https://polter-sepolia-explorer.devnet.alchemy.com/", }, }, + { + network: CustomNetworks.POLYGON_AMOY, + chainId: CustomNetworksConfig[CustomNetworks.POLYGON_AMOY].chainId, + urls: { + apiURL: "https://polter-sepolia-explorer-be.devnet.alchemy.com/api", + browserURL: "https://amoy.polygonscan.com/", + }, + }, ], }, networks: { diff --git a/script/constants/config.ts b/script/constants/config.ts index a7a52221..7cb6c2ea 100644 --- a/script/constants/config.ts +++ b/script/constants/config.ts @@ -21,6 +21,12 @@ export const getOwnerSignerKey = () => { return process.env.OWNER_SIGNER_KEY; }; +export const getTreasury = () => { + if (!process.env.TREASURY_ADDRESS) + throw Error("Socket treasury address not present"); + return process.env.TREASURY_ADDRESS; +}; + let deploymentMode: DeploymentMode; // use prod as default if not mentioned export const getMode = () => { diff --git a/script/deploy/deploy.ts b/script/deploy/deploy.ts index 19d4c964..c17c34d2 100644 --- a/script/deploy/deploy.ts +++ b/script/deploy/deploy.ts @@ -443,7 +443,7 @@ export const deployVaultChainContracts = async ( ? AddressZero : vault.address; - // deployParams = await deployHookContracts(deployParams, allAddresses, false); + deployParams = await deployHookContracts(deployParams, allAddresses, false); console.log( deployParams.currentChainSlug, " Vault Chain Contracts deployed! ✔" diff --git a/script/deploy/deployHook.ts b/script/deploy/deployHook.ts index 38c233df..c7e9e71f 100644 --- a/script/deploy/deployHook.ts +++ b/script/deploy/deployHook.ts @@ -1,5 +1,10 @@ import { Contract } from "ethers"; -import { getOwner, isSuperBridge, isSuperToken } from "../constants/config"; +import { + getOwner, + getTreasury, + isSuperBridge, + isSuperToken, +} from "../constants/config"; import { getOrDeploy } from "../helpers"; import { Hooks, @@ -114,7 +119,10 @@ export const deployHookContracts = async ( args = [ getOwner(), bridgeAddress, - deployParams.addresses[TokenContracts.UnwrapSuperToken], + deployParams.addresses[TokenContracts.UnwrapSuperToken] + ? deployParams.addresses[TokenContracts.UnwrapSuperToken] + : deployParams.addresses[TokenContracts.NonMintableToken], + getTreasury(), ]; } diff --git a/script/helpers/hook/setHook.ts b/script/helpers/hook/setHook.ts index 3453aed5..ef4bb77b 100644 --- a/script/helpers/hook/setHook.ts +++ b/script/helpers/hook/setHook.ts @@ -1,13 +1,33 @@ import { ethers } from "ethers"; +import { network } from "hardhat"; -export async function getHookAddress(chain: string): Promise { - const controllerAddress = "0x848d95fc52Ee5C7F145CB8A444d814F0183832e0"; +export const main = async () => { + let controllerAddress = ""; + let hookAddress = ""; + let provider; - const hookAddress = "0xaCD22bD3306A24748f340DA8eF924012b0613387"; - - const provider = new ethers.providers.JsonRpcProvider( - process.env.POLTER_TESTNET_RPC - ); + if (network.name === "polter") { + // polter-testnet + controllerAddress = "0x42e5E7c6fE23f01bD1388C1ac2Bc0417007C016b"; + hookAddress = "0xF616d065b25ae91aBFB0B4a1729c7dD73597C1C5"; + provider = new ethers.providers.JsonRpcProvider( + process.env.POLTER_TESTNET_RPC + ); + } else if (network.name === "amoy") { + controllerAddress = "0x24be569085c3e4b6AeBa2dfB7555E51290AA4350"; + hookAddress = "0x2d25dB3BC421ea93d0A150D375E3E882cdcf60c5"; + provider = new ethers.providers.JsonRpcProvider( + process.env.POLYGON_AMOY_RPC + ); + } else if (network.name === "matic") { + controllerAddress = ""; + hookAddress = ""; + } else if (network.name === "geist") { + controllerAddress = ""; + hookAddress = ""; + } else { + throw Error("No network settings for " + network.name); + } const signer = new ethers.Wallet(process.env.OWNER_SIGNER_KEY, provider); @@ -27,7 +47,9 @@ export async function getHookAddress(chain: string): Promise { console.log("hookAddressBefore", hookAddressBefore); console.log("updating hook"); - const tx = await bridgeContract.updateHook(hookAddress, true); + const tx = await bridgeContract.updateHook(hookAddress, true, { + gasPrice: 30000000000, + }); console.log("tx", tx.hash); await tx.wait(); @@ -39,6 +61,11 @@ export async function getHookAddress(chain: string): Promise { console.error("Error fetching hook address:", error); throw error; } -} +}; -getHookAddress("631571"); +main() + .then(() => process.exit(0)) + .catch((error: Error) => { + console.error(error); + process.exit(1); + }); diff --git a/script/helpers/hook/testHook.ts b/script/helpers/hook/testHook.ts new file mode 100644 index 00000000..4aae46e0 --- /dev/null +++ b/script/helpers/hook/testHook.ts @@ -0,0 +1,98 @@ +import { ethers, network } from "hardhat"; +import { getOverrides } from "../networks"; + +export const main = async () => { + let controllerAddress = ""; + let hookAddress = ""; + let connector = ""; + let tokenAddress = ""; + let provider; + + if (network.name === "polter") { + // polter-testnet + controllerAddress = "0x42e5E7c6fE23f01bD1388C1ac2Bc0417007C016b"; + hookAddress = "0xF616d065b25ae91aBFB0B4a1729c7dD73597C1C5"; + connector = "0xCc3fc1Ebc23C5Cb3674cA51f77eE58A9acaEcb25"; + tokenAddress = "0x33A5BBa7C07E6d30FC10e5Cb0847b925A7e7496F"; + provider = new ethers.providers.JsonRpcProvider( + process.env.POLTER_TESTNET_RPC + ); + } else if (network.name === "amoy") { + controllerAddress = "0x24be569085c3e4b6AeBa2dfB7555E51290AA4350"; + hookAddress = "0x2d25dB3BC421ea93d0A150D375E3E882cdcf60c5"; + connector = "0xC8838B87fD1b979D3982A2ffa7CBA3456cE1c27b"; + tokenAddress = "0xF679b8D109b2d23931237Ce948a7D784727c0897"; + provider = new ethers.providers.JsonRpcProvider( + process.env.POLYGON_AMOY_RPC + ); + } else if (network.name === "matic") { + controllerAddress = ""; + hookAddress = ""; + } else if (network.name === "geist") { + controllerAddress = ""; + hookAddress = ""; + } else { + throw Error("No network settings for " + network.name); + } + + const signer = new ethers.Wallet(process.env.OWNER_SIGNER_KEY, provider); + + const bridgeABI = [ + "function bridge(address receiver_, uint256 amount_, uint256 msgGasLimit_, address connector_, bytes calldata extraData_, bytes calldata options_ ) external payable", + ]; + + const tokenContract = await ethers.getContractAt( + "IERC20", + tokenAddress, + signer + ); + + const bridgeContract = new ethers.Contract( + controllerAddress, + bridgeABI, + signer + ); + + const bridgeAmount = ethers.utils.parseEther("10"); + const feeAmount = bridgeAmount.div(1000); + const gasLimit = 2000000; + + try { + let approveTx = await tokenContract.approve( + bridgeContract.address, + bridgeAmount, + { gasPrice: 30000000000 } + ); + console.log("Tokens approved for bridge: ", approveTx.hash); + await approveTx.wait(); + + approveTx = await tokenContract.approve(hookAddress, feeAmount, { + gasPrice: 30000000000, + }); + console.log("Tokens approved for hook: ", approveTx.hash); + await approveTx.wait(); + + console.log("testing hook"); + const tx = await bridgeContract.bridge( + signer.address, + bridgeAmount, + gasLimit, + connector, + "0x", + "0x", + { gasPrice: 30000000000 } + ); + console.log("tx", tx.hash); + await tx.wait(); + } catch (error) { + console.error("Error testing hook:", error); + throw error; + } +}; + +main() + .then(() => process.exit(0)) + .catch((error: Error) => { + console.error(error); + process.exit(1); + }); From ad3d5e0b388690acb928134908e9dc0ab22b483b Mon Sep 17 00:00:00 2001 From: orionstardust Date: Thu, 31 Oct 2024 02:42:35 -0400 Subject: [PATCH 45/57] fix: fee hook and test --- contracts/hooks/UnwrapHook.sol | 9 +++++- deployments/supertoken/surge_addresses.json | 14 ++++----- .../surge_socket_ghst_testnet_addresses.json | 14 ++++----- ...urge_socket_ghst_testnet_verification.json | 30 +++++++++---------- script/helpers/hook/setHook.ts | 8 ++--- script/helpers/hook/testHook.ts | 16 +++++----- 6 files changed, 49 insertions(+), 42 deletions(-) diff --git a/contracts/hooks/UnwrapHook.sol b/contracts/hooks/UnwrapHook.sol index 99d72898..dfac26ae 100644 --- a/contracts/hooks/UnwrapHook.sol +++ b/contracts/hooks/UnwrapHook.sol @@ -20,6 +20,8 @@ contract UnwrapHook is HookBase { address public ghstAddress; address public treasuryAddress; + event TreasuryUpdated(address newTreasury); + /** * @notice Constructor for creating a new SuperToken. */ @@ -30,7 +32,12 @@ contract UnwrapHook is HookBase { address treasuryAddress_ ) HookBase(owner_, controller_) { ghstAddress = ghstAddress_; - treasuryAddress_ = treasuryAddress; + treasuryAddress = treasuryAddress_; + } + + function updateTreasury(address newTreasury_) external onlyOwner { + treasuryAddress = newTreasury_; + emit TreasuryUpdated(treasuryAddress); } // this should be run in Geist/Polter diff --git a/deployments/supertoken/surge_addresses.json b/deployments/supertoken/surge_addresses.json index 82cf3f93..ea1bb2b8 100644 --- a/deployments/supertoken/surge_addresses.json +++ b/deployments/supertoken/surge_addresses.json @@ -3,23 +3,23 @@ "80002": { "SGHST": { "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0x24be569085c3e4b6AeBa2dfB7555E51290AA4350", - "UnwrapHook": "0x2d25dB3BC421ea93d0A150D375E3E882cdcf60c5", + "Vault": "0x521920553b595C959d2d6399e27316c4eAd8844b", + "UnwrapHook": "0xca74C1fC80293E1e22888D0c2E940178eD6a7BcA", "connectors": { "631571": { - "FAST": "0xC8838B87fD1b979D3982A2ffa7CBA3456cE1c27b" + "FAST": "0xb759fa3415f9Aa3F6A2aA9FbF8E8bF9c1E6b0f01" } } } }, "631571": { "SGHST": { - "UnwrapSuperToken": "0x33A5BBa7C07E6d30FC10e5Cb0847b925A7e7496F", - "Controller": "0x42e5E7c6fE23f01bD1388C1ac2Bc0417007C016b", - "UnwrapHook": "0xF616d065b25ae91aBFB0B4a1729c7dD73597C1C5", + "UnwrapSuperToken": "0x0C3E0a7e65A1DBd096a37526781CC38Aa7345598", + "Controller": "0x2d5e2EEb9aC0aFEAB64D5e54b639e6165de31379", + "UnwrapHook": "0x4B4a704EAb8632Fa83ee5ec3b84dC67Dd6eC00d4", "connectors": { "80002": { - "FAST": "0xCc3fc1Ebc23C5Cb3674cA51f77eE58A9acaEcb25" + "FAST": "0x847108CDB225f4fFfc814b6b289EA95dC740ef57" } } } diff --git a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json index 3262c8f2..dffe08ef 100644 --- a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json +++ b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json @@ -2,23 +2,23 @@ "80002": { "SGHST": { "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0x24be569085c3e4b6AeBa2dfB7555E51290AA4350", - "UnwrapHook": "0x2d25dB3BC421ea93d0A150D375E3E882cdcf60c5", + "Vault": "0x521920553b595C959d2d6399e27316c4eAd8844b", + "UnwrapHook": "0xca74C1fC80293E1e22888D0c2E940178eD6a7BcA", "connectors": { "631571": { - "FAST": "0xC8838B87fD1b979D3982A2ffa7CBA3456cE1c27b" + "FAST": "0xb759fa3415f9Aa3F6A2aA9FbF8E8bF9c1E6b0f01" } } } }, "631571": { "SGHST": { - "UnwrapSuperToken": "0x33A5BBa7C07E6d30FC10e5Cb0847b925A7e7496F", - "Controller": "0x42e5E7c6fE23f01bD1388C1ac2Bc0417007C016b", - "UnwrapHook": "0xF616d065b25ae91aBFB0B4a1729c7dD73597C1C5", + "UnwrapSuperToken": "0x0C3E0a7e65A1DBd096a37526781CC38Aa7345598", + "Controller": "0x2d5e2EEb9aC0aFEAB64D5e54b639e6165de31379", + "UnwrapHook": "0x4B4a704EAb8632Fa83ee5ec3b84dC67Dd6eC00d4", "connectors": { "80002": { - "FAST": "0xCc3fc1Ebc23C5Cb3674cA51f77eE58A9acaEcb25" + "FAST": "0x847108CDB225f4fFfc814b6b289EA95dC740ef57" } } } diff --git a/deployments/supertoken/surge_socket_ghst_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_testnet_verification.json index b3dcb6bc..89a2a91b 100644 --- a/deployments/supertoken/surge_socket_ghst_testnet_verification.json +++ b/deployments/supertoken/surge_socket_ghst_testnet_verification.json @@ -1,29 +1,29 @@ { "80002": [ [ - "0xC8838B87fD1b979D3982A2ffa7CBA3456cE1c27b", + "0xb759fa3415f9Aa3F6A2aA9FbF8E8bF9c1E6b0f01", "ConnectorPlug", "contracts/ConnectorPlug.sol", [ - "0x24be569085c3e4b6AeBa2dfB7555E51290AA4350", + "0x521920553b595C959d2d6399e27316c4eAd8844b", "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", 631571, "0x0000000000000000000000000000000000000000000000000000000000000000" ] ], [ - "0x2d25dB3BC421ea93d0A150D375E3E882cdcf60c5", + "0xca74C1fC80293E1e22888D0c2E940178eD6a7BcA", "UnwrapHook", "contracts/hooks/UnwrapHook.sol", [ "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668", - "0x24be569085c3e4b6AeBa2dfB7555E51290AA4350", + "0x521920553b595C959d2d6399e27316c4eAd8844b", "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668" + "0x988a44f0ea2611B6a0f5ed73e1eC180Fb145CF21" ] ], [ - "0x24be569085c3e4b6AeBa2dfB7555E51290AA4350", + "0x521920553b595C959d2d6399e27316c4eAd8844b", "Vault", "contracts/bridge/Vault.sol", ["0xF679b8D109b2d23931237Ce948a7D784727c0897"] @@ -31,35 +31,35 @@ ], "631571": [ [ - "0xCc3fc1Ebc23C5Cb3674cA51f77eE58A9acaEcb25", + "0x847108CDB225f4fFfc814b6b289EA95dC740ef57", "ConnectorPlug", "contracts/ConnectorPlug.sol", [ - "0x42e5E7c6fE23f01bD1388C1ac2Bc0417007C016b", + "0x2d5e2EEb9aC0aFEAB64D5e54b639e6165de31379", "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", 80002, "0x0000000000000000000000000000000000000000000000000000000000000000" ] ], [ - "0xF616d065b25ae91aBFB0B4a1729c7dD73597C1C5", + "0x4B4a704EAb8632Fa83ee5ec3b84dC67Dd6eC00d4", "UnwrapHook", "contracts/hooks/UnwrapHook.sol", [ "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668", - "0x42e5E7c6fE23f01bD1388C1ac2Bc0417007C016b", - "0x33A5BBa7C07E6d30FC10e5Cb0847b925A7e7496F", - "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668" + "0x2d5e2EEb9aC0aFEAB64D5e54b639e6165de31379", + "0x0C3E0a7e65A1DBd096a37526781CC38Aa7345598", + "0x988a44f0ea2611B6a0f5ed73e1eC180Fb145CF21" ] ], [ - "0x42e5E7c6fE23f01bD1388C1ac2Bc0417007C016b", + "0x2d5e2EEb9aC0aFEAB64D5e54b639e6165de31379", "Controller", "contracts/bridge/Controller.sol", - ["0x33A5BBa7C07E6d30FC10e5Cb0847b925A7e7496F"] + ["0x0C3E0a7e65A1DBd096a37526781CC38Aa7345598"] ], [ - "0x33A5BBa7C07E6d30FC10e5Cb0847b925A7e7496F", + "0x0C3E0a7e65A1DBd096a37526781CC38Aa7345598", "UnwrapSuperToken", "contracts/token/UnwrapSuperToken.sol", [ diff --git a/script/helpers/hook/setHook.ts b/script/helpers/hook/setHook.ts index ef4bb77b..9926ef36 100644 --- a/script/helpers/hook/setHook.ts +++ b/script/helpers/hook/setHook.ts @@ -8,14 +8,14 @@ export const main = async () => { if (network.name === "polter") { // polter-testnet - controllerAddress = "0x42e5E7c6fE23f01bD1388C1ac2Bc0417007C016b"; - hookAddress = "0xF616d065b25ae91aBFB0B4a1729c7dD73597C1C5"; + controllerAddress = "0x2d5e2EEb9aC0aFEAB64D5e54b639e6165de31379"; + hookAddress = "0x4B4a704EAb8632Fa83ee5ec3b84dC67Dd6eC00d4"; provider = new ethers.providers.JsonRpcProvider( process.env.POLTER_TESTNET_RPC ); } else if (network.name === "amoy") { - controllerAddress = "0x24be569085c3e4b6AeBa2dfB7555E51290AA4350"; - hookAddress = "0x2d25dB3BC421ea93d0A150D375E3E882cdcf60c5"; + controllerAddress = "0x521920553b595C959d2d6399e27316c4eAd8844b"; + hookAddress = "0xca74C1fC80293E1e22888D0c2E940178eD6a7BcA"; provider = new ethers.providers.JsonRpcProvider( process.env.POLYGON_AMOY_RPC ); diff --git a/script/helpers/hook/testHook.ts b/script/helpers/hook/testHook.ts index 4aae46e0..9ff55637 100644 --- a/script/helpers/hook/testHook.ts +++ b/script/helpers/hook/testHook.ts @@ -10,17 +10,17 @@ export const main = async () => { if (network.name === "polter") { // polter-testnet - controllerAddress = "0x42e5E7c6fE23f01bD1388C1ac2Bc0417007C016b"; - hookAddress = "0xF616d065b25ae91aBFB0B4a1729c7dD73597C1C5"; - connector = "0xCc3fc1Ebc23C5Cb3674cA51f77eE58A9acaEcb25"; - tokenAddress = "0x33A5BBa7C07E6d30FC10e5Cb0847b925A7e7496F"; + controllerAddress = "0x2d5e2EEb9aC0aFEAB64D5e54b639e6165de31379"; + hookAddress = "0x4B4a704EAb8632Fa83ee5ec3b84dC67Dd6eC00d4"; + connector = "0x847108CDB225f4fFfc814b6b289EA95dC740ef57"; + tokenAddress = "0x0C3E0a7e65A1DBd096a37526781CC38Aa7345598"; provider = new ethers.providers.JsonRpcProvider( process.env.POLTER_TESTNET_RPC ); } else if (network.name === "amoy") { - controllerAddress = "0x24be569085c3e4b6AeBa2dfB7555E51290AA4350"; - hookAddress = "0x2d25dB3BC421ea93d0A150D375E3E882cdcf60c5"; - connector = "0xC8838B87fD1b979D3982A2ffa7CBA3456cE1c27b"; + controllerAddress = "0x521920553b595C959d2d6399e27316c4eAd8844b"; + hookAddress = "0xca74C1fC80293E1e22888D0c2E940178eD6a7BcA"; + connector = "0xb759fa3415f9Aa3F6A2aA9FbF8E8bF9c1E6b0f01"; tokenAddress = "0xF679b8D109b2d23931237Ce948a7D784727c0897"; provider = new ethers.providers.JsonRpcProvider( process.env.POLYGON_AMOY_RPC @@ -53,7 +53,7 @@ export const main = async () => { signer ); - const bridgeAmount = ethers.utils.parseEther("10"); + const bridgeAmount = ethers.utils.parseEther("50"); const feeAmount = bridgeAmount.div(1000); const gasLimit = 2000000; From cbd5be35afb6004819e74be966040d1a04c6e43a Mon Sep 17 00:00:00 2001 From: orionstardust Date: Thu, 31 Oct 2024 14:44:12 -0400 Subject: [PATCH 46/57] fix: update fee hook and test --- contracts/hooks/UnwrapHook.sol | 67 +++++++++++-------- deployments/supertoken/surge_addresses.json | 14 ++-- .../surge_socket_ghst_testnet_addresses.json | 14 ++-- ...urge_socket_ghst_testnet_verification.json | 26 +++---- script/helpers/hook/setHook.ts | 32 +++++++-- script/helpers/hook/testHook.ts | 22 +++--- 6 files changed, 98 insertions(+), 77 deletions(-) diff --git a/contracts/hooks/UnwrapHook.sol b/contracts/hooks/UnwrapHook.sol index dfac26ae..dc20eb17 100644 --- a/contracts/hooks/UnwrapHook.sol +++ b/contracts/hooks/UnwrapHook.sol @@ -40,10 +40,47 @@ contract UnwrapHook is HookBase { emit TreasuryUpdated(treasuryAddress); } + /** + * @notice Executes pre-hook call for destination underlyingAsset. + * @dev This function is used to execute a pre-hook call for the destination underlyingAsset before initiating a transfer. + * @param params_ Parameters for the pre-hook call. + */ + function dstPreHookCall( + DstPreHookCallParams calldata params_ + ) + external + isVaultOrController + returns (bytes memory postHookData, TransferInfo memory transferInfo) + { + transferInfo.receiver = params_.transferInfo.receiver; + + uint256 fee = params_.transferInfo.amount / 1000; // fee: 0.1% + transferInfo.amount = params_.transferInfo.amount - fee; // Deduct the fee + postHookData = abi.encode(fee); + } + // this should be run in Geist/Polter function dstPostHookCall( DstPostHookCallParams calldata params_ ) external isVaultOrController returns (CacheData memory cacheData) { + // Transfer the fee to the treasury address + uint256 fee = abi.decode(params_.postHookData, (uint256)); + if (fee > 0) { + if (block.chainid == 63157 || block.chainid == 631571) { + // mint fees + IWrapERC20(ghstAddress).mint(treasuryAddress, fee); + } else { + // if (block.chainid == 137 || block.chainid == 80002) + // transfer fees + ERC20(ghstAddress).safeTransferFrom( + msg.sender, + treasuryAddress, + fee + ); + } + } + + // unwrap if (block.chainid == 63157 || block.chainid == 631571) { // unwrap for Geist network IWrapERC20(ghstAddress).withdraw( @@ -62,20 +99,7 @@ contract UnwrapHook is HookBase { isVaultOrController returns (TransferInfo memory transferInfo, bytes memory postHookData) { - uint256 fee = params_.transferInfo.amount / 1000; // fee: 0.1% - - // Transfer the fee to the treasury address - if (fee > 0) { - ERC20(ghstAddress).safeTransferFrom( - params_.transferInfo.receiver, - treasuryAddress, - fee - ); - } - - transferInfo = params_.transferInfo; - transferInfo.amount = params_.transferInfo.amount - fee; // Deduct the fee - postHookData = hex""; + return (params_.transferInfo, bytes("")); } function srcPostHookCall( @@ -84,21 +108,6 @@ contract UnwrapHook is HookBase { return params_.transferInfo; } - /** - * @notice Executes pre-hook call for destination underlyingAsset. - * @dev This function is used to execute a pre-hook call for the destination underlyingAsset before initiating a transfer. - * @param params_ Parameters for the pre-hook call. - */ - function dstPreHookCall( - DstPreHookCallParams calldata params_ - ) - external - isVaultOrController - returns (bytes memory postHookData, TransferInfo memory transferInfo) - { - return (bytes(""), params_.transferInfo); - } - function preRetryHook( PreRetryHookCallParams memory params_ ) diff --git a/deployments/supertoken/surge_addresses.json b/deployments/supertoken/surge_addresses.json index ea1bb2b8..4b9dcbf8 100644 --- a/deployments/supertoken/surge_addresses.json +++ b/deployments/supertoken/surge_addresses.json @@ -3,23 +3,23 @@ "80002": { "SGHST": { "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0x521920553b595C959d2d6399e27316c4eAd8844b", - "UnwrapHook": "0xca74C1fC80293E1e22888D0c2E940178eD6a7BcA", + "Vault": "0xD079A4FCaE760a53D90C53621B60Be9a901639F4", + "UnwrapHook": "0x5392EfA2B1Ddd61Bd0b2B1eadD04D654E5C5c715", "connectors": { "631571": { - "FAST": "0xb759fa3415f9Aa3F6A2aA9FbF8E8bF9c1E6b0f01" + "FAST": "0xCB08705502C14c99B25607e6Cc7B11DD84E41589" } } } }, "631571": { "SGHST": { - "UnwrapSuperToken": "0x0C3E0a7e65A1DBd096a37526781CC38Aa7345598", - "Controller": "0x2d5e2EEb9aC0aFEAB64D5e54b639e6165de31379", - "UnwrapHook": "0x4B4a704EAb8632Fa83ee5ec3b84dC67Dd6eC00d4", + "UnwrapSuperToken": "0xA76ea667a448ECAC757665b7998c945Fac05fBDe", + "Controller": "0x9091977076DD10A7721F4648fcE7E09371df7Bc5", + "UnwrapHook": "0x46f6B69E132dB843b8bC01dAf19535b63835557e", "connectors": { "80002": { - "FAST": "0x847108CDB225f4fFfc814b6b289EA95dC740ef57" + "FAST": "0xe24Edb991E307C3A4ef5833da2fE49C86D5b2F47" } } } diff --git a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json index dffe08ef..7f6c24f6 100644 --- a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json +++ b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json @@ -2,23 +2,23 @@ "80002": { "SGHST": { "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0x521920553b595C959d2d6399e27316c4eAd8844b", - "UnwrapHook": "0xca74C1fC80293E1e22888D0c2E940178eD6a7BcA", + "Vault": "0xD079A4FCaE760a53D90C53621B60Be9a901639F4", + "UnwrapHook": "0x5392EfA2B1Ddd61Bd0b2B1eadD04D654E5C5c715", "connectors": { "631571": { - "FAST": "0xb759fa3415f9Aa3F6A2aA9FbF8E8bF9c1E6b0f01" + "FAST": "0xCB08705502C14c99B25607e6Cc7B11DD84E41589" } } } }, "631571": { "SGHST": { - "UnwrapSuperToken": "0x0C3E0a7e65A1DBd096a37526781CC38Aa7345598", - "Controller": "0x2d5e2EEb9aC0aFEAB64D5e54b639e6165de31379", - "UnwrapHook": "0x4B4a704EAb8632Fa83ee5ec3b84dC67Dd6eC00d4", + "UnwrapSuperToken": "0xA76ea667a448ECAC757665b7998c945Fac05fBDe", + "Controller": "0x9091977076DD10A7721F4648fcE7E09371df7Bc5", + "UnwrapHook": "0x46f6B69E132dB843b8bC01dAf19535b63835557e", "connectors": { "80002": { - "FAST": "0x847108CDB225f4fFfc814b6b289EA95dC740ef57" + "FAST": "0xe24Edb991E307C3A4ef5833da2fE49C86D5b2F47" } } } diff --git a/deployments/supertoken/surge_socket_ghst_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_testnet_verification.json index 89a2a91b..13664c41 100644 --- a/deployments/supertoken/surge_socket_ghst_testnet_verification.json +++ b/deployments/supertoken/surge_socket_ghst_testnet_verification.json @@ -1,29 +1,29 @@ { "80002": [ [ - "0xb759fa3415f9Aa3F6A2aA9FbF8E8bF9c1E6b0f01", + "0xCB08705502C14c99B25607e6Cc7B11DD84E41589", "ConnectorPlug", "contracts/ConnectorPlug.sol", [ - "0x521920553b595C959d2d6399e27316c4eAd8844b", + "0xD079A4FCaE760a53D90C53621B60Be9a901639F4", "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", 631571, "0x0000000000000000000000000000000000000000000000000000000000000000" ] ], [ - "0xca74C1fC80293E1e22888D0c2E940178eD6a7BcA", + "0x5392EfA2B1Ddd61Bd0b2B1eadD04D654E5C5c715", "UnwrapHook", "contracts/hooks/UnwrapHook.sol", [ "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668", - "0x521920553b595C959d2d6399e27316c4eAd8844b", + "0xD079A4FCaE760a53D90C53621B60Be9a901639F4", "0xF679b8D109b2d23931237Ce948a7D784727c0897", "0x988a44f0ea2611B6a0f5ed73e1eC180Fb145CF21" ] ], [ - "0x521920553b595C959d2d6399e27316c4eAd8844b", + "0xD079A4FCaE760a53D90C53621B60Be9a901639F4", "Vault", "contracts/bridge/Vault.sol", ["0xF679b8D109b2d23931237Ce948a7D784727c0897"] @@ -31,35 +31,35 @@ ], "631571": [ [ - "0x847108CDB225f4fFfc814b6b289EA95dC740ef57", + "0xe24Edb991E307C3A4ef5833da2fE49C86D5b2F47", "ConnectorPlug", "contracts/ConnectorPlug.sol", [ - "0x2d5e2EEb9aC0aFEAB64D5e54b639e6165de31379", + "0x9091977076DD10A7721F4648fcE7E09371df7Bc5", "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", 80002, "0x0000000000000000000000000000000000000000000000000000000000000000" ] ], [ - "0x4B4a704EAb8632Fa83ee5ec3b84dC67Dd6eC00d4", + "0x46f6B69E132dB843b8bC01dAf19535b63835557e", "UnwrapHook", "contracts/hooks/UnwrapHook.sol", [ "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668", - "0x2d5e2EEb9aC0aFEAB64D5e54b639e6165de31379", - "0x0C3E0a7e65A1DBd096a37526781CC38Aa7345598", + "0x9091977076DD10A7721F4648fcE7E09371df7Bc5", + "0xA76ea667a448ECAC757665b7998c945Fac05fBDe", "0x988a44f0ea2611B6a0f5ed73e1eC180Fb145CF21" ] ], [ - "0x2d5e2EEb9aC0aFEAB64D5e54b639e6165de31379", + "0x9091977076DD10A7721F4648fcE7E09371df7Bc5", "Controller", "contracts/bridge/Controller.sol", - ["0x0C3E0a7e65A1DBd096a37526781CC38Aa7345598"] + ["0xA76ea667a448ECAC757665b7998c945Fac05fBDe"] ], [ - "0x0C3E0a7e65A1DBd096a37526781CC38Aa7345598", + "0xA76ea667a448ECAC757665b7998c945Fac05fBDe", "UnwrapSuperToken", "contracts/token/UnwrapSuperToken.sol", [ diff --git a/script/helpers/hook/setHook.ts b/script/helpers/hook/setHook.ts index 9926ef36..963aeda9 100644 --- a/script/helpers/hook/setHook.ts +++ b/script/helpers/hook/setHook.ts @@ -1,30 +1,35 @@ -import { ethers } from "ethers"; -import { network } from "hardhat"; +import { ethers, network } from "hardhat"; +import { CONTROLLER_ROLE } from "../../constants"; export const main = async () => { let controllerAddress = ""; let hookAddress = ""; + let tokenAddress = ""; let provider; if (network.name === "polter") { // polter-testnet - controllerAddress = "0x2d5e2EEb9aC0aFEAB64D5e54b639e6165de31379"; - hookAddress = "0x4B4a704EAb8632Fa83ee5ec3b84dC67Dd6eC00d4"; + controllerAddress = "0x9091977076DD10A7721F4648fcE7E09371df7Bc5"; + hookAddress = "0x46f6B69E132dB843b8bC01dAf19535b63835557e"; + tokenAddress = "0xA76ea667a448ECAC757665b7998c945Fac05fBDe"; provider = new ethers.providers.JsonRpcProvider( process.env.POLTER_TESTNET_RPC ); } else if (network.name === "amoy") { - controllerAddress = "0x521920553b595C959d2d6399e27316c4eAd8844b"; - hookAddress = "0xca74C1fC80293E1e22888D0c2E940178eD6a7BcA"; + controllerAddress = "0xD079A4FCaE760a53D90C53621B60Be9a901639F4"; + hookAddress = "0x5392EfA2B1Ddd61Bd0b2B1eadD04D654E5C5c715"; + tokenAddress = "0xF679b8D109b2d23931237Ce948a7D784727c0897"; provider = new ethers.providers.JsonRpcProvider( process.env.POLYGON_AMOY_RPC ); } else if (network.name === "matic") { controllerAddress = ""; hookAddress = ""; + tokenAddress = ""; } else if (network.name === "geist") { controllerAddress = ""; hookAddress = ""; + tokenAddress = ""; } else { throw Error("No network settings for " + network.name); } @@ -56,7 +61,20 @@ export const main = async () => { const hookAddressAfter = await bridgeContract.hook__(); console.log("hookAddressAfter", hookAddressAfter); - return hookAddressAfter; + if (network.name === "polter" || network.name === "geist") { + const tokenContract = await ethers.getContractAt( + "UnwrapSuperToken", + tokenAddress, + signer + ); + + console.log("setting controller role to the hook"); + const tx = await tokenContract.grantRole(CONTROLLER_ROLE, hookAddress, { + gasPrice: 30000000000, + }); + console.log("tx", tx.hash); + await tx.wait(); + } } catch (error) { console.error("Error fetching hook address:", error); throw error; diff --git a/script/helpers/hook/testHook.ts b/script/helpers/hook/testHook.ts index 9ff55637..dd343483 100644 --- a/script/helpers/hook/testHook.ts +++ b/script/helpers/hook/testHook.ts @@ -10,17 +10,17 @@ export const main = async () => { if (network.name === "polter") { // polter-testnet - controllerAddress = "0x2d5e2EEb9aC0aFEAB64D5e54b639e6165de31379"; - hookAddress = "0x4B4a704EAb8632Fa83ee5ec3b84dC67Dd6eC00d4"; - connector = "0x847108CDB225f4fFfc814b6b289EA95dC740ef57"; - tokenAddress = "0x0C3E0a7e65A1DBd096a37526781CC38Aa7345598"; + controllerAddress = "0x9091977076DD10A7721F4648fcE7E09371df7Bc5"; + hookAddress = "0x46f6B69E132dB843b8bC01dAf19535b63835557e"; + connector = "0xe24Edb991E307C3A4ef5833da2fE49C86D5b2F47"; + tokenAddress = "0xA76ea667a448ECAC757665b7998c945Fac05fBDe"; provider = new ethers.providers.JsonRpcProvider( process.env.POLTER_TESTNET_RPC ); } else if (network.name === "amoy") { - controllerAddress = "0x521920553b595C959d2d6399e27316c4eAd8844b"; - hookAddress = "0xca74C1fC80293E1e22888D0c2E940178eD6a7BcA"; - connector = "0xb759fa3415f9Aa3F6A2aA9FbF8E8bF9c1E6b0f01"; + controllerAddress = "0xD079A4FCaE760a53D90C53621B60Be9a901639F4"; + hookAddress = "0x5392EfA2B1Ddd61Bd0b2B1eadD04D654E5C5c715"; + connector = "0xCB08705502C14c99B25607e6Cc7B11DD84E41589"; tokenAddress = "0xF679b8D109b2d23931237Ce948a7D784727c0897"; provider = new ethers.providers.JsonRpcProvider( process.env.POLYGON_AMOY_RPC @@ -58,7 +58,7 @@ export const main = async () => { const gasLimit = 2000000; try { - let approveTx = await tokenContract.approve( + const approveTx = await tokenContract.approve( bridgeContract.address, bridgeAmount, { gasPrice: 30000000000 } @@ -66,12 +66,6 @@ export const main = async () => { console.log("Tokens approved for bridge: ", approveTx.hash); await approveTx.wait(); - approveTx = await tokenContract.approve(hookAddress, feeAmount, { - gasPrice: 30000000000, - }); - console.log("Tokens approved for hook: ", approveTx.hash); - await approveTx.wait(); - console.log("testing hook"); const tx = await bridgeContract.bridge( signer.address, From 261c5882fc43205cf313abfe9a75c8f457b1d61f Mon Sep 17 00:00:00 2001 From: orionstardust Date: Fri, 1 Nov 2024 12:13:05 -0400 Subject: [PATCH 47/57] fix: update fee hook and test --- contracts/hooks/UnwrapHook.sol | 23 +++++++-------- deployments/supertoken/surge_addresses.json | 14 ++++----- .../surge_socket_ghst_testnet_addresses.json | 14 ++++----- ...urge_socket_ghst_testnet_verification.json | 26 ++++++++--------- script/helpers/hook/setHook.ts | 29 +++---------------- script/helpers/hook/testHook.ts | 17 ++++------- 6 files changed, 46 insertions(+), 77 deletions(-) diff --git a/contracts/hooks/UnwrapHook.sol b/contracts/hooks/UnwrapHook.sol index dc20eb17..1e38ae8e 100644 --- a/contracts/hooks/UnwrapHook.sol +++ b/contracts/hooks/UnwrapHook.sol @@ -54,7 +54,10 @@ contract UnwrapHook is HookBase { { transferInfo.receiver = params_.transferInfo.receiver; - uint256 fee = params_.transferInfo.amount / 1000; // fee: 0.1% + uint256 fee; + if (block.chainid == 137 || block.chainid == 80002) { + fee = params_.transferInfo.amount / 1000; // fee: 0.1% + } transferInfo.amount = params_.transferInfo.amount - fee; // Deduct the fee postHookData = abi.encode(fee); } @@ -66,18 +69,12 @@ contract UnwrapHook is HookBase { // Transfer the fee to the treasury address uint256 fee = abi.decode(params_.postHookData, (uint256)); if (fee > 0) { - if (block.chainid == 63157 || block.chainid == 631571) { - // mint fees - IWrapERC20(ghstAddress).mint(treasuryAddress, fee); - } else { - // if (block.chainid == 137 || block.chainid == 80002) - // transfer fees - ERC20(ghstAddress).safeTransferFrom( - msg.sender, - treasuryAddress, - fee - ); - } + // transfer fees + ERC20(ghstAddress).safeTransferFrom( + msg.sender, + treasuryAddress, + fee + ); } // unwrap diff --git a/deployments/supertoken/surge_addresses.json b/deployments/supertoken/surge_addresses.json index 4b9dcbf8..2ea1a683 100644 --- a/deployments/supertoken/surge_addresses.json +++ b/deployments/supertoken/surge_addresses.json @@ -3,23 +3,23 @@ "80002": { "SGHST": { "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0xD079A4FCaE760a53D90C53621B60Be9a901639F4", - "UnwrapHook": "0x5392EfA2B1Ddd61Bd0b2B1eadD04D654E5C5c715", + "Vault": "0x3aa86893F04dd7fbaa63Dacc8E6bd887521E3BaE", + "UnwrapHook": "0x2DF0C8E2f0AAB101A1667E86D44e809E7cBA408c", "connectors": { "631571": { - "FAST": "0xCB08705502C14c99B25607e6Cc7B11DD84E41589" + "FAST": "0x092D6243ee5602D2b94d4Ba75c3bd7e220f740D2" } } } }, "631571": { "SGHST": { - "UnwrapSuperToken": "0xA76ea667a448ECAC757665b7998c945Fac05fBDe", - "Controller": "0x9091977076DD10A7721F4648fcE7E09371df7Bc5", - "UnwrapHook": "0x46f6B69E132dB843b8bC01dAf19535b63835557e", + "UnwrapSuperToken": "0xCef3AdFaE288d3304e42582a0786e0276181Acf2", + "Controller": "0x49017f31dB018eAD84E67A382B5f3f796695aAc3", + "UnwrapHook": "0xDf56a16F0DCBFc23403EEE8334A93A41Effe9a28", "connectors": { "80002": { - "FAST": "0xe24Edb991E307C3A4ef5833da2fE49C86D5b2F47" + "FAST": "0xC1044dFa349B6C7381eE4603660e974Bdab5dc40" } } } diff --git a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json index 7f6c24f6..4a8326ed 100644 --- a/deployments/supertoken/surge_socket_ghst_testnet_addresses.json +++ b/deployments/supertoken/surge_socket_ghst_testnet_addresses.json @@ -2,23 +2,23 @@ "80002": { "SGHST": { "NonMintableToken": "0xF679b8D109b2d23931237Ce948a7D784727c0897", - "Vault": "0xD079A4FCaE760a53D90C53621B60Be9a901639F4", - "UnwrapHook": "0x5392EfA2B1Ddd61Bd0b2B1eadD04D654E5C5c715", + "Vault": "0x3aa86893F04dd7fbaa63Dacc8E6bd887521E3BaE", + "UnwrapHook": "0x2DF0C8E2f0AAB101A1667E86D44e809E7cBA408c", "connectors": { "631571": { - "FAST": "0xCB08705502C14c99B25607e6Cc7B11DD84E41589" + "FAST": "0x092D6243ee5602D2b94d4Ba75c3bd7e220f740D2" } } } }, "631571": { "SGHST": { - "UnwrapSuperToken": "0xA76ea667a448ECAC757665b7998c945Fac05fBDe", - "Controller": "0x9091977076DD10A7721F4648fcE7E09371df7Bc5", - "UnwrapHook": "0x46f6B69E132dB843b8bC01dAf19535b63835557e", + "UnwrapSuperToken": "0xCef3AdFaE288d3304e42582a0786e0276181Acf2", + "Controller": "0x49017f31dB018eAD84E67A382B5f3f796695aAc3", + "UnwrapHook": "0xDf56a16F0DCBFc23403EEE8334A93A41Effe9a28", "connectors": { "80002": { - "FAST": "0xe24Edb991E307C3A4ef5833da2fE49C86D5b2F47" + "FAST": "0xC1044dFa349B6C7381eE4603660e974Bdab5dc40" } } } diff --git a/deployments/supertoken/surge_socket_ghst_testnet_verification.json b/deployments/supertoken/surge_socket_ghst_testnet_verification.json index 13664c41..f8690ffb 100644 --- a/deployments/supertoken/surge_socket_ghst_testnet_verification.json +++ b/deployments/supertoken/surge_socket_ghst_testnet_verification.json @@ -1,29 +1,29 @@ { "80002": [ [ - "0xCB08705502C14c99B25607e6Cc7B11DD84E41589", + "0x092D6243ee5602D2b94d4Ba75c3bd7e220f740D2", "ConnectorPlug", "contracts/ConnectorPlug.sol", [ - "0xD079A4FCaE760a53D90C53621B60Be9a901639F4", + "0x3aa86893F04dd7fbaa63Dacc8E6bd887521E3BaE", "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", 631571, "0x0000000000000000000000000000000000000000000000000000000000000000" ] ], [ - "0x5392EfA2B1Ddd61Bd0b2B1eadD04D654E5C5c715", + "0x2DF0C8E2f0AAB101A1667E86D44e809E7cBA408c", "UnwrapHook", "contracts/hooks/UnwrapHook.sol", [ "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668", - "0xD079A4FCaE760a53D90C53621B60Be9a901639F4", + "0x3aa86893F04dd7fbaa63Dacc8E6bd887521E3BaE", "0xF679b8D109b2d23931237Ce948a7D784727c0897", "0x988a44f0ea2611B6a0f5ed73e1eC180Fb145CF21" ] ], [ - "0xD079A4FCaE760a53D90C53621B60Be9a901639F4", + "0x3aa86893F04dd7fbaa63Dacc8E6bd887521E3BaE", "Vault", "contracts/bridge/Vault.sol", ["0xF679b8D109b2d23931237Ce948a7D784727c0897"] @@ -31,35 +31,35 @@ ], "631571": [ [ - "0xe24Edb991E307C3A4ef5833da2fE49C86D5b2F47", + "0xC1044dFa349B6C7381eE4603660e974Bdab5dc40", "ConnectorPlug", "contracts/ConnectorPlug.sol", [ - "0x9091977076DD10A7721F4648fcE7E09371df7Bc5", + "0x49017f31dB018eAD84E67A382B5f3f796695aAc3", "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", 80002, "0x0000000000000000000000000000000000000000000000000000000000000000" ] ], [ - "0x46f6B69E132dB843b8bC01dAf19535b63835557e", + "0xDf56a16F0DCBFc23403EEE8334A93A41Effe9a28", "UnwrapHook", "contracts/hooks/UnwrapHook.sol", [ "0xd38Df837a1EAd12ee16f8b8b7E5F58703f841668", - "0x9091977076DD10A7721F4648fcE7E09371df7Bc5", - "0xA76ea667a448ECAC757665b7998c945Fac05fBDe", + "0x49017f31dB018eAD84E67A382B5f3f796695aAc3", + "0xCef3AdFaE288d3304e42582a0786e0276181Acf2", "0x988a44f0ea2611B6a0f5ed73e1eC180Fb145CF21" ] ], [ - "0x9091977076DD10A7721F4648fcE7E09371df7Bc5", + "0x49017f31dB018eAD84E67A382B5f3f796695aAc3", "Controller", "contracts/bridge/Controller.sol", - ["0xA76ea667a448ECAC757665b7998c945Fac05fBDe"] + ["0xCef3AdFaE288d3304e42582a0786e0276181Acf2"] ], [ - "0xA76ea667a448ECAC757665b7998c945Fac05fBDe", + "0xCef3AdFaE288d3304e42582a0786e0276181Acf2", "UnwrapSuperToken", "contracts/token/UnwrapSuperToken.sol", [ diff --git a/script/helpers/hook/setHook.ts b/script/helpers/hook/setHook.ts index 963aeda9..314ac506 100644 --- a/script/helpers/hook/setHook.ts +++ b/script/helpers/hook/setHook.ts @@ -1,35 +1,29 @@ import { ethers, network } from "hardhat"; -import { CONTROLLER_ROLE } from "../../constants"; export const main = async () => { let controllerAddress = ""; let hookAddress = ""; - let tokenAddress = ""; let provider; if (network.name === "polter") { // polter-testnet - controllerAddress = "0x9091977076DD10A7721F4648fcE7E09371df7Bc5"; - hookAddress = "0x46f6B69E132dB843b8bC01dAf19535b63835557e"; - tokenAddress = "0xA76ea667a448ECAC757665b7998c945Fac05fBDe"; + controllerAddress = "0x49017f31dB018eAD84E67A382B5f3f796695aAc3"; + hookAddress = "0xDf56a16F0DCBFc23403EEE8334A93A41Effe9a28"; provider = new ethers.providers.JsonRpcProvider( process.env.POLTER_TESTNET_RPC ); } else if (network.name === "amoy") { - controllerAddress = "0xD079A4FCaE760a53D90C53621B60Be9a901639F4"; - hookAddress = "0x5392EfA2B1Ddd61Bd0b2B1eadD04D654E5C5c715"; - tokenAddress = "0xF679b8D109b2d23931237Ce948a7D784727c0897"; + controllerAddress = "0x3aa86893F04dd7fbaa63Dacc8E6bd887521E3BaE"; + hookAddress = "0x2DF0C8E2f0AAB101A1667E86D44e809E7cBA408c"; provider = new ethers.providers.JsonRpcProvider( process.env.POLYGON_AMOY_RPC ); } else if (network.name === "matic") { controllerAddress = ""; hookAddress = ""; - tokenAddress = ""; } else if (network.name === "geist") { controllerAddress = ""; hookAddress = ""; - tokenAddress = ""; } else { throw Error("No network settings for " + network.name); } @@ -60,21 +54,6 @@ export const main = async () => { const hookAddressAfter = await bridgeContract.hook__(); console.log("hookAddressAfter", hookAddressAfter); - - if (network.name === "polter" || network.name === "geist") { - const tokenContract = await ethers.getContractAt( - "UnwrapSuperToken", - tokenAddress, - signer - ); - - console.log("setting controller role to the hook"); - const tx = await tokenContract.grantRole(CONTROLLER_ROLE, hookAddress, { - gasPrice: 30000000000, - }); - console.log("tx", tx.hash); - await tx.wait(); - } } catch (error) { console.error("Error fetching hook address:", error); throw error; diff --git a/script/helpers/hook/testHook.ts b/script/helpers/hook/testHook.ts index dd343483..93b4ac9a 100644 --- a/script/helpers/hook/testHook.ts +++ b/script/helpers/hook/testHook.ts @@ -1,36 +1,30 @@ import { ethers, network } from "hardhat"; -import { getOverrides } from "../networks"; export const main = async () => { let controllerAddress = ""; - let hookAddress = ""; let connector = ""; let tokenAddress = ""; let provider; if (network.name === "polter") { // polter-testnet - controllerAddress = "0x9091977076DD10A7721F4648fcE7E09371df7Bc5"; - hookAddress = "0x46f6B69E132dB843b8bC01dAf19535b63835557e"; - connector = "0xe24Edb991E307C3A4ef5833da2fE49C86D5b2F47"; - tokenAddress = "0xA76ea667a448ECAC757665b7998c945Fac05fBDe"; + controllerAddress = "0x49017f31dB018eAD84E67A382B5f3f796695aAc3"; + connector = "0xC1044dFa349B6C7381eE4603660e974Bdab5dc40"; + tokenAddress = "0xCef3AdFaE288d3304e42582a0786e0276181Acf2"; provider = new ethers.providers.JsonRpcProvider( process.env.POLTER_TESTNET_RPC ); } else if (network.name === "amoy") { - controllerAddress = "0xD079A4FCaE760a53D90C53621B60Be9a901639F4"; - hookAddress = "0x5392EfA2B1Ddd61Bd0b2B1eadD04D654E5C5c715"; - connector = "0xCB08705502C14c99B25607e6Cc7B11DD84E41589"; + controllerAddress = "0x3aa86893F04dd7fbaa63Dacc8E6bd887521E3BaE"; + connector = "0x092D6243ee5602D2b94d4Ba75c3bd7e220f740D2"; tokenAddress = "0xF679b8D109b2d23931237Ce948a7D784727c0897"; provider = new ethers.providers.JsonRpcProvider( process.env.POLYGON_AMOY_RPC ); } else if (network.name === "matic") { controllerAddress = ""; - hookAddress = ""; } else if (network.name === "geist") { controllerAddress = ""; - hookAddress = ""; } else { throw Error("No network settings for " + network.name); } @@ -54,7 +48,6 @@ export const main = async () => { ); const bridgeAmount = ethers.utils.parseEther("50"); - const feeAmount = bridgeAmount.div(1000); const gasLimit = 2000000; try { From d019431b411e380371f2641511b4f3051bd6b0df Mon Sep 17 00:00:00 2001 From: orionstardust Date: Mon, 4 Nov 2024 00:04:34 -0500 Subject: [PATCH 48/57] fix: test gotchi and items --- ...e_aavegotchi_bridge_testnet_addresses.json | 26 ++++++++++ ...avegotchi_bridge_testnet_verification.json | 40 ++++++++++++++++ ...egotchi_item_bridge_testnet_addresses.json | 26 ++++++++++ ...tchi_item_bridge_testnet_verification.json | 40 ++++++++++++++++ deployments/superbridge/surge_addresses.json | 48 ++++++++++++++----- .../superbridge/aavegotchi_bridge_testnet.ts | 10 ++-- .../aavegotchi_item_bridge_testnet.ts | 24 ++++++++++ src/enums/projectType.ts | 1 + src/enums/projects.ts | 1 + 9 files changed, 200 insertions(+), 16 deletions(-) create mode 100644 deployments/superbridge/surge_aavegotchi_bridge_testnet_addresses.json create mode 100644 deployments/superbridge/surge_aavegotchi_bridge_testnet_verification.json create mode 100644 deployments/superbridge/surge_aavegotchi_item_bridge_testnet_addresses.json create mode 100644 deployments/superbridge/surge_aavegotchi_item_bridge_testnet_verification.json create mode 100644 script/constants/projectConstants/superbridge/aavegotchi_item_bridge_testnet.ts diff --git a/deployments/superbridge/surge_aavegotchi_bridge_testnet_addresses.json b/deployments/superbridge/surge_aavegotchi_bridge_testnet_addresses.json new file mode 100644 index 00000000..273053f6 --- /dev/null +++ b/deployments/superbridge/surge_aavegotchi_bridge_testnet_addresses.json @@ -0,0 +1,26 @@ +{ + "84532": { + "GOTCHI": { + "isAppChain": false, + "NonMintableToken": "0x87C969d083189927049f8fF3747703FB9f7a8AEd", + "Vault": "0x110A646276961C2d8a54b951bbC8B169E0F573c4", + "connectors": { + "631571": { + "FAST": "0xd912F40C27E317db2334e210de892e9dc92816af" + } + } + } + }, + "631571": { + "GOTCHI": { + "isAppChain": true, + "MintableToken": "0x1F0eb9099b9c398323dcf2F133dFdAD9dE7cF994", + "Controller": "0x5ABB7E28160f82A84e389aDcc9d8CE3F7a0C8D92", + "connectors": { + "84532": { + "FAST": "0xE7af5160334aded39DD9826cBcBa0B51A1B184e9" + } + } + } + } +} diff --git a/deployments/superbridge/surge_aavegotchi_bridge_testnet_verification.json b/deployments/superbridge/surge_aavegotchi_bridge_testnet_verification.json new file mode 100644 index 00000000..4ace912b --- /dev/null +++ b/deployments/superbridge/surge_aavegotchi_bridge_testnet_verification.json @@ -0,0 +1,40 @@ +{ + "84532": [ + [ + "0xd912F40C27E317db2334e210de892e9dc92816af", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0x110A646276961C2d8a54b951bbC8B169E0F573c4", + "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", + 631571, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0x110A646276961C2d8a54b951bbC8B169E0F573c4", + "NFTVault", + "contracts/bridge/NFT/NFTVault.sol", + ["0x87C969d083189927049f8fF3747703FB9f7a8AEd", "0x80ac58cd"] + ] + ], + "631571": [ + [ + "0xE7af5160334aded39DD9826cBcBa0B51A1B184e9", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0x5ABB7E28160f82A84e389aDcc9d8CE3F7a0C8D92", + "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", + 84532, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0x5ABB7E28160f82A84e389aDcc9d8CE3F7a0C8D92", + "NFTController", + "contracts/bridge/NFT/NFTController.sol", + ["0x1F0eb9099b9c398323dcf2F133dFdAD9dE7cF994", "0x80ac58cd"] + ] + ] +} diff --git a/deployments/superbridge/surge_aavegotchi_item_bridge_testnet_addresses.json b/deployments/superbridge/surge_aavegotchi_item_bridge_testnet_addresses.json new file mode 100644 index 00000000..a641785e --- /dev/null +++ b/deployments/superbridge/surge_aavegotchi_item_bridge_testnet_addresses.json @@ -0,0 +1,26 @@ +{ + "84532": { + "GOTCHI_ITEM": { + "isAppChain": false, + "NonMintableToken": "0x87C969d083189927049f8fF3747703FB9f7a8AEd", + "Vault": "0x130119B300049A80C20B2D3bfdFCfd021373E5e7", + "connectors": { + "631571": { + "FAST": "0xb8388b23222876FAC04b464fA0d6A064c67A14FC" + } + } + } + }, + "631571": { + "GOTCHI_ITEM": { + "isAppChain": true, + "MintableToken": "0x1F0eb9099b9c398323dcf2F133dFdAD9dE7cF994", + "Controller": "0x10Cf0D5C1986a7Aa98aDb3bfa3529c1BBDa59FB9", + "connectors": { + "84532": { + "FAST": "0x27fA28c1f241E5dEA9AA583751E5D968a28FD9D5" + } + } + } + } +} diff --git a/deployments/superbridge/surge_aavegotchi_item_bridge_testnet_verification.json b/deployments/superbridge/surge_aavegotchi_item_bridge_testnet_verification.json new file mode 100644 index 00000000..ee1b0c77 --- /dev/null +++ b/deployments/superbridge/surge_aavegotchi_item_bridge_testnet_verification.json @@ -0,0 +1,40 @@ +{ + "84532": [ + [ + "0xb8388b23222876FAC04b464fA0d6A064c67A14FC", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0x130119B300049A80C20B2D3bfdFCfd021373E5e7", + "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", + 631571, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0x130119B300049A80C20B2D3bfdFCfd021373E5e7", + "NFTVault", + "contracts/bridge/NFT/NFTVault.sol", + ["0x87C969d083189927049f8fF3747703FB9f7a8AEd", "0xd9b67a26"] + ] + ], + "631571": [ + [ + "0x27fA28c1f241E5dEA9AA583751E5D968a28FD9D5", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0x10Cf0D5C1986a7Aa98aDb3bfa3529c1BBDa59FB9", + "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", + 84532, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0x10Cf0D5C1986a7Aa98aDb3bfa3529c1BBDa59FB9", + "NFTController", + "contracts/bridge/NFT/NFTController.sol", + ["0x1F0eb9099b9c398323dcf2F133dFdAD9dE7cF994", "0xd9b67a26"] + ] + ] +} diff --git a/deployments/superbridge/surge_addresses.json b/deployments/superbridge/surge_addresses.json index 5f0f8c1a..8d64820b 100644 --- a/deployments/superbridge/surge_addresses.json +++ b/deployments/superbridge/surge_addresses.json @@ -28,29 +28,55 @@ } }, "aavegotchi_bridge_testnet": { - "80002": { + "84532": { "GOTCHI": { "isAppChain": false, - "NonMintableToken": "0xC80DB01aeDAD5F6E3088c75F60E52f579Cf1D3Cb", - "Vault": "0x09011fcA980Df5d22E5ff2262051Bc28C430E11c", + "NonMintableToken": "0x87C969d083189927049f8fF3747703FB9f7a8AEd", + "Vault": "0x110A646276961C2d8a54b951bbC8B169E0F573c4", "connectors": { - "398274": { - "FAST": "0x6f1978CF0D213eFBF4A173d499219AbeEa01e597" + "631571": { + "FAST": "0xd912F40C27E317db2334e210de892e9dc92816af" } } } }, - "398274": { + "631571": { "GOTCHI": { "isAppChain": true, - "MintableToken": "0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", - "Controller": "0x38161F1a033D86aea6D222AEdE57702046414CA5", + "MintableToken": "0x1F0eb9099b9c398323dcf2F133dFdAD9dE7cF994", + "Controller": "0x5ABB7E28160f82A84e389aDcc9d8CE3F7a0C8D92", + "connectors": { + "84532": { + "FAST": "0xE7af5160334aded39DD9826cBcBa0B51A1B184e9" + } + } + } + } + }, + "aavegotchi_item_bridge_testnet": { + "84532": { + "GOTCHI_ITEM": { + "isAppChain": false, + "NonMintableToken": "0x87C969d083189927049f8fF3747703FB9f7a8AEd", + "Vault": "0x130119B300049A80C20B2D3bfdFCfd021373E5e7", + "connectors": { + "631571": { + "FAST": "0xb8388b23222876FAC04b464fA0d6A064c67A14FC" + } + } + } + }, + "631571": { + "GOTCHI_ITEM": { + "isAppChain": true, + "MintableToken": "0x1F0eb9099b9c398323dcf2F133dFdAD9dE7cF994", + "Controller": "0x10Cf0D5C1986a7Aa98aDb3bfa3529c1BBDa59FB9", "connectors": { - "80002": { - "FAST": "0xCfDA1E919F0b9B9fAbb6863dBF662B7fa688D2fD" + "84532": { + "FAST": "0x27fA28c1f241E5dEA9AA583751E5D968a28FD9D5" } } } } } -} \ No newline at end of file +} diff --git a/script/constants/projectConstants/superbridge/aavegotchi_bridge_testnet.ts b/script/constants/projectConstants/superbridge/aavegotchi_bridge_testnet.ts index c5c7c832..ca4d0b9c 100644 --- a/script/constants/projectConstants/superbridge/aavegotchi_bridge_testnet.ts +++ b/script/constants/projectConstants/superbridge/aavegotchi_bridge_testnet.ts @@ -4,17 +4,17 @@ import { IntegrationTypes, } from "@socket.tech/dl-core"; import { Hooks, ProjectConstants } from "../../../../src"; -import { Tokens, NFTs } from "../../../../src/enums"; +import { NFTs, Tokens } from "../../../../src/enums"; // For testnet deployments, ChainSlug enum may not have some chains, therefore some keys will look like {421614:{}} instead of {[ChainSlug.ARBITRUM_SEPOLIA]:{}}. This wont affect the functionality of the project. export const pc: ProjectConstants = { [DeploymentMode.SURGE]: { [NFTs.GOTCHI]: { - vaultChains: [80002], - controllerChains: [398274], + vaultChains: [84532], + controllerChains: [631571], tokenAddresses: { - 80002: "0xC80DB01aeDAD5F6E3088c75F60E52f579Cf1D3Cb", - 398274: "0x6b54b36A54b068152f0f39FdA0Bf96e02176D95B", + 84532: "0x87C969d083189927049f8fF3747703FB9f7a8AEd", + 631571: "0x1F0eb9099b9c398323dcf2F133dFdAD9dE7cF994", }, hook: { hookType: Hooks.NO_HOOK, diff --git a/script/constants/projectConstants/superbridge/aavegotchi_item_bridge_testnet.ts b/script/constants/projectConstants/superbridge/aavegotchi_item_bridge_testnet.ts new file mode 100644 index 00000000..a02fa9e8 --- /dev/null +++ b/script/constants/projectConstants/superbridge/aavegotchi_item_bridge_testnet.ts @@ -0,0 +1,24 @@ +import { + ChainSlug, + DeploymentMode, + IntegrationTypes, +} from "@socket.tech/dl-core"; +import { Hooks, ProjectConstants } from "../../../../src"; +import { NFTs, Tokens } from "../../../../src/enums"; + +// For testnet deployments, ChainSlug enum may not have some chains, therefore some keys will look like {421614:{}} instead of {[ChainSlug.ARBITRUM_SEPOLIA]:{}}. This wont affect the functionality of the project. +export const pc: ProjectConstants = { + [DeploymentMode.SURGE]: { + [NFTs.GOTCHI_ITEM]: { + vaultChains: [84532], + controllerChains: [631571], + tokenAddresses: { + 84532: "0x87C969d083189927049f8fF3747703FB9f7a8AEd", + 631571: "0x1F0eb9099b9c398323dcf2F133dFdAD9dE7cF994", + }, + hook: { + hookType: Hooks.NO_HOOK, + }, + }, + }, +}; diff --git a/src/enums/projectType.ts b/src/enums/projectType.ts index 4a7023e5..992156f5 100644 --- a/src/enums/projectType.ts +++ b/src/enums/projectType.ts @@ -24,4 +24,5 @@ export const ProjectTypeMap: Record = { [Project.MAGIC_MAINNET]: ProjectType.SUPERTOKEN, [Project.POLTER_TESTNET]: ProjectType.SUPERBRIDGE, [Project.AAVEGOTCHI_BRIDGE_TESTNET]: ProjectType.SUPERBRIDGE, + [Project.AAVEGOTCHI_ITEM_BRIDGE_TESTNET]: ProjectType.SUPERBRIDGE, }; diff --git a/src/enums/projects.ts b/src/enums/projects.ts index 8b693d64..45f3abff 100644 --- a/src/enums/projects.ts +++ b/src/enums/projects.ts @@ -21,4 +21,5 @@ export enum Project { MAGIC_MAINNET = "magic_mainnet", POLTER_TESTNET = "polter_testnet", AAVEGOTCHI_BRIDGE_TESTNET = "aavegotchi_bridge_testnet", + AAVEGOTCHI_ITEM_BRIDGE_TESTNET = "aavegotchi_item_bridge_testnet", } From dd2d9b42359c954dfedd7f1efa22d4086fa375d2 Mon Sep 17 00:00:00 2001 From: Coderdan Date: Thu, 7 Nov 2024 13:26:17 +0800 Subject: [PATCH 49/57] add test/prod USDC and cleanup --- contracts/token/SuperToken.sol | 2 +- deployments/superbridge/prod_addresses.json | 39 ++++- .../prod_geist_bridge_mainnet_addresses.json | 50 ++++++ ...rod_geist_bridge_mainnet_verification.json | 164 ++++++++++++++++++ deployments/superbridge/surge_addresses.json | 30 +++- .../surge_geist_bridge_testnet_addresses.json | 28 +++ ...rge_geist_bridge_testnet_verification.json | 64 +++++++ .../surge_polter_testnet_addresses.json | 28 --- .../surge_polter_testnet_verification.json | 60 ------- package.json | 2 +- .../superbridge/geist_bridge_mainnet.ts | 55 ++++++ .../superbridge/geist_bridge_testnet.ts | 39 +++++ .../supertoken/socket_ghst_final_testnet.ts | 28 --- .../supertoken/socket_ghst_test2_testnet.ts | 28 --- .../supertoken/socket_ghst_test_testnet.ts | 28 --- .../supertoken/socket_ghst_testnet.ts | 8 +- script/helpers/networks.ts | 6 +- src/enums/existing-token-addresses.ts | 6 +- src/enums/projectType.ts | 2 + src/enums/projects.ts | 2 + yarn.lock | 69 ++------ 21 files changed, 492 insertions(+), 246 deletions(-) create mode 100644 deployments/superbridge/prod_geist_bridge_mainnet_addresses.json create mode 100644 deployments/superbridge/prod_geist_bridge_mainnet_verification.json create mode 100644 deployments/superbridge/surge_geist_bridge_testnet_addresses.json create mode 100644 deployments/superbridge/surge_geist_bridge_testnet_verification.json delete mode 100644 deployments/superbridge/surge_polter_testnet_addresses.json delete mode 100644 deployments/superbridge/surge_polter_testnet_verification.json create mode 100644 script/constants/projectConstants/superbridge/geist_bridge_mainnet.ts create mode 100644 script/constants/projectConstants/superbridge/geist_bridge_testnet.ts delete mode 100644 script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts delete mode 100644 script/constants/projectConstants/supertoken/socket_ghst_test2_testnet.ts delete mode 100644 script/constants/projectConstants/supertoken/socket_ghst_test_testnet.ts diff --git a/contracts/token/SuperToken.sol b/contracts/token/SuperToken.sol index 3eceeee5..8dc619b8 100644 --- a/contracts/token/SuperToken.sol +++ b/contracts/token/SuperToken.sol @@ -10,7 +10,7 @@ import "../interfaces/IHook.sol"; * @notice An ERC20 contract which enables bridging a token to its sibling chains. * @dev This contract implements ISuperTokenOrVault to support message bridging through IMessageBridge compliant contracts. */ -contract SuperToken_old is ERC20, RescueBase { +contract SuperToken is ERC20, RescueBase { // for all controller access (mint, burn) bytes32 constant CONTROLLER_ROLE = keccak256("CONTROLLER_ROLE"); diff --git a/deployments/superbridge/prod_addresses.json b/deployments/superbridge/prod_addresses.json index a3f1a7fb..5636422f 100644 --- a/deployments/superbridge/prod_addresses.json +++ b/deployments/superbridge/prod_addresses.json @@ -1228,5 +1228,42 @@ } } } + }, + "geist_bridge_mainnet": { + "137": { + "USDC": { + "isAppChain": false, + "NonMintableToken": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", + "Vault": "0x2CFFb0B0361838A9889Db3F5Ac7984B23D4988E9", + "LimitHook": "0x88c7a119f0FF028e7582062Bf63C0e0C138F84F6", + "connectors": { + "63157": { + "FAST": "0x3C3a6c106A4BF3859be474c1ee5E3Df25e38f052" + } + } + } + }, + "63157": { + "USDC": { + "isAppChain": true, + "MintableToken": "0xCFa0bC1ED6135166e9163211b4Ca566a0EE81e35", + "Controller": "0xfa17Cc60d20E973E6EC1731C9544B285F779fEb9", + "LimitHook": "0xe324C65F28bC5d55De665394f2DFc9d06af564Ca", + "connectors": { + "1": { + "FAST": "0xc9D1e8D5550c2f04738f75B321B4D8608f1dF20D" + }, + "137": { + "FAST": "0x29667Da5ba50Dc99d80545D989e535AbA5742c9F" + }, + "8453": { + "FAST": "0xb0e2796063935188e350F7256e06F803f1d28560" + }, + "42161": { + "FAST": "0xB34e7290df1d8Aa278CEd9e059e5AB0D27E18DF1" + } + } + } + } } -} +} \ No newline at end of file diff --git a/deployments/superbridge/prod_geist_bridge_mainnet_addresses.json b/deployments/superbridge/prod_geist_bridge_mainnet_addresses.json new file mode 100644 index 00000000..116f74db --- /dev/null +++ b/deployments/superbridge/prod_geist_bridge_mainnet_addresses.json @@ -0,0 +1,50 @@ +{ + "137": { + "USDC": { + "isAppChain": false, + "NonMintableToken": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", + "Vault": "0x2CFFb0B0361838A9889Db3F5Ac7984B23D4988E9", + "LimitHook": "0x88c7a119f0FF028e7582062Bf63C0e0C138F84F6", + "connectors": { + "63157": { + "FAST": "0x3C3a6c106A4BF3859be474c1ee5E3Df25e38f052" + } + } + } + }, + "8453": { + "USDC": { + "isAppChain": false, + "NonMintableToken": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", + "Vault": "0x3C3a6c106A4BF3859be474c1ee5E3Df25e38f052", + "LimitHook": "0xF66B88D03f284A21b9e1051de6cc8aEC5cac8893", + "connectors": { + "63157": { + "FAST": "0x3F791E8fbDEF7475f44e70f0eb4bEc89636aAdC8" + } + } + } + }, + "63157": { + "USDC": { + "isAppChain": true, + "MintableToken": "0xCFa0bC1ED6135166e9163211b4Ca566a0EE81e35", + "Controller": "0xfa17Cc60d20E973E6EC1731C9544B285F779fEb9", + "LimitHook": "0xe324C65F28bC5d55De665394f2DFc9d06af564Ca", + "connectors": { + "1": { + "FAST": "0xc9D1e8D5550c2f04738f75B321B4D8608f1dF20D" + }, + "137": { + "FAST": "0x29667Da5ba50Dc99d80545D989e535AbA5742c9F" + }, + "8453": { + "FAST": "0xb0e2796063935188e350F7256e06F803f1d28560" + }, + "42161": { + "FAST": "0xB34e7290df1d8Aa278CEd9e059e5AB0D27E18DF1" + } + } + } + } +} \ No newline at end of file diff --git a/deployments/superbridge/prod_geist_bridge_mainnet_verification.json b/deployments/superbridge/prod_geist_bridge_mainnet_verification.json new file mode 100644 index 00000000..ea59d259 --- /dev/null +++ b/deployments/superbridge/prod_geist_bridge_mainnet_verification.json @@ -0,0 +1,164 @@ +{ + "137": [ + [ + "0x3C3a6c106A4BF3859be474c1ee5E3Df25e38f052", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0x2CFFb0B0361838A9889Db3F5Ac7984B23D4988E9", + "0xc20687f8dc0ad51d01003013d1c5b02d10DED001", + 63157, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0x88c7a119f0FF028e7582062Bf63C0e0C138F84F6", + "LimitHook", + "contracts/hooks/LimitHook.sol", + [ + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0x2CFFb0B0361838A9889Db3F5Ac7984B23D4988E9", + false + ] + ], + [ + "0x2CFFb0B0361838A9889Db3F5Ac7984B23D4988E9", + "Vault", + "contracts/bridge/Vault.sol", + [ + "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359" + ] + ] + ], + "8453": [ + [ + "0x3F791E8fbDEF7475f44e70f0eb4bEc89636aAdC8", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0x3C3a6c106A4BF3859be474c1ee5E3Df25e38f052", + "0x12E6e58864cE4402cF2B4B8a8E9c75eAD7280156", + 63157, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0xF66B88D03f284A21b9e1051de6cc8aEC5cac8893", + "LimitHook", + "contracts/hooks/LimitHook.sol", + [ + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0x3C3a6c106A4BF3859be474c1ee5E3Df25e38f052", + false + ] + ], + [ + "0x3C3a6c106A4BF3859be474c1ee5E3Df25e38f052", + "Vault", + "contracts/bridge/Vault.sol", + [ + "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913" + ] + ], + [ + "0x88c7a119f0FF028e7582062Bf63C0e0C138F84F6", + "LimitHook", + "contracts/hooks/LimitHook.sol", + [ + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0x2CFFb0B0361838A9889Db3F5Ac7984B23D4988E9", + false + ] + ], + [ + "0x2CFFb0B0361838A9889Db3F5Ac7984B23D4988E9", + "Vault", + "contracts/bridge/Vault.sol", + [ + "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913" + ] + ] + ], + "63157": [ + [ + "0xb0e2796063935188e350F7256e06F803f1d28560", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0xfa17Cc60d20E973E6EC1731C9544B285F779fEb9", + "0x34464194a4aCD38F42060D144BF3729F625Ff047", + 8453, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0xB34e7290df1d8Aa278CEd9e059e5AB0D27E18DF1", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0xfa17Cc60d20E973E6EC1731C9544B285F779fEb9", + "0x34464194a4aCD38F42060D144BF3729F625Ff047", + 42161, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0x29667Da5ba50Dc99d80545D989e535AbA5742c9F", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0xfa17Cc60d20E973E6EC1731C9544B285F779fEb9", + "0x34464194a4aCD38F42060D144BF3729F625Ff047", + 137, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0xc9D1e8D5550c2f04738f75B321B4D8608f1dF20D", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0xfa17Cc60d20E973E6EC1731C9544B285F779fEb9", + "0x34464194a4aCD38F42060D144BF3729F625Ff047", + 1, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0xe324C65F28bC5d55De665394f2DFc9d06af564Ca", + "LimitHook", + "contracts/hooks/LimitHook.sol", + [ + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0xfa17Cc60d20E973E6EC1731C9544B285F779fEb9", + true + ] + ], + [ + "0xfa17Cc60d20E973E6EC1731C9544B285F779fEb9", + "Controller", + "contracts/bridge/Controller.sol", + [ + "0xCFa0bC1ED6135166e9163211b4Ca566a0EE81e35" + ] + ], + [ + "0x978c0D945DcAa716fe24bb231eAeeA703e82C439", + "LimitHook", + "contracts/hooks/LimitHook.sol", + [ + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0x1eD34c0C9b0f08Bb013CD16E4b75A77cf47cE919", + true + ] + ], + [ + "0x1eD34c0C9b0f08Bb013CD16E4b75A77cf47cE919", + "Controller", + "contracts/bridge/Controller.sol", + [ + "0xCFa0bC1ED6135166e9163211b4Ca566a0EE81e35" + ] + ] + ] +} \ No newline at end of file diff --git a/deployments/superbridge/surge_addresses.json b/deployments/superbridge/surge_addresses.json index c31fdd65..5c740458 100644 --- a/deployments/superbridge/surge_addresses.json +++ b/deployments/superbridge/surge_addresses.json @@ -52,5 +52,33 @@ } } } + }, + "geist_bridge_testnet": { + "80002": { + "USDC": { + "isAppChain": false, + "NonMintableToken": "0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582", + "Vault": "0x89165bCD984995FA5e5E0C23B1460bdc6102701B", + "LimitHook": "0x81b129DA3c4456534B140402956039146c85a378", + "connectors": { + "631571": { + "FAST": "0xD1b06A7D98Bcd581D9C61B43c7582BA080D1bfE7" + } + } + } + }, + "631571": { + "USDC": { + "isAppChain": true, + "MintableToken": "0x6cF5c0342c98E9D344aFd44A8AE399DbF4E018fC", + "Controller": "0x0c8a0818B0816fB5E41073f8715Bae058E5e6C07", + "LimitHook": "0x8408ED5690C3C51369BE22ecb7E5eE28612145Dd", + "connectors": { + "80002": { + "FAST": "0xFA36f2B7b92227696123A194c36454EDD5450a39" + } + } + } + } } -} +} \ No newline at end of file diff --git a/deployments/superbridge/surge_geist_bridge_testnet_addresses.json b/deployments/superbridge/surge_geist_bridge_testnet_addresses.json new file mode 100644 index 00000000..db9b18a9 --- /dev/null +++ b/deployments/superbridge/surge_geist_bridge_testnet_addresses.json @@ -0,0 +1,28 @@ +{ + "80002": { + "USDC": { + "isAppChain": false, + "NonMintableToken": "0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582", + "Vault": "0x89165bCD984995FA5e5E0C23B1460bdc6102701B", + "LimitHook": "0x81b129DA3c4456534B140402956039146c85a378", + "connectors": { + "631571": { + "FAST": "0xD1b06A7D98Bcd581D9C61B43c7582BA080D1bfE7" + } + } + } + }, + "631571": { + "USDC": { + "isAppChain": true, + "MintableToken": "0x6cF5c0342c98E9D344aFd44A8AE399DbF4E018fC", + "Controller": "0x0c8a0818B0816fB5E41073f8715Bae058E5e6C07", + "LimitHook": "0x8408ED5690C3C51369BE22ecb7E5eE28612145Dd", + "connectors": { + "80002": { + "FAST": "0xFA36f2B7b92227696123A194c36454EDD5450a39" + } + } + } + } +} \ No newline at end of file diff --git a/deployments/superbridge/surge_geist_bridge_testnet_verification.json b/deployments/superbridge/surge_geist_bridge_testnet_verification.json new file mode 100644 index 00000000..376c3848 --- /dev/null +++ b/deployments/superbridge/surge_geist_bridge_testnet_verification.json @@ -0,0 +1,64 @@ +{ + "80002": [ + [ + "0xD1b06A7D98Bcd581D9C61B43c7582BA080D1bfE7", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0x89165bCD984995FA5e5E0C23B1460bdc6102701B", + "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", + 631571, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0x81b129DA3c4456534B140402956039146c85a378", + "LimitHook", + "contracts/hooks/LimitHook.sol", + [ + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0x89165bCD984995FA5e5E0C23B1460bdc6102701B", + false + ] + ], + [ + "0x89165bCD984995FA5e5E0C23B1460bdc6102701B", + "Vault", + "contracts/bridge/Vault.sol", + [ + "0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582" + ] + ] + ], + "631571": [ + [ + "0xFA36f2B7b92227696123A194c36454EDD5450a39", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0x0c8a0818B0816fB5E41073f8715Bae058E5e6C07", + "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", + 80002, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0x8408ED5690C3C51369BE22ecb7E5eE28612145Dd", + "LimitHook", + "contracts/hooks/LimitHook.sol", + [ + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0x0c8a0818B0816fB5E41073f8715Bae058E5e6C07", + true + ] + ], + [ + "0x0c8a0818B0816fB5E41073f8715Bae058E5e6C07", + "Controller", + "contracts/bridge/Controller.sol", + [ + "0x6cF5c0342c98E9D344aFd44A8AE399DbF4E018fC" + ] + ] + ] +} \ No newline at end of file diff --git a/deployments/superbridge/surge_polter_testnet_addresses.json b/deployments/superbridge/surge_polter_testnet_addresses.json deleted file mode 100644 index 2f6acc96..00000000 --- a/deployments/superbridge/surge_polter_testnet_addresses.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "398274": { - "USDC": { - "isAppChain": true, - "MintableToken": "0x15Bb97f748B341D1f464A7257d75da879D83fC9F", - "Controller": "0xb5B1e1Ba18d323a2a7313f970bF4310cF8d60B8D", - "LimitHook": "0x06F92b5D06D54802601CBAf862fe549e7EaedcF7", - "connectors": { - "421614": { - "FAST": "0xBec0d54fC3ba4b264e816328a5C60F2Ca48f9aEf" - } - } - } - }, - "421614": { - "USDC": { - "isAppChain": false, - "NonMintableToken": "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", - "Vault": "0xa9d73443b11596D3D44BfafA052c07b7833fF736", - "LimitHook": "0x6d64dE68a6BBC57AfDf5ba9B32469c66238d1A07", - "connectors": { - "398274": { - "FAST": "0xC95e769b47eaDAf9057a9EDF735707B97b4CC9aA" - } - } - } - } -} diff --git a/deployments/superbridge/surge_polter_testnet_verification.json b/deployments/superbridge/surge_polter_testnet_verification.json deleted file mode 100644 index 99200526..00000000 --- a/deployments/superbridge/surge_polter_testnet_verification.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "398274": [ - [ - "0xBec0d54fC3ba4b264e816328a5C60F2Ca48f9aEf", - "ConnectorPlug", - "contracts/ConnectorPlug.sol", - [ - "0xb5B1e1Ba18d323a2a7313f970bF4310cF8d60B8D", - "0x5C4186D343EeF952c9ED886E45F8243edf0A503F", - 421614, - "0x0000000000000000000000000000000000000000000000000000000000000000" - ] - ], - [ - "0x06F92b5D06D54802601CBAf862fe549e7EaedcF7", - "LimitHook", - "contracts/hooks/LimitHook.sol", - [ - "0x44A44837894B5eDC2Bde64567FC62599b3b88F4C", - "0xb5B1e1Ba18d323a2a7313f970bF4310cF8d60B8D", - true - ] - ], - [ - "0xb5B1e1Ba18d323a2a7313f970bF4310cF8d60B8D", - "Controller", - "contracts/bridge/Controller.sol", - ["0x15Bb97f748B341D1f464A7257d75da879D83fC9F"] - ] - ], - "421614": [ - [ - "0xC95e769b47eaDAf9057a9EDF735707B97b4CC9aA", - "ConnectorPlug", - "contracts/ConnectorPlug.sol", - [ - "0xa9d73443b11596D3D44BfafA052c07b7833fF736", - "0x5798C2D27Db969fda2E43dE0871C21823E6418B8", - 398274, - "0x0000000000000000000000000000000000000000000000000000000000000000" - ] - ], - [ - "0x6d64dE68a6BBC57AfDf5ba9B32469c66238d1A07", - "LimitHook", - "contracts/hooks/LimitHook.sol", - [ - "0x44A44837894B5eDC2Bde64567FC62599b3b88F4C", - "0xa9d73443b11596D3D44BfafA052c07b7833fF736", - false - ] - ], - [ - "0xa9d73443b11596D3D44BfafA052c07b7833fF736", - "Vault", - "contracts/bridge/Vault.sol", - ["0x8537307810fC40F4073A12a38554D4Ff78EfFf41"] - ] - ] -} diff --git a/package.json b/package.json index 27851b37..41a66e53 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "dependencies": { "@arbitrum/sdk": "^3.7.0", "@eth-optimism/sdk": "^3.3.2", - "@socket.tech/dl-core": "^2.31.0", + "@socket.tech/dl-core": "^2.32.0", "lodash": "^4.17.21", "prompts": "^2.4.2" } diff --git a/script/constants/projectConstants/superbridge/geist_bridge_mainnet.ts b/script/constants/projectConstants/superbridge/geist_bridge_mainnet.ts new file mode 100644 index 00000000..be6416e1 --- /dev/null +++ b/script/constants/projectConstants/superbridge/geist_bridge_mainnet.ts @@ -0,0 +1,55 @@ +import { + ChainSlug, + DeploymentMode, + IntegrationTypes, +} from "@socket.tech/dl-core"; +import { Hooks, ProjectConstants } from "../../../../src"; +import { NFTs, Tokens } from "../../../../src/enums"; + +// For testnet deployments, ChainSlug enum may not have some chains, therefore some keys will look like {421614:{}} instead of {[ChainSlug.ARBITRUM_SEPOLIA]:{}}. This wont affect the functionality of the project. +export const pc: ProjectConstants = { + [DeploymentMode.PROD]: { + [Tokens.USDC]: { + vaultChains: [ChainSlug.POLYGON_MAINNET /*ChainSlug.BASE*/], + controllerChains: [ChainSlug.GEIST], + tokenAddresses: { + [ChainSlug.GEIST]: "0xCFa0bC1ED6135166e9163211b4Ca566a0EE81e35", + }, + hook: { + hookType: Hooks.LIMIT_HOOK, + limitsAndPoolId: { + // [ChainSlug.MAINNET]: { + // [IntegrationTypes.fast]: { + // sendingLimit: "100000", + // receivingLimit: "100000", + // }, + // }, + [ChainSlug.POLYGON_MAINNET]: { + [IntegrationTypes.fast]: { + sendingLimit: "100000", + receivingLimit: "100000", + }, + }, + [ChainSlug.BASE]: { + [IntegrationTypes.fast]: { + sendingLimit: "100000", + receivingLimit: "100000", + }, + }, + // [ChainSlug.ARBITRUM]: { + // [IntegrationTypes.fast]: { + // sendingLimit: "100000", + // receivingLimit: "100000", + // }, + // }, + [ChainSlug.GEIST]: { + [IntegrationTypes.fast]: { + sendingLimit: "100000", + receivingLimit: "100000", + }, + }, + }, + }, + }, + }, +}; diff --git a/script/constants/projectConstants/superbridge/geist_bridge_testnet.ts b/script/constants/projectConstants/superbridge/geist_bridge_testnet.ts new file mode 100644 index 00000000..791c83a3 --- /dev/null +++ b/script/constants/projectConstants/superbridge/geist_bridge_testnet.ts @@ -0,0 +1,39 @@ + +import { + ChainSlug, + DeploymentMode, + IntegrationTypes, +} from "@socket.tech/dl-core"; +import { Hooks, ProjectConstants } from "../../../../src"; +import { NFTs, Tokens } from "../../../../src/enums"; + +// For testnet deployments, ChainSlug enum may not have some chains, therefore some keys will look like {421614:{}} instead of {[ChainSlug.ARBITRUM_SEPOLIA]:{}}. This wont affect the functionality of the project. +export const pc: ProjectConstants = { + [DeploymentMode.SURGE]: { + [Tokens.USDC]: { + vaultChains: [80002], + controllerChains: [631571], + tokenAddresses: { + 80002: "0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582", + 631571: "0x6cF5c0342c98E9D344aFd44A8AE399DbF4E018fC" + }, + hook: { + hookType: Hooks.LIMIT_HOOK, + limitsAndPoolId: { + 80002: { + [IntegrationTypes.fast]: { + sendingLimit: "100000", + receivingLimit: "100000" + } + }, + 631571: { + [IntegrationTypes.fast]: { + sendingLimit: "100000", + receivingLimit: "100000" + } + } + } + } + } + } +}; diff --git a/script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts b/script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts deleted file mode 100644 index 1a6e779e..00000000 --- a/script/constants/projectConstants/supertoken/socket_ghst_final_testnet.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { - ChainSlug, - DeploymentMode, - IntegrationTypes, -} from "@socket.tech/dl-core"; -import { Hooks, ProjectConstants } from "../../../../src"; -import { NFTs, Tokens } from "../../../../src/enums"; - -// For testnet deployments, ChainSlug enum may not have some chains, therefore some keys will look like {421614:{}} instead of {[ChainSlug.ARBITRUM_SEPOLIA]:{}}. This wont affect the functionality of the project. -export const pc: ProjectConstants = { - [DeploymentMode.SURGE]: { - [Tokens.SGHST]: { - vaultChains: [80002], - controllerChains: [631571], - hook: { - hookType: Hooks.UNWRAP_HOOK, - }, - superTokenInfo: { - name: "Aavegotchi Socket GHST", - symbol: Tokens.SGHST, - decimals: 18, - owner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - initialSupplyOwner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - initialSupply: "0", - }, - }, - }, -}; diff --git a/script/constants/projectConstants/supertoken/socket_ghst_test2_testnet.ts b/script/constants/projectConstants/supertoken/socket_ghst_test2_testnet.ts deleted file mode 100644 index 1a6e779e..00000000 --- a/script/constants/projectConstants/supertoken/socket_ghst_test2_testnet.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { - ChainSlug, - DeploymentMode, - IntegrationTypes, -} from "@socket.tech/dl-core"; -import { Hooks, ProjectConstants } from "../../../../src"; -import { NFTs, Tokens } from "../../../../src/enums"; - -// For testnet deployments, ChainSlug enum may not have some chains, therefore some keys will look like {421614:{}} instead of {[ChainSlug.ARBITRUM_SEPOLIA]:{}}. This wont affect the functionality of the project. -export const pc: ProjectConstants = { - [DeploymentMode.SURGE]: { - [Tokens.SGHST]: { - vaultChains: [80002], - controllerChains: [631571], - hook: { - hookType: Hooks.UNWRAP_HOOK, - }, - superTokenInfo: { - name: "Aavegotchi Socket GHST", - symbol: Tokens.SGHST, - decimals: 18, - owner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - initialSupplyOwner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - initialSupply: "0", - }, - }, - }, -}; diff --git a/script/constants/projectConstants/supertoken/socket_ghst_test_testnet.ts b/script/constants/projectConstants/supertoken/socket_ghst_test_testnet.ts deleted file mode 100644 index 1a6e779e..00000000 --- a/script/constants/projectConstants/supertoken/socket_ghst_test_testnet.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { - ChainSlug, - DeploymentMode, - IntegrationTypes, -} from "@socket.tech/dl-core"; -import { Hooks, ProjectConstants } from "../../../../src"; -import { NFTs, Tokens } from "../../../../src/enums"; - -// For testnet deployments, ChainSlug enum may not have some chains, therefore some keys will look like {421614:{}} instead of {[ChainSlug.ARBITRUM_SEPOLIA]:{}}. This wont affect the functionality of the project. -export const pc: ProjectConstants = { - [DeploymentMode.SURGE]: { - [Tokens.SGHST]: { - vaultChains: [80002], - controllerChains: [631571], - hook: { - hookType: Hooks.UNWRAP_HOOK, - }, - superTokenInfo: { - name: "Aavegotchi Socket GHST", - symbol: Tokens.SGHST, - decimals: 18, - owner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - initialSupplyOwner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - initialSupply: "0", - }, - }, - }, -}; diff --git a/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts b/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts index 50cf0740..471c65e7 100644 --- a/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts +++ b/script/constants/projectConstants/supertoken/socket_ghst_testnet.ts @@ -1,10 +1,6 @@ -import { - ChainSlug, - DeploymentMode, - IntegrationTypes, -} from "@socket.tech/dl-core"; +import { DeploymentMode } from "@socket.tech/dl-core"; import { Hooks, ProjectConstants } from "../../../../src"; -import { NFTs, Tokens } from "../../../../src/enums"; +import { Tokens } from "../../../../src/enums"; // For testnet deployments, ChainSlug enum may not have some chains, therefore some keys will look like {421614:{}} instead of {[ChainSlug.ARBITRUM_SEPOLIA]:{}}. This wont affect the functionality of the project. export const pc: ProjectConstants = { diff --git a/script/helpers/networks.ts b/script/helpers/networks.ts index 6df1681e..8d1e6d39 100644 --- a/script/helpers/networks.ts +++ b/script/helpers/networks.ts @@ -79,9 +79,9 @@ export const overrides: { gasPrice, }, [ChainSlug.POLYGON_MAINNET]: { - // type: 1, + type: 1, // gasLimit: 1_000_000, - // gasPrice: 50_000_000_000, + gasPrice: 300_000_000_000, }, [ChainSlug.BSC]: { // type: 1, @@ -90,7 +90,7 @@ export const overrides: { }, [ChainSlug.BASE]: { // type: 1, - // gasLimit: 5_000_000, + gasLimit: 5_000_000, // gasPrice, }, [ChainSlug.REYA_CRONOS]: { diff --git a/src/enums/existing-token-addresses.ts b/src/enums/existing-token-addresses.ts index 4907d043..c8317788 100644 --- a/src/enums/existing-token-addresses.ts +++ b/src/enums/existing-token-addresses.ts @@ -65,9 +65,9 @@ export const ExistingTokenAddresses: { [Tokens.MAGIC]: "0x539bde0d7dbd336b79148aa742883198bbf60342", [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", }, - 80002: { - [Tokens.SGHST]: "0xF679b8D109b2d23931237Ce948a7D784727c0897", - }, + // 80002: { + // [Tokens.SGHST]: "0xF679b8D109b2d23931237Ce948a7D784727c0897", + // }, [ChainSlug.ARBITRUM_SEPOLIA]: { [Tokens.USDC]: "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", [Tokens.USDT]: "0x66DFb9987C36c4be232156e70B085f664367599A", diff --git a/src/enums/projectType.ts b/src/enums/projectType.ts index d546a350..75013fc4 100644 --- a/src/enums/projectType.ts +++ b/src/enums/projectType.ts @@ -27,4 +27,6 @@ export const ProjectTypeMap: Record = { [Project.SOCKET_GHST_TEST_TESTNET]: ProjectType.SUPERTOKEN, [Project.GHST_UNWRAPSUPERTOKEN_TESTNET]: ProjectType.SUPERTOKEN, [Project.SOCKET_GHST_TESTNET]: ProjectType.SUPERTOKEN, + [Project.GEIST_BRIDGE_TESTNET]: ProjectType.SUPERBRIDGE, + [Project.GEIST_BRIDGE_MAINNET]: ProjectType.SUPERBRIDGE, }; diff --git a/src/enums/projects.ts b/src/enums/projects.ts index 7d96d7d1..b6dafcbe 100644 --- a/src/enums/projects.ts +++ b/src/enums/projects.ts @@ -24,4 +24,6 @@ export enum Project { SOCKET_GHST_TEST_TESTNET = "socket_ghst_test_testnet", GHST_UNWRAPSUPERTOKEN_TESTNET = "ghst_unwrapsupertoken_testnet", SOCKET_GHST_TESTNET = "socket_ghst_testnet", + GEIST_BRIDGE_TESTNET = "geist_bridge_testnet", + GEIST_BRIDGE_MAINNET = "geist_bridge_mainnet", } diff --git a/yarn.lock b/yarn.lock index b09ab95c..ed261a72 100644 --- a/yarn.lock +++ b/yarn.lock @@ -568,24 +568,6 @@ "@nomicfoundation/ethereumjs-rlp" "5.0.4" ethereum-cryptography "0.1.3" -"@nomicfoundation/hardhat-chai-matchers@^2.0.8": - version "2.0.8" - resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-chai-matchers/-/hardhat-chai-matchers-2.0.8.tgz#9c7cfc4ad0f0a5e9cf16aba8ab668c02f6e273aa" - integrity sha512-Z5PiCXH4xhNLASROlSUOADfhfpfhYO6D7Hn9xp8PddmHey0jq704cr6kfU8TRrQ4PUZbpfsZadPj+pCfZdjPIg== - dependencies: - "@types/chai-as-promised" "^7.1.3" - chai-as-promised "^7.1.1" - deep-eql "^4.0.1" - ordinal "^1.0.3" - -"@nomicfoundation/hardhat-ethers@^3.0.8": - version "3.0.8" - resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-ethers/-/hardhat-ethers-3.0.8.tgz#af078f566373abeb77e11cbe69fe3dd47f8bfc27" - integrity sha512-zhOZ4hdRORls31DTOqg+GmEZM0ujly8GGIuRY7t7szEk2zW/arY1qDug/py8AEktT00v5K+b6RvbVog+va51IA== - dependencies: - debug "^4.1.1" - lodash.isequal "^4.5.0" - "@nomicfoundation/hardhat-foundry@^1.1.2": version "1.1.2" resolved "https://registry.npmjs.org/@nomicfoundation/hardhat-foundry/-/hardhat-foundry-1.1.2.tgz" @@ -659,7 +641,7 @@ "@nomicfoundation/solidity-analyzer-win32-ia32-msvc" "0.1.1" "@nomicfoundation/solidity-analyzer-win32-x64-msvc" "0.1.1" -"@nomiclabs/hardhat-ethers@^2.0.1": +"@nomiclabs/hardhat-ethers@^2.1.1": version "2.2.3" resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.2.3.tgz#b41053e360c31a32c2640c9a45ee981a7e603fe0" integrity sha512-YhzPdzb612X591FOe68q+qXVXGG2ANZRvDo0RRUtimev85rCrAlv/TLMEZw5c+kq9AbzocLTVX/h2jVIFPL9Xg== @@ -787,10 +769,10 @@ "@sentry/types" "5.30.0" tslib "^1.9.3" -"@socket.tech/dl-core@^2.31.0": - version "2.31.0" - resolved "https://registry.yarnpkg.com/@socket.tech/dl-core/-/dl-core-2.31.0.tgz#496465b4240f2ee9dfc593235b10f5861713e1b5" - integrity sha512-FqvFWbSWiIXY/evzbbn+CNYtBzKKbmUBm0jA8nWxgaQNs7F0B3aueUwkXAHTHKE5iCcV5Fqfg+V8hfsmBq2uiQ== +"@socket.tech/dl-core@^2.32.0": + version "2.32.0" + resolved "https://registry.yarnpkg.com/@socket.tech/dl-core/-/dl-core-2.32.0.tgz#c6c202e40635f2288aa68e6f3a96e7f017373f6b" + integrity sha512-KOnXdReUMvf08F3cJ8O+xFawi8W2eVXicg9J7ApVQpW7XBgF0TEdNhs7H8NaU5VeQIWcnh40H65OWJI4pxwuAw== dependencies: axios "^1.3.6" prompts "^2.4.2" @@ -823,10 +805,10 @@ resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz" integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== -"@typechain/ethers-v5@^11.1.2": - version "11.1.2" - resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-11.1.2.tgz#82510c1744f37a2f906b9e0532ac18c0b74ffe69" - integrity sha512-ID6pqWkao54EuUQa0P5RgjvfA3MYqxUQKpbGKERbsjBW5Ra7EIXvbMlPp2pcP5IAdUkyMCFYsP2SN5q7mPdLDQ== +"@typechain/ethers-v5@^10.0.0": + version "10.2.1" + resolved "https://registry.yarnpkg.com/@typechain/ethers-v5/-/ethers-v5-10.2.1.tgz#50241e6957683281ecfa03fb5a6724d8a3ce2391" + integrity sha512-n3tQmCZjRE6IU4h6lqUGiQ1j866n5MTCBJreNEHHVWXa2u9GJTaeYyU1/k+1qLutkyw+sS6VAN+AbeiTqsxd/A== dependencies: lodash "^4.17.15" ts-essentials "^7.0.1" @@ -852,18 +834,6 @@ dependencies: "@types/node" "*" -"@types/chai-as-promised@^7.1.3": - version "7.1.8" - resolved "https://registry.yarnpkg.com/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz#f2b3d82d53c59626b5d6bbc087667ccb4b677fe9" - integrity sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw== - dependencies: - "@types/chai" "*" - -"@types/chai@*": - version "5.0.0" - resolved "https://registry.yarnpkg.com/@types/chai/-/chai-5.0.0.tgz#7f981e71e69c9b2d422f58f78de1c59179782133" - integrity sha512-+DwhEHAaFPPdJ2ral3kNHFQXnTfscEEFsUxzD+d7nlcLrFK23JtNjH71RGasTcHb88b4vVi4mTyfpf8u2L8bdA== - "@types/lru-cache@^5.1.0": version "5.1.1" resolved "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz" @@ -1260,13 +1230,6 @@ cbor@^8.1.0: dependencies: nofilter "^3.1.0" -chai-as-promised@^7.1.1: - version "7.1.2" - resolved "https://registry.yarnpkg.com/chai-as-promised/-/chai-as-promised-7.1.2.tgz#70cd73b74afd519754161386421fb71832c6d041" - integrity sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw== - dependencies: - check-error "^1.0.2" - chai@^4.3.10, chai@^4.3.4: version "4.4.1" resolved "https://registry.npmjs.org/chai/-/chai-4.4.1.tgz" @@ -1297,7 +1260,7 @@ chalk@^4.1.0, chalk@^4.1.2: ansi-styles "^4.1.0" supports-color "^7.1.0" -check-error@^1.0.2, check-error@^1.0.3: +check-error@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz" integrity sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg== @@ -1500,7 +1463,7 @@ decamelize@^4.0.0: resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz" integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== -deep-eql@^4.0.1, deep-eql@^4.1.3: +deep-eql@^4.1.3: version "4.1.4" resolved "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz" integrity sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg== @@ -2255,11 +2218,6 @@ lodash.camelcase@^4.3.0: resolved "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz" integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== -lodash.isequal@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" - integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ== - lodash.truncate@^4.4.2: version "4.4.2" resolved "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz" @@ -2494,11 +2452,6 @@ once@^1.3.0: dependencies: wrappy "1" -ordinal@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/ordinal/-/ordinal-1.0.3.tgz#1a3c7726a61728112f50944ad7c35c06ae3a0d4d" - integrity sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ== - os-shim@^0.1.2: version "0.1.3" resolved "https://registry.npmjs.org/os-shim/-/os-shim-0.1.3.tgz" From 153df4c1e35aed92451af37c2947de55a1831c41 Mon Sep 17 00:00:00 2001 From: Coderdan Date: Thu, 7 Nov 2024 15:44:54 +0800 Subject: [PATCH 50/57] chore: formatting --- deployments/superbridge/prod_addresses.json | 2 +- .../prod_geist_bridge_mainnet_addresses.json | 2 +- ...rod_geist_bridge_mainnet_verification.json | 22 +++++-------------- deployments/superbridge/surge_addresses.json | 2 +- .../surge_geist_bridge_testnet_addresses.json | 2 +- ...rge_geist_bridge_testnet_verification.json | 10 +++------ .../superbridge/geist_bridge_testnet.ts | 21 +++++++++--------- 7 files changed, 23 insertions(+), 38 deletions(-) diff --git a/deployments/superbridge/prod_addresses.json b/deployments/superbridge/prod_addresses.json index 5636422f..16acd55a 100644 --- a/deployments/superbridge/prod_addresses.json +++ b/deployments/superbridge/prod_addresses.json @@ -1266,4 +1266,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/superbridge/prod_geist_bridge_mainnet_addresses.json b/deployments/superbridge/prod_geist_bridge_mainnet_addresses.json index 116f74db..577bbfad 100644 --- a/deployments/superbridge/prod_geist_bridge_mainnet_addresses.json +++ b/deployments/superbridge/prod_geist_bridge_mainnet_addresses.json @@ -47,4 +47,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/superbridge/prod_geist_bridge_mainnet_verification.json b/deployments/superbridge/prod_geist_bridge_mainnet_verification.json index ea59d259..f1eb427f 100644 --- a/deployments/superbridge/prod_geist_bridge_mainnet_verification.json +++ b/deployments/superbridge/prod_geist_bridge_mainnet_verification.json @@ -25,9 +25,7 @@ "0x2CFFb0B0361838A9889Db3F5Ac7984B23D4988E9", "Vault", "contracts/bridge/Vault.sol", - [ - "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359" - ] + ["0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"] ] ], "8453": [ @@ -56,9 +54,7 @@ "0x3C3a6c106A4BF3859be474c1ee5E3Df25e38f052", "Vault", "contracts/bridge/Vault.sol", - [ - "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913" - ] + ["0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"] ], [ "0x88c7a119f0FF028e7582062Bf63C0e0C138F84F6", @@ -74,9 +70,7 @@ "0x2CFFb0B0361838A9889Db3F5Ac7984B23D4988E9", "Vault", "contracts/bridge/Vault.sol", - [ - "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913" - ] + ["0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"] ] ], "63157": [ @@ -138,9 +132,7 @@ "0xfa17Cc60d20E973E6EC1731C9544B285F779fEb9", "Controller", "contracts/bridge/Controller.sol", - [ - "0xCFa0bC1ED6135166e9163211b4Ca566a0EE81e35" - ] + ["0xCFa0bC1ED6135166e9163211b4Ca566a0EE81e35"] ], [ "0x978c0D945DcAa716fe24bb231eAeeA703e82C439", @@ -156,9 +148,7 @@ "0x1eD34c0C9b0f08Bb013CD16E4b75A77cf47cE919", "Controller", "contracts/bridge/Controller.sol", - [ - "0xCFa0bC1ED6135166e9163211b4Ca566a0EE81e35" - ] + ["0xCFa0bC1ED6135166e9163211b4Ca566a0EE81e35"] ] ] -} \ No newline at end of file +} diff --git a/deployments/superbridge/surge_addresses.json b/deployments/superbridge/surge_addresses.json index 5c740458..0fdcc4ad 100644 --- a/deployments/superbridge/surge_addresses.json +++ b/deployments/superbridge/surge_addresses.json @@ -81,4 +81,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/superbridge/surge_geist_bridge_testnet_addresses.json b/deployments/superbridge/surge_geist_bridge_testnet_addresses.json index db9b18a9..28aa087d 100644 --- a/deployments/superbridge/surge_geist_bridge_testnet_addresses.json +++ b/deployments/superbridge/surge_geist_bridge_testnet_addresses.json @@ -25,4 +25,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/superbridge/surge_geist_bridge_testnet_verification.json b/deployments/superbridge/surge_geist_bridge_testnet_verification.json index 376c3848..99a694c6 100644 --- a/deployments/superbridge/surge_geist_bridge_testnet_verification.json +++ b/deployments/superbridge/surge_geist_bridge_testnet_verification.json @@ -25,9 +25,7 @@ "0x89165bCD984995FA5e5E0C23B1460bdc6102701B", "Vault", "contracts/bridge/Vault.sol", - [ - "0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582" - ] + ["0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582"] ] ], "631571": [ @@ -56,9 +54,7 @@ "0x0c8a0818B0816fB5E41073f8715Bae058E5e6C07", "Controller", "contracts/bridge/Controller.sol", - [ - "0x6cF5c0342c98E9D344aFd44A8AE399DbF4E018fC" - ] + ["0x6cF5c0342c98E9D344aFd44A8AE399DbF4E018fC"] ] ] -} \ No newline at end of file +} diff --git a/script/constants/projectConstants/superbridge/geist_bridge_testnet.ts b/script/constants/projectConstants/superbridge/geist_bridge_testnet.ts index 791c83a3..18a1afbe 100644 --- a/script/constants/projectConstants/superbridge/geist_bridge_testnet.ts +++ b/script/constants/projectConstants/superbridge/geist_bridge_testnet.ts @@ -1,4 +1,3 @@ - import { ChainSlug, DeploymentMode, @@ -15,7 +14,7 @@ export const pc: ProjectConstants = { controllerChains: [631571], tokenAddresses: { 80002: "0x41e94eb019c0762f9bfcf9fb1e58725bfb0e7582", - 631571: "0x6cF5c0342c98E9D344aFd44A8AE399DbF4E018fC" + 631571: "0x6cF5c0342c98E9D344aFd44A8AE399DbF4E018fC", }, hook: { hookType: Hooks.LIMIT_HOOK, @@ -23,17 +22,17 @@ export const pc: ProjectConstants = { 80002: { [IntegrationTypes.fast]: { sendingLimit: "100000", - receivingLimit: "100000" - } + receivingLimit: "100000", + }, }, 631571: { [IntegrationTypes.fast]: { sendingLimit: "100000", - receivingLimit: "100000" - } - } - } - } - } - } + receivingLimit: "100000", + }, + }, + }, + }, + }, + }, }; From c53a96e7543fbe5906c24fe813a55bc141045e04 Mon Sep 17 00:00:00 2001 From: Coderdan Date: Thu, 7 Nov 2024 16:27:57 +0800 Subject: [PATCH 51/57] chore: add SGHST on mainnet and cleanup --- deployments/supertoken/prod_addresses.json | 28 ++- .../prod_socket_ghst_mainnet_addresses.json | 26 +++ ...prod_socket_ghst_mainnet_verification.json | 82 +++++++ .../superbridge/polter_testnet.ts | 37 ---- .../supertoken/socket_ghst_mainnet.ts | 29 +++ src/enums/existing-token-addresses.ts | 203 +++++++++--------- src/enums/projectType.ts | 10 +- src/enums/projects.ts | 4 +- 8 files changed, 270 insertions(+), 149 deletions(-) create mode 100644 deployments/supertoken/prod_socket_ghst_mainnet_addresses.json create mode 100644 deployments/supertoken/prod_socket_ghst_mainnet_verification.json delete mode 100644 script/constants/projectConstants/superbridge/polter_testnet.ts create mode 100644 script/constants/projectConstants/supertoken/socket_ghst_mainnet.ts diff --git a/deployments/supertoken/prod_addresses.json b/deployments/supertoken/prod_addresses.json index bdeac96d..c7157531 100644 --- a/deployments/supertoken/prod_addresses.json +++ b/deployments/supertoken/prod_addresses.json @@ -253,5 +253,31 @@ } } } + }, + "socket_ghst_mainnet": { + "137": { + "SGHST": { + "NonMintableToken": "0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7", + "Vault": "0x2a9e7A2A9FeD4A83F59125cFf72761E467cEa419", + "UnwrapHook": "0xA32137bfb57d2b6A9Fd2956Ba4B54741a6D54b58", + "connectors": { + "63157": { + "FAST": "0x21F842dAb0E1FF3D39E4E8db8510303c80327f61" + } + } + } + }, + "63157": { + "SGHST": { + "UnwrapSuperToken": "0x78860E9be983caBCdA2C101cbc185B23Efd1F4Cc", + "Controller": "0x8C1e6969Ca76Ca73a9B002fE8085F6A45B3679e5", + "UnwrapHook": "0x5cE6A0a395178f18b93A49795b8EC452fA4d0F7d", + "connectors": { + "137": { + "FAST": "0x3A6f7a681089aa737Bc726f5Add45324dE2D1600" + } + } + } + } } -} +} \ No newline at end of file diff --git a/deployments/supertoken/prod_socket_ghst_mainnet_addresses.json b/deployments/supertoken/prod_socket_ghst_mainnet_addresses.json new file mode 100644 index 00000000..24593d6e --- /dev/null +++ b/deployments/supertoken/prod_socket_ghst_mainnet_addresses.json @@ -0,0 +1,26 @@ +{ + "137": { + "SGHST": { + "NonMintableToken": "0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7", + "Vault": "0x2a9e7A2A9FeD4A83F59125cFf72761E467cEa419", + "UnwrapHook": "0xA32137bfb57d2b6A9Fd2956Ba4B54741a6D54b58", + "connectors": { + "63157": { + "FAST": "0x21F842dAb0E1FF3D39E4E8db8510303c80327f61" + } + } + } + }, + "63157": { + "SGHST": { + "UnwrapSuperToken": "0x78860E9be983caBCdA2C101cbc185B23Efd1F4Cc", + "Controller": "0x8C1e6969Ca76Ca73a9B002fE8085F6A45B3679e5", + "UnwrapHook": "0x5cE6A0a395178f18b93A49795b8EC452fA4d0F7d", + "connectors": { + "137": { + "FAST": "0x3A6f7a681089aa737Bc726f5Add45324dE2D1600" + } + } + } + } +} \ No newline at end of file diff --git a/deployments/supertoken/prod_socket_ghst_mainnet_verification.json b/deployments/supertoken/prod_socket_ghst_mainnet_verification.json new file mode 100644 index 00000000..91b86f8e --- /dev/null +++ b/deployments/supertoken/prod_socket_ghst_mainnet_verification.json @@ -0,0 +1,82 @@ +{ + "137": [ + [ + "0x21F842dAb0E1FF3D39E4E8db8510303c80327f61", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0x2a9e7A2A9FeD4A83F59125cFf72761E467cEa419", + "0xc20687f8dc0ad51d01003013d1c5b02d10DED001", + 63157, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0xA32137bfb57d2b6A9Fd2956Ba4B54741a6D54b58", + "UnwrapHook", + "contracts/hooks/UnwrapHook.sol", + [ + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0x2a9e7A2A9FeD4A83F59125cFf72761E467cEa419", + "0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7", + "0x988a44f0ea2611B6a0f5ed73e1eC180Fb145CF21" + ] + ], + [ + "0x2a9e7A2A9FeD4A83F59125cFf72761E467cEa419", + "Vault", + "contracts/bridge/Vault.sol", + [ + "0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7" + ] + ] + ], + "63157": [ + [ + "0x3A6f7a681089aa737Bc726f5Add45324dE2D1600", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0x8C1e6969Ca76Ca73a9B002fE8085F6A45B3679e5", + "0x34464194a4aCD38F42060D144BF3729F625Ff047", + 137, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0x5cE6A0a395178f18b93A49795b8EC452fA4d0F7d", + "UnwrapHook", + "contracts/hooks/UnwrapHook.sol", + [ + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0x8C1e6969Ca76Ca73a9B002fE8085F6A45B3679e5", + "0x78860E9be983caBCdA2C101cbc185B23Efd1F4Cc", + "0x988a44f0ea2611B6a0f5ed73e1eC180Fb145CF21" + ] + ], + [ + "0x8C1e6969Ca76Ca73a9B002fE8085F6A45B3679e5", + "Controller", + "contracts/bridge/Controller.sol", + [ + "0x78860E9be983caBCdA2C101cbc185B23Efd1F4Cc" + ] + ], + [ + "0x78860E9be983caBCdA2C101cbc185B23Efd1F4Cc", + "UnwrapSuperToken", + "contracts/token/UnwrapSuperToken.sol", + [ + "Socket GHST", + "SGHST", + 18, + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + { + "type": "BigNumber", + "hex": "0x00" + } + ] + ] + ] +} \ No newline at end of file diff --git a/script/constants/projectConstants/superbridge/polter_testnet.ts b/script/constants/projectConstants/superbridge/polter_testnet.ts deleted file mode 100644 index 6f37ac07..00000000 --- a/script/constants/projectConstants/superbridge/polter_testnet.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { - ChainSlug, - DeploymentMode, - IntegrationTypes, -} from "@socket.tech/dl-core"; -import { Hooks, ProjectConstants } from "../../../../src"; -import { Tokens } from "../../../../src/enums"; - -// For testnet deployments, ChainSlug enum may not have some chains, therefore some keys will look like {421614:{}} instead of {[ChainSlug.ARBITRUM_SEPOLIA]:{}}. This wont affect the functionality of the project. -export const pc: ProjectConstants = { - [DeploymentMode.SURGE]: { - [Tokens.USDC]: { - vaultChains: [ChainSlug.ARBITRUM_SEPOLIA], - controllerChains: [398274], - tokenAddresses: { - 398274: "0x15Bb97f748B341D1f464A7257d75da879D83fC9F", - }, - hook: { - hookType: Hooks.LIMIT_HOOK, - limitsAndPoolId: { - 398274: { - [IntegrationTypes.fast]: { - sendingLimit: "100000", - receivingLimit: "100000", - }, - }, - [ChainSlug.ARBITRUM_SEPOLIA]: { - [IntegrationTypes.fast]: { - sendingLimit: "100000", - receivingLimit: "100000", - }, - }, - }, - }, - }, - }, -}; diff --git a/script/constants/projectConstants/supertoken/socket_ghst_mainnet.ts b/script/constants/projectConstants/supertoken/socket_ghst_mainnet.ts new file mode 100644 index 00000000..c117ac7f --- /dev/null +++ b/script/constants/projectConstants/supertoken/socket_ghst_mainnet.ts @@ -0,0 +1,29 @@ + +import { + ChainSlug, + DeploymentMode, + IntegrationTypes, +} from "@socket.tech/dl-core"; +import { Hooks, ProjectConstants } from "../../../../src"; +import { NFTs, Tokens } from "../../../../src/enums"; + +// For testnet deployments, ChainSlug enum may not have some chains, therefore some keys will look like {421614:{}} instead of {[ChainSlug.ARBITRUM_SEPOLIA]:{}}. This wont affect the functionality of the project. +export const pc: ProjectConstants = { + [DeploymentMode.PROD]: { + [Tokens.SGHST]: { + vaultChains: [ChainSlug.POLYGON_MAINNET], + controllerChains: [ChainSlug.GEIST], + hook: { + hookType: Hooks.UNWRAP_HOOK + }, + superTokenInfo: { + name: "Socket GHST", + symbol: Tokens.SGHST, + decimals: 18, + owner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + initialSupplyOwner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + initialSupply: "0" + } + } + } +}; diff --git a/src/enums/existing-token-addresses.ts b/src/enums/existing-token-addresses.ts index c8317788..c5110886 100644 --- a/src/enums/existing-token-addresses.ts +++ b/src/enums/existing-token-addresses.ts @@ -1,104 +1,103 @@ -import { ChainSlug } from "@socket.tech/dl-core"; -import { Tokens } from "./tokens"; -export const ExistingTokenAddresses: { - [key in ChainSlug]?: { [key in Tokens]?: string }; -} = { - [ChainSlug.MAINNET]: { - [Tokens.USDC]: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - [Tokens.USDT]: "0xdac17f958d2ee523a2206206994597c13d831ec7", - [Tokens.WETH]: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - [Tokens.WBTC]: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - [Tokens.SNX]: "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", - [Tokens.WSTETH]: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", - [Tokens.DAI]: "0x6B175474E89094C44Da98b954EedeAC495271d0F", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.USDE]: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", - [Tokens.SUSDE]: "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", - [Tokens.SDEUSD]: "0x5c5b196abe0d54485975d1ec29617d42d9198326", - [Tokens.DEUSD]: "0x15700b564ca08d9439c58ca5053166e8317aa138", - }, - [ChainSlug.OPTIMISM]: { - [Tokens.USDC]: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", - [Tokens.USDCE]: "0x7f5c764cbc14f9669b88837ca1490cca17c31607", - [Tokens.USDT]: "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", - [Tokens.WETH]: "0x4200000000000000000000000000000000000006", - [Tokens.WBTC]: "0x68f180fcce6836688e9084f035309e29bf0a2095", - [Tokens.SNX]: "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", - [Tokens.WSTETH]: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", - [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", - }, - [ChainSlug.POLYGON_MAINNET]: { - [Tokens.USDC]: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", - [Tokens.USDCE]: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", - [Tokens.FUD]: "0x403e967b044d4be25170310157cb1a4bf10bdd0f", - [Tokens.FOMO]: "0x44a6e0be76e1d9620a7f76588e4509fe4fa8e8c8", - [Tokens.ALPHA]: "0x6a3E7C3c6EF65Ee26975b12293cA1AAD7e1dAeD2", - [Tokens.KEK]: "0x42E5E06EF5b90Fe15F853F59299Fc96259209c5C", - [Tokens.GLTR]: "0x3801C3B3B5c98F88a9c9005966AA96aa440B9Afc", - [Tokens.USDT]: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", - [Tokens.DAI]: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - [Tokens.WETH]: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", - [Tokens.WBTC]: "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6", - }, - [ChainSlug.BASE]: { - [Tokens.USDC]: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", - [Tokens.WETH]: "0x4200000000000000000000000000000000000006", - [Tokens.WSTETH]: "0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452", - [Tokens.DAI]: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", - }, - [ChainSlug.ARBITRUM]: { - [Tokens.USDC]: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", - [Tokens.USDCE]: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", - [Tokens.USDT]: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", - [Tokens.WETH]: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", - [Tokens.WBTC]: "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", - [Tokens.WSTETH]: "0x5979D7b546E38E414F7E9822514be443A4800529", - [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", - [Tokens.STIME]: "0x17AfF554423D2C40A1BBF51b443E9d43dd8AE1eb", - [Tokens.MAGIC]: "0x539bde0d7dbd336b79148aa742883198bbf60342", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", - }, - // 80002: { - // [Tokens.SGHST]: "0xF679b8D109b2d23931237Ce948a7D784727c0897", - // }, - [ChainSlug.ARBITRUM_SEPOLIA]: { - [Tokens.USDC]: "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", - [Tokens.USDT]: "0x66DFb9987C36c4be232156e70B085f664367599A", - [Tokens.DAI]: "0x9a573B27D7298c6E2f4d2D4a41c37A0C8AF6accA", - [Tokens.WETH]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", - [Tokens.WBTC]: "0x1019958C2BD43B882a4e1349337a32Ef9563FC4D", - }, - [ChainSlug.SEPOLIA]: { - [Tokens.USDC]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - [Tokens.USDT]: "0xB4130e87A180b9448286B291331aEe8A9C154A3A", - [Tokens.DAI]: "0x255745E5C7Ae620b7f523F5E4A0Ead37660EC5d6", - [Tokens.WETH]: "0x771d1Ae208377453D478dF08BbC38034F72aC833", - [Tokens.WBTC]: "0x94BEff5da6201cB2C8F489196FD970B3DF5aA32A", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - }, - [ChainSlug.AEVO_TESTNET]: { - [Tokens.USDC]: "0x4D435C00E09034ec2113F63088CCD0be0a0fd06e", - }, - [ChainSlug.OPTIMISM_SEPOLIA]: { - [Tokens.USDC]: "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", - [Tokens.USDT]: "0x2d1abA6FaBAe80bF5C1C9EA433AAe9030E07CB22", - [Tokens.DAI]: "0xDC0258dc3dB980090E97EbF4f1FD9Cc3C5AD5894", - [Tokens.WETH]: "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.WBTC]: "0xfC5CC93d85861ac82d89fc2D3e56315540E9C8A7", - }, - [ChainSlug.REYA]: { - [Tokens.SUSDE]: "0x2339D41f410EA761F346a14c184385d15f7266c4", - [Tokens.DEUSD]: "0x809B99df4DDd6fA90F2CF305E2cDC310C6AD3C2c", - [Tokens.SDEUSD]: "0x4D3fEB76ab1C7eF40388Cd7a2066edacE1a2237D", - }, + import { ChainSlug } from "@socket.tech/dl-core"; + import { Tokens } from "./tokens"; + + export const ExistingTokenAddresses: { + [key in ChainSlug]?: { [key in Tokens]?: string }; + } = { + [ChainSlug.MAINNET]: { + [Tokens.USDC]: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + [Tokens.USDT]: "0xdac17f958d2ee523a2206206994597c13d831ec7", + [Tokens.WETH]: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + [Tokens.WBTC]: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + [Tokens.SNX]: "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", + [Tokens.WSTETH]: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + [Tokens.DAI]: "0x6B175474E89094C44Da98b954EedeAC495271d0F", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.USDE]: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", + [Tokens.SUSDE]: "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", + [Tokens.SDEUSD]: "0x5c5b196abe0d54485975d1ec29617d42d9198326", + [Tokens.DEUSD]: "0x15700b564ca08d9439c58ca5053166e8317aa138" +}, +[ChainSlug.OPTIMISM]: { + [Tokens.USDC]: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", + [Tokens.USDCE]: "0x7f5c764cbc14f9669b88837ca1490cca17c31607", + [Tokens.USDT]: "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", + [Tokens.WETH]: "0x4200000000000000000000000000000000000006", + [Tokens.WBTC]: "0x68f180fcce6836688e9084f035309e29bf0a2095", + [Tokens.SNX]: "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", + [Tokens.WSTETH]: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", + [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" +}, +[ChainSlug.POLYGON_MAINNET]: { + [Tokens.USDC]: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", + [Tokens.USDCE]: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + [Tokens.FUD]: "0x403e967b044d4be25170310157cb1a4bf10bdd0f", + [Tokens.FOMO]: "0x44a6e0be76e1d9620a7f76588e4509fe4fa8e8c8", + [Tokens.ALPHA]: "0x6a3E7C3c6EF65Ee26975b12293cA1AAD7e1dAeD2", + [Tokens.KEK]: "0x42E5E06EF5b90Fe15F853F59299Fc96259209c5C", + [Tokens.GLTR]: "0x3801C3B3B5c98F88a9c9005966AA96aa440B9Afc", + [Tokens.USDT]: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", + [Tokens.DAI]: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", + [Tokens.WETH]: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", + [Tokens.WBTC]: "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6", + [Tokens.SGHST]: "0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7" +}, +[ChainSlug.BASE]: { + [Tokens.USDC]: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", + [Tokens.WETH]: "0x4200000000000000000000000000000000000006", + [Tokens.WSTETH]: "0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452", + [Tokens.DAI]: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" +}, +[ChainSlug.ARBITRUM]: { + [Tokens.USDC]: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", + [Tokens.USDCE]: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", + [Tokens.USDT]: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", + [Tokens.WETH]: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", + [Tokens.WBTC]: "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", + [Tokens.WSTETH]: "0x5979D7b546E38E414F7E9822514be443A4800529", + [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", + [Tokens.STIME]: "0x17AfF554423D2C40A1BBF51b443E9d43dd8AE1eb", + [Tokens.MAGIC]: "0x539bde0d7dbd336b79148aa742883198bbf60342", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" +}, +[ChainSlug.ARBITRUM_SEPOLIA]: { + [Tokens.USDC]: "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", + [Tokens.USDT]: "0x66DFb9987C36c4be232156e70B085f664367599A", + [Tokens.DAI]: "0x9a573B27D7298c6E2f4d2D4a41c37A0C8AF6accA", + [Tokens.WETH]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", + [Tokens.WBTC]: "0x1019958C2BD43B882a4e1349337a32Ef9563FC4D" +}, +[ChainSlug.SEPOLIA]: { + [Tokens.USDC]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", + [Tokens.USDT]: "0xB4130e87A180b9448286B291331aEe8A9C154A3A", + [Tokens.DAI]: "0x255745E5C7Ae620b7f523F5E4A0Ead37660EC5d6", + [Tokens.WETH]: "0x771d1Ae208377453D478dF08BbC38034F72aC833", + [Tokens.WBTC]: "0x94BEff5da6201cB2C8F489196FD970B3DF5aA32A", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" +}, +[ChainSlug.AEVO_TESTNET]: { + [Tokens.USDC]: "0x4D435C00E09034ec2113F63088CCD0be0a0fd06e" +}, +[ChainSlug.OPTIMISM_SEPOLIA]: { + [Tokens.USDC]: "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", + [Tokens.USDT]: "0x2d1abA6FaBAe80bF5C1C9EA433AAe9030E07CB22", + [Tokens.DAI]: "0xDC0258dc3dB980090E97EbF4f1FD9Cc3C5AD5894", + [Tokens.WETH]: "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.WBTC]: "0xfC5CC93d85861ac82d89fc2D3e56315540E9C8A7" +}, +[ChainSlug.REYA]: { + [Tokens.SUSDE]: "0x2339D41f410EA761F346a14c184385d15f7266c4", + [Tokens.DEUSD]: "0x809B99df4DDd6fA90F2CF305E2cDC310C6AD3C2c", + [Tokens.SDEUSD]: "0x4D3fEB76ab1C7eF40388Cd7a2066edacE1a2237D" +} }; diff --git a/src/enums/projectType.ts b/src/enums/projectType.ts index 75013fc4..22dac896 100644 --- a/src/enums/projectType.ts +++ b/src/enums/projectType.ts @@ -22,11 +22,9 @@ export const ProjectTypeMap: Record = { [Project.TIMESWAP_TEST_MAINNET]: ProjectType.SUPERTOKEN, [Project.TESTING_TESTNET]: ProjectType.SUPERTOKEN, [Project.MAGIC_MAINNET]: ProjectType.SUPERTOKEN, - [Project.POLTER_TESTNET]: ProjectType.SUPERBRIDGE, [Project.AAVEGOTCHI_BRIDGE_TESTNET]: ProjectType.SUPERBRIDGE, - [Project.SOCKET_GHST_TEST_TESTNET]: ProjectType.SUPERTOKEN, - [Project.GHST_UNWRAPSUPERTOKEN_TESTNET]: ProjectType.SUPERTOKEN, - [Project.SOCKET_GHST_TESTNET]: ProjectType.SUPERTOKEN, - [Project.GEIST_BRIDGE_TESTNET]: ProjectType.SUPERBRIDGE, - [Project.GEIST_BRIDGE_MAINNET]: ProjectType.SUPERBRIDGE, + [Project.SOCKET_GHST_TESTNET]: ProjectType.SUPERTOKEN, //SGHST on Socket Testnet + [Project.GEIST_BRIDGE_TESTNET]: ProjectType.SUPERBRIDGE, //USDC on Polter Testnet + [Project.GEIST_BRIDGE_MAINNET]: ProjectType.SUPERBRIDGE, //USDC on Geist Mainnet + [Project.SOCKET_GHST_MAINNET]: ProjectType.SUPERTOKEN, //SGHST on Geist Mainnet }; diff --git a/src/enums/projects.ts b/src/enums/projects.ts index b6dafcbe..387c450d 100644 --- a/src/enums/projects.ts +++ b/src/enums/projects.ts @@ -19,11 +19,9 @@ export enum Project { TIMESWAP_TEST_MAINNET = "timeswap_test_mainnet", TESTING_TESTNET = "testing_testnet", MAGIC_MAINNET = "magic_mainnet", - POLTER_TESTNET = "polter_testnet", AAVEGOTCHI_BRIDGE_TESTNET = "aavegotchi_bridge_testnet", - SOCKET_GHST_TEST_TESTNET = "socket_ghst_test_testnet", - GHST_UNWRAPSUPERTOKEN_TESTNET = "ghst_unwrapsupertoken_testnet", SOCKET_GHST_TESTNET = "socket_ghst_testnet", GEIST_BRIDGE_TESTNET = "geist_bridge_testnet", GEIST_BRIDGE_MAINNET = "geist_bridge_mainnet", + SOCKET_GHST_MAINNET = "socket_ghst_mainnet", } From 6134452eefcb951924ea52485e8b17a1dcb42d89 Mon Sep 17 00:00:00 2001 From: Coderdan Date: Thu, 7 Nov 2024 16:32:12 +0800 Subject: [PATCH 52/57] chore: formatting --- deployments/supertoken/prod_addresses.json | 2 +- .../prod_socket_ghst_mainnet_addresses.json | 2 +- ...prod_socket_ghst_mainnet_verification.json | 10 +- .../supertoken/socket_ghst_mainnet.ts | 11 +- src/enums/existing-token-addresses.ts | 201 +++++++++--------- 5 files changed, 110 insertions(+), 116 deletions(-) diff --git a/deployments/supertoken/prod_addresses.json b/deployments/supertoken/prod_addresses.json index c7157531..c2601cd8 100644 --- a/deployments/supertoken/prod_addresses.json +++ b/deployments/supertoken/prod_addresses.json @@ -280,4 +280,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/supertoken/prod_socket_ghst_mainnet_addresses.json b/deployments/supertoken/prod_socket_ghst_mainnet_addresses.json index 24593d6e..fcd9ee70 100644 --- a/deployments/supertoken/prod_socket_ghst_mainnet_addresses.json +++ b/deployments/supertoken/prod_socket_ghst_mainnet_addresses.json @@ -23,4 +23,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/supertoken/prod_socket_ghst_mainnet_verification.json b/deployments/supertoken/prod_socket_ghst_mainnet_verification.json index 91b86f8e..67dc42d9 100644 --- a/deployments/supertoken/prod_socket_ghst_mainnet_verification.json +++ b/deployments/supertoken/prod_socket_ghst_mainnet_verification.json @@ -26,9 +26,7 @@ "0x2a9e7A2A9FeD4A83F59125cFf72761E467cEa419", "Vault", "contracts/bridge/Vault.sol", - [ - "0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7" - ] + ["0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7"] ] ], "63157": [ @@ -58,9 +56,7 @@ "0x8C1e6969Ca76Ca73a9B002fE8085F6A45B3679e5", "Controller", "contracts/bridge/Controller.sol", - [ - "0x78860E9be983caBCdA2C101cbc185B23Efd1F4Cc" - ] + ["0x78860E9be983caBCdA2C101cbc185B23Efd1F4Cc"] ], [ "0x78860E9be983caBCdA2C101cbc185B23Efd1F4Cc", @@ -79,4 +75,4 @@ ] ] ] -} \ No newline at end of file +} diff --git a/script/constants/projectConstants/supertoken/socket_ghst_mainnet.ts b/script/constants/projectConstants/supertoken/socket_ghst_mainnet.ts index c117ac7f..61042f47 100644 --- a/script/constants/projectConstants/supertoken/socket_ghst_mainnet.ts +++ b/script/constants/projectConstants/supertoken/socket_ghst_mainnet.ts @@ -1,4 +1,3 @@ - import { ChainSlug, DeploymentMode, @@ -14,7 +13,7 @@ export const pc: ProjectConstants = { vaultChains: [ChainSlug.POLYGON_MAINNET], controllerChains: [ChainSlug.GEIST], hook: { - hookType: Hooks.UNWRAP_HOOK + hookType: Hooks.UNWRAP_HOOK, }, superTokenInfo: { name: "Socket GHST", @@ -22,8 +21,8 @@ export const pc: ProjectConstants = { decimals: 18, owner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", initialSupplyOwner: "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - initialSupply: "0" - } - } - } + initialSupply: "0", + }, + }, + }, }; diff --git a/src/enums/existing-token-addresses.ts b/src/enums/existing-token-addresses.ts index c5110886..1df470ca 100644 --- a/src/enums/existing-token-addresses.ts +++ b/src/enums/existing-token-addresses.ts @@ -1,103 +1,102 @@ +import { ChainSlug } from "@socket.tech/dl-core"; +import { Tokens } from "./tokens"; - import { ChainSlug } from "@socket.tech/dl-core"; - import { Tokens } from "./tokens"; - - export const ExistingTokenAddresses: { - [key in ChainSlug]?: { [key in Tokens]?: string }; - } = { - [ChainSlug.MAINNET]: { - [Tokens.USDC]: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - [Tokens.USDT]: "0xdac17f958d2ee523a2206206994597c13d831ec7", - [Tokens.WETH]: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - [Tokens.WBTC]: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - [Tokens.SNX]: "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", - [Tokens.WSTETH]: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", - [Tokens.DAI]: "0x6B175474E89094C44Da98b954EedeAC495271d0F", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.USDE]: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", - [Tokens.SUSDE]: "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", - [Tokens.SDEUSD]: "0x5c5b196abe0d54485975d1ec29617d42d9198326", - [Tokens.DEUSD]: "0x15700b564ca08d9439c58ca5053166e8317aa138" -}, -[ChainSlug.OPTIMISM]: { - [Tokens.USDC]: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", - [Tokens.USDCE]: "0x7f5c764cbc14f9669b88837ca1490cca17c31607", - [Tokens.USDT]: "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", - [Tokens.WETH]: "0x4200000000000000000000000000000000000006", - [Tokens.WBTC]: "0x68f180fcce6836688e9084f035309e29bf0a2095", - [Tokens.SNX]: "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", - [Tokens.WSTETH]: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", - [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" -}, -[ChainSlug.POLYGON_MAINNET]: { - [Tokens.USDC]: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", - [Tokens.USDCE]: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", - [Tokens.FUD]: "0x403e967b044d4be25170310157cb1a4bf10bdd0f", - [Tokens.FOMO]: "0x44a6e0be76e1d9620a7f76588e4509fe4fa8e8c8", - [Tokens.ALPHA]: "0x6a3E7C3c6EF65Ee26975b12293cA1AAD7e1dAeD2", - [Tokens.KEK]: "0x42E5E06EF5b90Fe15F853F59299Fc96259209c5C", - [Tokens.GLTR]: "0x3801C3B3B5c98F88a9c9005966AA96aa440B9Afc", - [Tokens.USDT]: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", - [Tokens.DAI]: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - [Tokens.WETH]: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", - [Tokens.WBTC]: "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6", - [Tokens.SGHST]: "0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7" -}, -[ChainSlug.BASE]: { - [Tokens.USDC]: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", - [Tokens.WETH]: "0x4200000000000000000000000000000000000006", - [Tokens.WSTETH]: "0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452", - [Tokens.DAI]: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" -}, -[ChainSlug.ARBITRUM]: { - [Tokens.USDC]: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", - [Tokens.USDCE]: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", - [Tokens.USDT]: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", - [Tokens.WETH]: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", - [Tokens.WBTC]: "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", - [Tokens.WSTETH]: "0x5979D7b546E38E414F7E9822514be443A4800529", - [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", - [Tokens.STIME]: "0x17AfF554423D2C40A1BBF51b443E9d43dd8AE1eb", - [Tokens.MAGIC]: "0x539bde0d7dbd336b79148aa742883198bbf60342", - [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2" -}, -[ChainSlug.ARBITRUM_SEPOLIA]: { - [Tokens.USDC]: "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", - [Tokens.USDT]: "0x66DFb9987C36c4be232156e70B085f664367599A", - [Tokens.DAI]: "0x9a573B27D7298c6E2f4d2D4a41c37A0C8AF6accA", - [Tokens.WETH]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", - [Tokens.WBTC]: "0x1019958C2BD43B882a4e1349337a32Ef9563FC4D" -}, -[ChainSlug.SEPOLIA]: { - [Tokens.USDC]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - [Tokens.USDT]: "0xB4130e87A180b9448286B291331aEe8A9C154A3A", - [Tokens.DAI]: "0x255745E5C7Ae620b7f523F5E4A0Ead37660EC5d6", - [Tokens.WETH]: "0x771d1Ae208377453D478dF08BbC38034F72aC833", - [Tokens.WBTC]: "0x94BEff5da6201cB2C8F489196FD970B3DF5aA32A", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" -}, -[ChainSlug.AEVO_TESTNET]: { - [Tokens.USDC]: "0x4D435C00E09034ec2113F63088CCD0be0a0fd06e" -}, -[ChainSlug.OPTIMISM_SEPOLIA]: { - [Tokens.USDC]: "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", - [Tokens.USDT]: "0x2d1abA6FaBAe80bF5C1C9EA433AAe9030E07CB22", - [Tokens.DAI]: "0xDC0258dc3dB980090E97EbF4f1FD9Cc3C5AD5894", - [Tokens.WETH]: "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", - [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", - [Tokens.WBTC]: "0xfC5CC93d85861ac82d89fc2D3e56315540E9C8A7" -}, -[ChainSlug.REYA]: { - [Tokens.SUSDE]: "0x2339D41f410EA761F346a14c184385d15f7266c4", - [Tokens.DEUSD]: "0x809B99df4DDd6fA90F2CF305E2cDC310C6AD3C2c", - [Tokens.SDEUSD]: "0x4D3fEB76ab1C7eF40388Cd7a2066edacE1a2237D" -} +export const ExistingTokenAddresses: { + [key in ChainSlug]?: { [key in Tokens]?: string }; +} = { + [ChainSlug.MAINNET]: { + [Tokens.USDC]: "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + [Tokens.USDT]: "0xdac17f958d2ee523a2206206994597c13d831ec7", + [Tokens.WETH]: "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + [Tokens.WBTC]: "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + [Tokens.SNX]: "0xc011a73ee8576fb46f5e1c5751ca3b9fe0af2a6f", + [Tokens.WSTETH]: "0x7f39c581f595b53c5cb19bd0b3f8da6c935e2ca0", + [Tokens.DAI]: "0x6B175474E89094C44Da98b954EedeAC495271d0F", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.USDE]: "0x4c9EDD5852cd905f086C759E8383e09bff1E68B3", + [Tokens.SUSDE]: "0x9D39A5DE30e57443BfF2A8307A4256c8797A3497", + [Tokens.SDEUSD]: "0x5c5b196abe0d54485975d1ec29617d42d9198326", + [Tokens.DEUSD]: "0x15700b564ca08d9439c58ca5053166e8317aa138", + }, + [ChainSlug.OPTIMISM]: { + [Tokens.USDC]: "0x0b2c639c533813f4aa9d7837caf62653d097ff85", + [Tokens.USDCE]: "0x7f5c764cbc14f9669b88837ca1490cca17c31607", + [Tokens.USDT]: "0x94b008aa00579c1307b0ef2c499ad98a8ce58e58", + [Tokens.WETH]: "0x4200000000000000000000000000000000000006", + [Tokens.WBTC]: "0x68f180fcce6836688e9084f035309e29bf0a2095", + [Tokens.SNX]: "0x8700daec35af8ff88c16bdf0418774cb3d7599b4", + [Tokens.WSTETH]: "0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb", + [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", + }, + [ChainSlug.POLYGON_MAINNET]: { + [Tokens.USDC]: "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", + [Tokens.USDCE]: "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174", + [Tokens.FUD]: "0x403e967b044d4be25170310157cb1a4bf10bdd0f", + [Tokens.FOMO]: "0x44a6e0be76e1d9620a7f76588e4509fe4fa8e8c8", + [Tokens.ALPHA]: "0x6a3E7C3c6EF65Ee26975b12293cA1AAD7e1dAeD2", + [Tokens.KEK]: "0x42E5E06EF5b90Fe15F853F59299Fc96259209c5C", + [Tokens.GLTR]: "0x3801C3B3B5c98F88a9c9005966AA96aa440B9Afc", + [Tokens.USDT]: "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", + [Tokens.DAI]: "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", + [Tokens.WETH]: "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", + [Tokens.WBTC]: "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6", + [Tokens.SGHST]: "0x385eeac5cb85a38a9a07a70c73e0a3271cfb54a7", + }, + [ChainSlug.BASE]: { + [Tokens.USDC]: "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", + [Tokens.WETH]: "0x4200000000000000000000000000000000000006", + [Tokens.WSTETH]: "0xc1cba3fcea344f92d9239c08c0568f6f2f0ee452", + [Tokens.DAI]: "0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", + }, + [ChainSlug.ARBITRUM]: { + [Tokens.USDC]: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", + [Tokens.USDCE]: "0xff970a61a04b1ca14834a43f5de4533ebddb5cc8", + [Tokens.USDT]: "0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9", + [Tokens.WETH]: "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", + [Tokens.WBTC]: "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", + [Tokens.WSTETH]: "0x5979D7b546E38E414F7E9822514be443A4800529", + [Tokens.DAI]: "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", + [Tokens.STIME]: "0x17AfF554423D2C40A1BBF51b443E9d43dd8AE1eb", + [Tokens.MAGIC]: "0x539bde0d7dbd336b79148aa742883198bbf60342", + [Tokens.SUSDE]: "0x211Cc4DD073734dA055fbF44a2b4667d5E5fE5d2", + }, + [ChainSlug.ARBITRUM_SEPOLIA]: { + [Tokens.USDC]: "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", + [Tokens.USDT]: "0x66DFb9987C36c4be232156e70B085f664367599A", + [Tokens.DAI]: "0x9a573B27D7298c6E2f4d2D4a41c37A0C8AF6accA", + [Tokens.WETH]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.MTK]: "0x094553F42B44Ea1492b0dcA5f4134F23f45db742", + [Tokens.WBTC]: "0x1019958C2BD43B882a4e1349337a32Ef9563FC4D", + }, + [ChainSlug.SEPOLIA]: { + [Tokens.USDC]: "0x565810cbfa3Cf1390963E5aFa2fB953795686339", + [Tokens.USDT]: "0xB4130e87A180b9448286B291331aEe8A9C154A3A", + [Tokens.DAI]: "0x255745E5C7Ae620b7f523F5E4A0Ead37660EC5d6", + [Tokens.WETH]: "0x771d1Ae208377453D478dF08BbC38034F72aC833", + [Tokens.WBTC]: "0x94BEff5da6201cB2C8F489196FD970B3DF5aA32A", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + }, + [ChainSlug.AEVO_TESTNET]: { + [Tokens.USDC]: "0x4D435C00E09034ec2113F63088CCD0be0a0fd06e", + }, + [ChainSlug.OPTIMISM_SEPOLIA]: { + [Tokens.USDC]: "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", + [Tokens.USDT]: "0x2d1abA6FaBAe80bF5C1C9EA433AAe9030E07CB22", + [Tokens.DAI]: "0xDC0258dc3dB980090E97EbF4f1FD9Cc3C5AD5894", + [Tokens.WETH]: "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", + [Tokens.ETH]: "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE", + [Tokens.WBTC]: "0xfC5CC93d85861ac82d89fc2D3e56315540E9C8A7", + }, + [ChainSlug.REYA]: { + [Tokens.SUSDE]: "0x2339D41f410EA761F346a14c184385d15f7266c4", + [Tokens.DEUSD]: "0x809B99df4DDd6fA90F2CF305E2cDC310C6AD3C2c", + [Tokens.SDEUSD]: "0x4D3fEB76ab1C7eF40388Cd7a2066edacE1a2237D", + }, }; From 139dd1c65a9b9b46c3639ae0383b2f8dbce720ee Mon Sep 17 00:00:00 2001 From: Coderdan Date: Thu, 7 Nov 2024 16:57:26 +0800 Subject: [PATCH 53/57] chore: add scripts --- hardhat.config.ts | 10 +++++++ script/verify/verifyUnwrapHook.ts | 35 +++++++++++++++++++++++ script/verify/verifyUnwrapSuperToken.ts | 37 +++++++++++++++++++++++++ 3 files changed, 82 insertions(+) create mode 100644 script/verify/verifyUnwrapHook.ts create mode 100644 script/verify/verifyUnwrapSuperToken.ts diff --git a/hardhat.config.ts b/hardhat.config.ts index f700bf8f..ae3208a6 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -89,6 +89,7 @@ const liveNetworks = [ HardhatChainName.REYA_CRONOS, HardhatChainName.REYA, HardhatChainName.SYNDR_SEPOLIA_L3, + HardhatChainName.GEIST, CustomNetworks.POLTER_TESTNET, CustomNetworks.POLYGON_AMOY, ]; @@ -123,6 +124,7 @@ const config: HardhatUserConfig = { [HardhatChainName.REYA_CRONOS]: "none", [HardhatChainName.REYA]: "none", [HardhatChainName.AEVO]: "none", + [HardhatChainName.GEIST]: "none", [CustomNetworks.POLTER_TESTNET]: "none", }, // Custom chains for verification. These are only for verification to work. The hardhat etherscan plugin does not support these chains. @@ -209,6 +211,14 @@ const config: HardhatUserConfig = { browserURL: "https://polter-sepolia-explorer.devnet.alchemy.com/", }, }, + { + network: HardhatChainName.GEIST, + chainId: ChainSlugToId[hardhatChainNameToSlug[HardhatChainName.GEIST]], + urls: { + apiURL: "https://geist-mainnet.explorer.alchemy.com/api", + browserURL: "https://geist-mainnet.explorer.alchemy.com", + }, + }, { network: CustomNetworks.POLYGON_AMOY, chainId: CustomNetworksConfig[CustomNetworks.POLYGON_AMOY].chainId, diff --git a/script/verify/verifyUnwrapHook.ts b/script/verify/verifyUnwrapHook.ts new file mode 100644 index 00000000..1b93545a --- /dev/null +++ b/script/verify/verifyUnwrapHook.ts @@ -0,0 +1,35 @@ +import { HardhatRuntimeEnvironment } from "hardhat/types"; + +export const main = async () => { + const address = "0x5cE6A0a395178f18b93A49795b8EC452fA4d0F7d"; + + try { + const hre = require("hardhat") as HardhatRuntimeEnvironment; + + console.log(`Verifying UnwrapSuperToken at ${address}`); + + try { + await hre.run("verify:verify", { + address: address, + constructorArguments: [ + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0x8C1e6969Ca76Ca73a9B002fE8085F6A45B3679e5", + "0x78860E9be983caBCdA2C101cbc185B23Efd1F4Cc", + "0x988a44f0ea2611B6a0f5ed73e1eC180Fb145CF21", + ], + }); + console.log(`Successfully verified UnwrapSuperToken for ${address}`); + } catch (error) { + console.error(`Error verifying UnwrapSuperToken for ${address}:`, error); + } + } catch (error) { + console.error("Error in verification script:", error); + } +}; + +main() + .then(() => process.exit(0)) + .catch((error: Error) => { + console.error(error); + process.exit(1); + }); diff --git a/script/verify/verifyUnwrapSuperToken.ts b/script/verify/verifyUnwrapSuperToken.ts new file mode 100644 index 00000000..b5443bc6 --- /dev/null +++ b/script/verify/verifyUnwrapSuperToken.ts @@ -0,0 +1,37 @@ +import { HardhatRuntimeEnvironment } from "hardhat/types"; + +export const main = async () => { + const address = "0x78860E9be983caBCdA2C101cbc185B23Efd1F4Cc"; + + try { + const hre = require("hardhat") as HardhatRuntimeEnvironment; + + console.log(`Verifying UnwrapSuperToken at ${address}`); + + try { + await hre.run("verify:verify", { + address: address, + constructorArguments: [ + "Socket GHST", + "SGHST", + 18, + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + 0, + ], + }); + console.log(`Successfully verified UnwrapSuperToken for ${address}`); + } catch (error) { + console.error(`Error verifying UnwrapSuperToken for ${address}:`, error); + } + } catch (error) { + console.error("Error in verification script:", error); + } +}; + +main() + .then(() => process.exit(0)) + .catch((error: Error) => { + console.error(error); + process.exit(1); + }); From 0c9569f20e7c906568d077f887fc3fded99cd91b Mon Sep 17 00:00:00 2001 From: Coderdan Date: Sat, 9 Nov 2024 16:12:53 +0800 Subject: [PATCH 54/57] Update setHook.ts --- script/helpers/hook/setHook.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/script/helpers/hook/setHook.ts b/script/helpers/hook/setHook.ts index 314ac506..bb165657 100644 --- a/script/helpers/hook/setHook.ts +++ b/script/helpers/hook/setHook.ts @@ -22,8 +22,9 @@ export const main = async () => { controllerAddress = ""; hookAddress = ""; } else if (network.name === "geist") { - controllerAddress = ""; - hookAddress = ""; + controllerAddress = "0x8C1e6969Ca76Ca73a9B002fE8085F6A45B3679e5"; + hookAddress = "0x0000000000000000000000000000000000000000"; + provider = new ethers.providers.JsonRpcProvider(process.env.GEIST_RPC); } else { throw Error("No network settings for " + network.name); } From c9f45dfce846035a167c337193c1edf19b0921a2 Mon Sep 17 00:00:00 2001 From: Coderdan Date: Wed, 13 Nov 2024 22:33:19 +0800 Subject: [PATCH 55/57] chore: add base support --- deployments/superbridge/prod_addresses.json | 15 ++++++++++++++- .../prod_geist_bridge_mainnet_addresses.json | 2 +- .../superbridge/geist_bridge_mainnet.ts | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/deployments/superbridge/prod_addresses.json b/deployments/superbridge/prod_addresses.json index 16acd55a..ebab611b 100644 --- a/deployments/superbridge/prod_addresses.json +++ b/deployments/superbridge/prod_addresses.json @@ -1243,6 +1243,19 @@ } } }, + "8453": { + "USDC": { + "isAppChain": false, + "NonMintableToken": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", + "Vault": "0x3C3a6c106A4BF3859be474c1ee5E3Df25e38f052", + "LimitHook": "0xF66B88D03f284A21b9e1051de6cc8aEC5cac8893", + "connectors": { + "63157": { + "FAST": "0x3F791E8fbDEF7475f44e70f0eb4bEc89636aAdC8" + } + } + } + }, "63157": { "USDC": { "isAppChain": true, @@ -1266,4 +1279,4 @@ } } } -} +} \ No newline at end of file diff --git a/deployments/superbridge/prod_geist_bridge_mainnet_addresses.json b/deployments/superbridge/prod_geist_bridge_mainnet_addresses.json index 577bbfad..116f74db 100644 --- a/deployments/superbridge/prod_geist_bridge_mainnet_addresses.json +++ b/deployments/superbridge/prod_geist_bridge_mainnet_addresses.json @@ -47,4 +47,4 @@ } } } -} +} \ No newline at end of file diff --git a/script/constants/projectConstants/superbridge/geist_bridge_mainnet.ts b/script/constants/projectConstants/superbridge/geist_bridge_mainnet.ts index be6416e1..5a320e71 100644 --- a/script/constants/projectConstants/superbridge/geist_bridge_mainnet.ts +++ b/script/constants/projectConstants/superbridge/geist_bridge_mainnet.ts @@ -10,7 +10,7 @@ import { NFTs, Tokens } from "../../../../src/enums"; export const pc: ProjectConstants = { [DeploymentMode.PROD]: { [Tokens.USDC]: { - vaultChains: [ChainSlug.POLYGON_MAINNET /*ChainSlug.BASE*/], + vaultChains: [ChainSlug.POLYGON_MAINNET, ChainSlug.BASE], controllerChains: [ChainSlug.GEIST], tokenAddresses: { [ChainSlug.GEIST]: "0xCFa0bC1ED6135166e9163211b4Ca566a0EE81e35", From d84c29eec8158b11347174b7fd9cb888023bdf68 Mon Sep 17 00:00:00 2001 From: Coderdan Date: Wed, 13 Nov 2024 22:33:39 +0800 Subject: [PATCH 56/57] chore: formatting --- deployments/superbridge/prod_addresses.json | 2 +- .../superbridge/prod_geist_bridge_mainnet_addresses.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/deployments/superbridge/prod_addresses.json b/deployments/superbridge/prod_addresses.json index ebab611b..2c3724c1 100644 --- a/deployments/superbridge/prod_addresses.json +++ b/deployments/superbridge/prod_addresses.json @@ -1279,4 +1279,4 @@ } } } -} \ No newline at end of file +} diff --git a/deployments/superbridge/prod_geist_bridge_mainnet_addresses.json b/deployments/superbridge/prod_geist_bridge_mainnet_addresses.json index 116f74db..577bbfad 100644 --- a/deployments/superbridge/prod_geist_bridge_mainnet_addresses.json +++ b/deployments/superbridge/prod_geist_bridge_mainnet_addresses.json @@ -47,4 +47,4 @@ } } } -} \ No newline at end of file +} From 093eb448eb258a761decd51b7f3fc5ca478ea4ba Mon Sep 17 00:00:00 2001 From: Coderdan Date: Thu, 21 Nov 2024 16:45:45 +0800 Subject: [PATCH 57/57] chore: update usdc params --- deployments/superbridge/prod_addresses.json | 32 +---- .../prod_geist_bridge_mainnet_addresses.json | 19 +-- ...rod_geist_bridge_mainnet_verification.json | 110 +++++++++--------- script/bridge/bridge.ts | 90 ++++++++------ .../superbridge/geist_bridge_mainnet.ts | 5 +- script/helpers/hook/setHook.ts | 4 +- 6 files changed, 121 insertions(+), 139 deletions(-) diff --git a/deployments/superbridge/prod_addresses.json b/deployments/superbridge/prod_addresses.json index 2c3724c1..66c33402 100644 --- a/deployments/superbridge/prod_addresses.json +++ b/deployments/superbridge/prod_addresses.json @@ -1235,23 +1235,9 @@ "isAppChain": false, "NonMintableToken": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", "Vault": "0x2CFFb0B0361838A9889Db3F5Ac7984B23D4988E9", - "LimitHook": "0x88c7a119f0FF028e7582062Bf63C0e0C138F84F6", "connectors": { "63157": { - "FAST": "0x3C3a6c106A4BF3859be474c1ee5E3Df25e38f052" - } - } - } - }, - "8453": { - "USDC": { - "isAppChain": false, - "NonMintableToken": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913", - "Vault": "0x3C3a6c106A4BF3859be474c1ee5E3Df25e38f052", - "LimitHook": "0xF66B88D03f284A21b9e1051de6cc8aEC5cac8893", - "connectors": { - "63157": { - "FAST": "0x3F791E8fbDEF7475f44e70f0eb4bEc89636aAdC8" + "FAST": "0xfcbD92486214dD5993E4bF3FF38a9AFC58E3bfe1" } } } @@ -1260,23 +1246,13 @@ "USDC": { "isAppChain": true, "MintableToken": "0xCFa0bC1ED6135166e9163211b4Ca566a0EE81e35", - "Controller": "0xfa17Cc60d20E973E6EC1731C9544B285F779fEb9", - "LimitHook": "0xe324C65F28bC5d55De665394f2DFc9d06af564Ca", + "Controller": "0x095D5f7c37C20A7f4f7313d6d99FC9C6E4511ce1", "connectors": { - "1": { - "FAST": "0xc9D1e8D5550c2f04738f75B321B4D8608f1dF20D" - }, "137": { - "FAST": "0x29667Da5ba50Dc99d80545D989e535AbA5742c9F" - }, - "8453": { - "FAST": "0xb0e2796063935188e350F7256e06F803f1d28560" - }, - "42161": { - "FAST": "0xB34e7290df1d8Aa278CEd9e059e5AB0D27E18DF1" + "FAST": "0x89f53F85Bf85c3c2Db2d0fA9C3C07aE27947D7Ed" } } } } } -} +} \ No newline at end of file diff --git a/deployments/superbridge/prod_geist_bridge_mainnet_addresses.json b/deployments/superbridge/prod_geist_bridge_mainnet_addresses.json index 577bbfad..f51de74a 100644 --- a/deployments/superbridge/prod_geist_bridge_mainnet_addresses.json +++ b/deployments/superbridge/prod_geist_bridge_mainnet_addresses.json @@ -4,10 +4,9 @@ "isAppChain": false, "NonMintableToken": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359", "Vault": "0x2CFFb0B0361838A9889Db3F5Ac7984B23D4988E9", - "LimitHook": "0x88c7a119f0FF028e7582062Bf63C0e0C138F84F6", "connectors": { "63157": { - "FAST": "0x3C3a6c106A4BF3859be474c1ee5E3Df25e38f052" + "FAST": "0xfcbD92486214dD5993E4bF3FF38a9AFC58E3bfe1" } } } @@ -29,22 +28,12 @@ "USDC": { "isAppChain": true, "MintableToken": "0xCFa0bC1ED6135166e9163211b4Ca566a0EE81e35", - "Controller": "0xfa17Cc60d20E973E6EC1731C9544B285F779fEb9", - "LimitHook": "0xe324C65F28bC5d55De665394f2DFc9d06af564Ca", + "Controller": "0x095D5f7c37C20A7f4f7313d6d99FC9C6E4511ce1", "connectors": { - "1": { - "FAST": "0xc9D1e8D5550c2f04738f75B321B4D8608f1dF20D" - }, "137": { - "FAST": "0x29667Da5ba50Dc99d80545D989e535AbA5742c9F" - }, - "8453": { - "FAST": "0xb0e2796063935188e350F7256e06F803f1d28560" - }, - "42161": { - "FAST": "0xB34e7290df1d8Aa278CEd9e059e5AB0D27E18DF1" + "FAST": "0x89f53F85Bf85c3c2Db2d0fA9C3C07aE27947D7Ed" } } } } -} +} \ No newline at end of file diff --git a/deployments/superbridge/prod_geist_bridge_mainnet_verification.json b/deployments/superbridge/prod_geist_bridge_mainnet_verification.json index f1eb427f..42f4dc7b 100644 --- a/deployments/superbridge/prod_geist_bridge_mainnet_verification.json +++ b/deployments/superbridge/prod_geist_bridge_mainnet_verification.json @@ -1,5 +1,37 @@ { "137": [ + [ + "0xfcbD92486214dD5993E4bF3FF38a9AFC58E3bfe1", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0x2CFFb0B0361838A9889Db3F5Ac7984B23D4988E9", + "0xc20687f8dc0ad51d01003013d1c5b02d10DED001", + 63157, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0xb0e2796063935188e350F7256e06F803f1d28560", + "ConnectorPlug", + "contracts/ConnectorPlug.sol", + [ + "0x2CFFb0B0361838A9889Db3F5Ac7984B23D4988E9", + "0xc20687f8dc0ad51d01003013d1c5b02d10DED001", + 63157, + "0x0000000000000000000000000000000000000000000000000000000000000000" + ] + ], + [ + "0xB34e7290df1d8Aa278CEd9e059e5AB0D27E18DF1", + "LimitHook", + "contracts/hooks/LimitHook.sol", + [ + "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", + "0x2CFFb0B0361838A9889Db3F5Ac7984B23D4988E9", + false + ] + ], [ "0x3C3a6c106A4BF3859be474c1ee5E3Df25e38f052", "ConnectorPlug", @@ -25,7 +57,9 @@ "0x2CFFb0B0361838A9889Db3F5Ac7984B23D4988E9", "Vault", "contracts/bridge/Vault.sol", - ["0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359"] + [ + "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359" + ] ] ], "8453": [ @@ -54,7 +88,9 @@ "0x3C3a6c106A4BF3859be474c1ee5E3Df25e38f052", "Vault", "contracts/bridge/Vault.sol", - ["0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"] + [ + "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913" + ] ], [ "0x88c7a119f0FF028e7582062Bf63C0e0C138F84F6", @@ -70,85 +106,49 @@ "0x2CFFb0B0361838A9889Db3F5Ac7984B23D4988E9", "Vault", "contracts/bridge/Vault.sol", - ["0x833589fcd6edb6e08f4c7c32d4f71b54bda02913"] + [ + "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913" + ] ] ], "63157": [ [ - "0xb0e2796063935188e350F7256e06F803f1d28560", + "0x89f53F85Bf85c3c2Db2d0fA9C3C07aE27947D7Ed", "ConnectorPlug", "contracts/ConnectorPlug.sol", [ - "0xfa17Cc60d20E973E6EC1731C9544B285F779fEb9", + "0x095D5f7c37C20A7f4f7313d6d99FC9C6E4511ce1", "0x34464194a4aCD38F42060D144BF3729F625Ff047", - 8453, + 137, "0x0000000000000000000000000000000000000000000000000000000000000000" ] ], [ - "0xB34e7290df1d8Aa278CEd9e059e5AB0D27E18DF1", - "ConnectorPlug", - "contracts/ConnectorPlug.sol", + "0x095D5f7c37C20A7f4f7313d6d99FC9C6E4511ce1", + "FiatTokenV2_1_Controller", + "contracts/bridge/FiatTokenV2_1/FiatTokenV2_1_Controller.sol", [ - "0xfa17Cc60d20E973E6EC1731C9544B285F779fEb9", - "0x34464194a4aCD38F42060D144BF3729F625Ff047", - 42161, - "0x0000000000000000000000000000000000000000000000000000000000000000" + "0xCFa0bC1ED6135166e9163211b4Ca566a0EE81e35" ] ], [ - "0x29667Da5ba50Dc99d80545D989e535AbA5742c9F", + "0x68aAe7E2EA9eF95312f1619139C9274375b8eEda", "ConnectorPlug", "contracts/ConnectorPlug.sol", [ - "0xfa17Cc60d20E973E6EC1731C9544B285F779fEb9", + "0xfb15eadB053D852da854AE3beC85D5dF8618aeF5", "0x34464194a4aCD38F42060D144BF3729F625Ff047", 137, "0x0000000000000000000000000000000000000000000000000000000000000000" ] ], [ - "0xc9D1e8D5550c2f04738f75B321B4D8608f1dF20D", - "ConnectorPlug", - "contracts/ConnectorPlug.sol", + "0xfb15eadB053D852da854AE3beC85D5dF8618aeF5", + "FiatTokenV2_1_Controller", + "contracts/bridge/FiatTokenV2_1/FiatTokenV2_1_Controller.sol", [ - "0xfa17Cc60d20E973E6EC1731C9544B285F779fEb9", - "0x34464194a4aCD38F42060D144BF3729F625Ff047", - 1, - "0x0000000000000000000000000000000000000000000000000000000000000000" + "0xCFa0bC1ED6135166e9163211b4Ca566a0EE81e35" ] - ], - [ - "0xe324C65F28bC5d55De665394f2DFc9d06af564Ca", - "LimitHook", - "contracts/hooks/LimitHook.sol", - [ - "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - "0xfa17Cc60d20E973E6EC1731C9544B285F779fEb9", - true - ] - ], - [ - "0xfa17Cc60d20E973E6EC1731C9544B285F779fEb9", - "Controller", - "contracts/bridge/Controller.sol", - ["0xCFa0bC1ED6135166e9163211b4Ca566a0EE81e35"] - ], - [ - "0x978c0D945DcAa716fe24bb231eAeeA703e82C439", - "LimitHook", - "contracts/hooks/LimitHook.sol", - [ - "0x3a2E7D1E98A4a051B0766f866237c73643fDF360", - "0x1eD34c0C9b0f08Bb013CD16E4b75A77cf47cE919", - true - ] - ], - [ - "0x1eD34c0C9b0f08Bb013CD16E4b75A77cf47cE919", - "Controller", - "contracts/bridge/Controller.sol", - ["0xCFa0bC1ED6135166e9163211b4Ca566a0EE81e35"] ] ] -} +} \ No newline at end of file diff --git a/script/bridge/bridge.ts b/script/bridge/bridge.ts index 383c2660..81321d4f 100644 --- a/script/bridge/bridge.ts +++ b/script/bridge/bridge.ts @@ -18,43 +18,43 @@ const gasLimit = 500_000; export const main = async () => { try { - const argv = await yargs - .option({ - srcChain: { - description: "srcChainSlug", - type: "string", - demandOption: true, - }, - }) - .option({ - dstChain: { - description: "dstChainSlug", - type: "string", - demandOption: true, - }, - }) - .option({ - amount: { - description: "token amount to bridge (formatted value)", - type: "string", - demandOption: true, - }, - }) - .option({ - token: { - description: "token", - type: "string", - demandOption: true, - }, - }).argv; - - const srcChain = Number(argv.srcChain) as ChainSlug; - const dstChain = Number(argv.dstChain) as ChainSlug; - const amount = argv.amount; - const token = argv.token as Tokens; - - if (!Object.values(Tokens).includes(token)) - throw Error("token not allowed"); + // const argv = await yargs + // .option({ + // srcChain: { + // description: "srcChainSlug", + // type: "string", + // demandOption: true, + // }, + // }) + // .option({ + // dstChain: { + // description: "dstChainSlug", + // type: "string", + // demandOption: true, + // }, + // }) + // .option({ + // amount: { + // description: "token amount to bridge (formatted value)", + // type: "string", + // demandOption: true, + // }, + // }) + // .option({ + // token: { + // description: "token", + // type: "string", + // demandOption: true, + // }, + // }).argv; + + const srcChain = 63157; //Number(argv.srcChain) as ChainSlug; + const dstChain = 137; // Number(argv.dstChain) as ChainSlug; + const amount = "2.2"; // argv.amount; + const token = "USDC"; //argv.token as Tokens; + + // if (!Object.values(Tokens).includes(token)) + // throw Error("token not allowed"); const amountBN = utils.parseUnits(amount.toString(), tokenDecimals[token]); @@ -73,18 +73,34 @@ export const main = async () => { token, srcAddresses ); + + console.log("bridgeContract", bridgeContract.address); + const tokenContract = await getTokenContract(srcChain, token, srcAddresses); + + console.log("tokenContract", tokenContract.address); + const connectorAddr = srcAddresses.connectors?.[dstChain]?.FAST; + console.log("connectorAddr", connectorAddr); + if (!connectorAddr) throw new Error("connector contract addresses missing"); const socketSigner = getSignerFromChainSlug(srcChain); console.log("checking balance and approval..."); + + console.log("socketSigner", socketSigner.address); + // approve const balance: BigNumber = await tokenContract.balanceOf( socketSigner.address ); + + console.log("balance", balance); + + console.log("amountBN", amountBN); + if (balance.lt(amountBN)) throw new Error("Not enough balance"); const currentApproval: BigNumber = await tokenContract.allowance( diff --git a/script/constants/projectConstants/superbridge/geist_bridge_mainnet.ts b/script/constants/projectConstants/superbridge/geist_bridge_mainnet.ts index 5a320e71..19861493 100644 --- a/script/constants/projectConstants/superbridge/geist_bridge_mainnet.ts +++ b/script/constants/projectConstants/superbridge/geist_bridge_mainnet.ts @@ -10,13 +10,14 @@ import { NFTs, Tokens } from "../../../../src/enums"; export const pc: ProjectConstants = { [DeploymentMode.PROD]: { [Tokens.USDC]: { - vaultChains: [ChainSlug.POLYGON_MAINNET, ChainSlug.BASE], + vaultChains: [ChainSlug.POLYGON_MAINNET /*, ChainSlug.BASE*/], controllerChains: [ChainSlug.GEIST], + isFiatTokenV2_1: true, tokenAddresses: { [ChainSlug.GEIST]: "0xCFa0bC1ED6135166e9163211b4Ca566a0EE81e35", }, hook: { - hookType: Hooks.LIMIT_HOOK, + hookType: Hooks.NO_HOOK, limitsAndPoolId: { // [ChainSlug.MAINNET]: { // [IntegrationTypes.fast]: { diff --git a/script/helpers/hook/setHook.ts b/script/helpers/hook/setHook.ts index bb165657..c4e13df9 100644 --- a/script/helpers/hook/setHook.ts +++ b/script/helpers/hook/setHook.ts @@ -2,7 +2,7 @@ import { ethers, network } from "hardhat"; export const main = async () => { let controllerAddress = ""; - let hookAddress = ""; + let hookAddress = "0x0000000000000000000000000000000000000000"; let provider; if (network.name === "polter") { @@ -22,7 +22,7 @@ export const main = async () => { controllerAddress = ""; hookAddress = ""; } else if (network.name === "geist") { - controllerAddress = "0x8C1e6969Ca76Ca73a9B002fE8085F6A45B3679e5"; + controllerAddress = "0xFDe33e454aA132dD1B37B4a6F813E3c54E96e8f8"; hookAddress = "0x0000000000000000000000000000000000000000"; provider = new ethers.providers.JsonRpcProvider(process.env.GEIST_RPC); } else {