diff --git a/.eslintignore b/.eslintignore index 684857fd..0a19b63b 100644 --- a/.eslintignore +++ b/.eslintignore @@ -3,5 +3,4 @@ artifacts cache dist node_modules -pkg typechain-types diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b0a9f1d9..44172210 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @andresaiello @lucas-janon @fadeev +* @andresaiello @brewmaster012 @lumtis @charliemc0 @fadeev diff --git a/.github/workflows/semantic-pr.yml b/.github/workflows/semantic-pr.yaml similarity index 100% rename from .github/workflows/semantic-pr.yml rename to .github/workflows/semantic-pr.yaml diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml new file mode 100644 index 00000000..7d20fee9 --- /dev/null +++ b/.github/workflows/test.yaml @@ -0,0 +1,26 @@ +name: Test + +on: + pull_request: + branches: + - "*" + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout Repository + uses: actions/checkout@v3 + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: "16" + registry-url: "https://registry.npmjs.org" + + - name: Install Dependencies + run: yarn install + + - name: Test + run: yarn test diff --git a/arguments.js b/arguments.js new file mode 100644 index 00000000..e0a30c5d --- /dev/null +++ b/arguments.js @@ -0,0 +1 @@ +module.exports = []; diff --git a/contracts/evm/ERC20Custody.sol b/contracts/evm/ERC20Custody.sol index 59d6d73f..5c5a3455 100644 --- a/contracts/evm/ERC20Custody.sol +++ b/contracts/evm/ERC20Custody.sol @@ -4,10 +4,11 @@ pragma solidity 0.8.7; import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; /// @title ERC20Custody. /// @notice ERC20Custody for depositing ERC20 assets into ZetaChain and making operations with them. -contract ERC20Custody { +contract ERC20Custody is ReentrancyGuard { using SafeERC20 for IERC20; error NotWhitelisted(); @@ -114,7 +115,7 @@ contract ERC20Custody { /** * @dev Pause custody operations. */ - function pause() external onlyTSSUpdater { + function pause() external onlyTSS { if (paused) { revert IsPaused(); } @@ -128,7 +129,7 @@ contract ERC20Custody { /** * @dev Unpause custody operations. */ - function unpause() external onlyTSSUpdater { + function unpause() external onlyTSS { if (!paused) { revert NotPaused(); } @@ -161,7 +162,12 @@ contract ERC20Custody { * @param amount, asset amount. * @param message, bytes message or encoded zetechain call. */ - function deposit(bytes calldata recipient, IERC20 asset, uint256 amount, bytes calldata message) external { + function deposit( + bytes calldata recipient, + IERC20 asset, + uint256 amount, + bytes calldata message + ) external nonReentrant { if (paused) { revert IsPaused(); } @@ -184,10 +190,7 @@ contract ERC20Custody { * @param asset, ERC20 asset. * @param amount, asset amount. */ - function withdraw(address recipient, IERC20 asset, uint256 amount) external onlyTSS { - if (paused) { - revert IsPaused(); - } + function withdraw(address recipient, IERC20 asset, uint256 amount) external nonReentrant onlyTSS { if (!whitelisted[asset]) { revert NotWhitelisted(); } diff --git a/contracts/evm/Zeta.non-eth.sol b/contracts/evm/Zeta.non-eth.sol index 5ae786d8..70b0bc81 100644 --- a/contracts/evm/Zeta.non-eth.sol +++ b/contracts/evm/Zeta.non-eth.sol @@ -24,6 +24,12 @@ contract ZetaNonEth is ZetaNonEthInterface, ERC20Burnable, ZetaErrors { event Burnt(address indexed burnee, uint256 amount); + event TSSAddressUpdated(address callerAddress, address newTssAddress); + + event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress); + + event ConnectorAddressUpdated(address callerAddress, address newConnectorAddress); + constructor(address tssAddress_, address tssAddressUpdater_) ERC20("Zeta", "ZETA") { if (tssAddress_ == address(0) || tssAddressUpdater_ == address(0)) revert InvalidAddress(); @@ -37,6 +43,9 @@ contract ZetaNonEth is ZetaNonEthInterface, ERC20Burnable, ZetaErrors { tssAddress = tssAddress_; connectorAddress = connectorAddress_; + + emit TSSAddressUpdated(msg.sender, tssAddress_); + emit ConnectorAddressUpdated(msg.sender, connectorAddress_); } /** @@ -47,6 +56,7 @@ contract ZetaNonEth is ZetaNonEthInterface, ERC20Burnable, ZetaErrors { if (tssAddress == address(0)) revert InvalidAddress(); tssAddressUpdater = tssAddress; + emit TSSAddressUpdaterUpdated(msg.sender, tssAddress); } function mint(address mintee, uint256 value, bytes32 internalSendHash) external override { diff --git a/contracts/evm/ZetaConnector.base.sol b/contracts/evm/ZetaConnector.base.sol index c41799a5..4ecf55eb 100644 --- a/contracts/evm/ZetaConnector.base.sol +++ b/contracts/evm/ZetaConnector.base.sol @@ -61,9 +61,11 @@ contract ZetaConnectorBase is ConnectorErrors, Pausable { bytes32 indexed internalSendHash ); - event TSSAddressUpdated(address zetaTxSenderAddress, address newTssAddress); + event TSSAddressUpdated(address callerAddress, address newTssAddress); - event PauserAddressUpdated(address updaterAddress, address newTssAddress); + event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress); + + event PauserAddressUpdated(address callerAddress, address newTssAddress); /** * @dev Constructor requires initial addresses. @@ -139,6 +141,7 @@ contract ZetaConnectorBase is ConnectorErrors, Pausable { if (tssAddress == address(0)) revert ZetaCommonErrors.InvalidAddress(); tssAddressUpdater = tssAddress; + emit TSSAddressUpdaterUpdated(msg.sender, tssAddressUpdater); } /** diff --git a/contracts/evm/ZetaConnector.non-eth.sol b/contracts/evm/ZetaConnector.non-eth.sol index 98cc8061..2844bcd8 100644 --- a/contracts/evm/ZetaConnector.non-eth.sol +++ b/contracts/evm/ZetaConnector.non-eth.sol @@ -15,6 +15,8 @@ import "./interfaces/ZetaNonEthInterface.sol"; contract ZetaConnectorNonEth is ZetaConnectorBase { uint256 public maxSupply = 2 ** 256 - 1; + event MaxSupplyUpdated(address callerAddress, uint256 newMaxSupply); + constructor( address zetaTokenAddress_, address tssAddress_, @@ -28,6 +30,7 @@ contract ZetaConnectorNonEth is ZetaConnectorBase { function setMaxSupply(uint256 maxSupply_) external onlyTssAddress { maxSupply = maxSupply_; + emit MaxSupplyUpdated(msg.sender, maxSupply_); } /** diff --git a/contracts/evm/testing/AttackerContract.sol b/contracts/evm/testing/AttackerContract.sol new file mode 100644 index 00000000..45606d6f --- /dev/null +++ b/contracts/evm/testing/AttackerContract.sol @@ -0,0 +1,54 @@ +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.0; +import "@openzeppelin/contracts/token/ERC20/IERC20.sol"; + +interface Victim { + function deposit(bytes calldata recipient, address asset, uint256 amount, bytes calldata message) external; + + function withdraw(address recipient, address asset, uint256 amount) external; +} + +contract AttackerContract { + address public victimContractAddress; + uint256 private _victimMethod; + + constructor(address victimContractAddress_, address wzeta, uint256 victimMethod) { + victimContractAddress = victimContractAddress_; + IERC20(wzeta).approve(victimContractAddress, type(uint256).max); + _victimMethod = victimMethod; + } + + // Fallback function to receive ETH + receive() external payable {} + + function attackDeposit() internal { + Victim(victimContractAddress).deposit("0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", address(this), 0, "0x00"); + } + + function attackWidrawal() internal { + Victim(victimContractAddress).withdraw(0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266, address(this), 0); + } + + function attack() internal { + if (_victimMethod == 1) { + attackDeposit(); + } else if (_victimMethod == 2) { + attackWidrawal(); + } + } + + function balanceOf(address account) external returns (uint256) { + attack(); + return 0; + } + + function transferFrom(address from, address to, uint256 amount) public returns (bool) { + attack(); + return true; + } + + function transfer(address to, uint256 amount) public returns (bool) { + attack(); + return true; + } +} diff --git a/contracts/evm/testing/ERC20Mock.sol b/contracts/evm/testing/ERC20Mock.sol new file mode 100644 index 00000000..61cdc0ce --- /dev/null +++ b/contracts/evm/testing/ERC20Mock.sol @@ -0,0 +1,13 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.7; + +import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; + +/** + * @dev ZetaEth is an implementation of OpenZeppelin's ERC20 + */ +contract ERC20Mock is ERC20 { + constructor(string memory name, string memory symbol, address creator, uint256 initialSupply) ERC20(name, symbol) { + _mint(creator, initialSupply * (10 ** uint256(decimals()))); + } +} diff --git a/contracts/evm/tools/ZetaInteractor.sol b/contracts/evm/tools/ZetaInteractor.sol index e59dd2ff..3ec12678 100644 --- a/contracts/evm/tools/ZetaInteractor.sol +++ b/contracts/evm/tools/ZetaInteractor.sol @@ -30,7 +30,6 @@ abstract contract ZetaInteractor is Ownable2Step, ZetaInteractorErrors { modifier isValidRevertCall(ZetaInterfaces.ZetaRevert calldata zetaRevert) { _isValidCaller(); if (zetaRevert.zetaTxSenderAddress != address(this)) revert InvalidZetaRevertCall(); - if (zetaRevert.sourceChainId != currentChainId) revert InvalidZetaRevertCall(); _; } diff --git a/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol b/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol new file mode 100644 index 00000000..e4fbc397 --- /dev/null +++ b/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol @@ -0,0 +1,220 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.7; + +import "@openzeppelin/contracts/interfaces/IERC20.sol"; +import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; +import "@uniswap/v3-periphery/contracts/interfaces/ISwapRouter.sol"; +import "@uniswap/v3-core/contracts/interfaces/IUniswapV3Factory.sol"; +import "@uniswap/v3-core/contracts/interfaces/IUniswapV3Pool.sol"; + +import "../interfaces/ZetaInterfaces.sol"; + +interface ZetaTokenConsumerUniV3Errors { + error InputCantBeZero(); + + error ErrorSendingETH(); + + error ReentrancyError(); +} + +interface WETH9 { + function withdraw(uint256 wad) external; +} + +interface ISwapRouterPancake is IUniswapV3SwapCallback { + struct ExactInputSingleParams { + address tokenIn; + address tokenOut; + uint24 fee; + address recipient; + uint256 amountIn; + uint256 amountOutMinimum; + uint160 sqrtPriceLimitX96; + } + + /// @notice Swaps `amountIn` of one token for as much as possible of another token + /// @param params The parameters necessary for the swap, encoded as `ExactInputSingleParams` in calldata + /// @return amountOut The amount of the received token + function exactInputSingle(ExactInputSingleParams calldata params) external payable returns (uint256 amountOut); + + struct ExactInputParams { + bytes path; + address recipient; + uint256 amountIn; + uint256 amountOutMinimum; + } + + /// @notice Swaps `amountIn` of one token for as much as possible of another along the specified path + /// @param params The parameters necessary for the multi-hop swap, encoded as `ExactInputParams` in calldata + /// @return amountOut The amount of the received token + function exactInput(ExactInputParams calldata params) external payable returns (uint256 amountOut); +} + +/** + * @dev Uniswap V3 strategy for ZetaTokenConsumer + */ +contract ZetaTokenConsumerPancakeV3 is ZetaTokenConsumer, ZetaTokenConsumerUniV3Errors { + using SafeERC20 for IERC20; + uint256 internal constant MAX_DEADLINE = 200; + + uint24 public immutable zetaPoolFee; + uint24 public immutable tokenPoolFee; + + address public immutable WETH9Address; + address public immutable zetaToken; + + ISwapRouterPancake public immutable pancakeV3Router; + IUniswapV3Factory public immutable uniswapV3Factory; + + bool internal _locked; + + constructor( + address zetaToken_, + address pancakeV3Router_, + address uniswapV3Factory_, + address WETH9Address_, + uint24 zetaPoolFee_, + uint24 tokenPoolFee_ + ) { + if ( + zetaToken_ == address(0) || + pancakeV3Router_ == address(0) || + uniswapV3Factory_ == address(0) || + WETH9Address_ == address(0) + ) revert ZetaCommonErrors.InvalidAddress(); + + zetaToken = zetaToken_; + pancakeV3Router = ISwapRouterPancake(pancakeV3Router_); + uniswapV3Factory = IUniswapV3Factory(uniswapV3Factory_); + WETH9Address = WETH9Address_; + zetaPoolFee = zetaPoolFee_; + tokenPoolFee = tokenPoolFee_; + } + + modifier nonReentrant() { + if (_locked) revert ReentrancyError(); + _locked = true; + _; + _locked = false; + } + + receive() external payable {} + + function getZetaFromEth( + address destinationAddress, + uint256 minAmountOut + ) external payable override returns (uint256) { + if (destinationAddress == address(0)) revert ZetaCommonErrors.InvalidAddress(); + if (msg.value == 0) revert InputCantBeZero(); + + ISwapRouterPancake.ExactInputSingleParams memory params = ISwapRouterPancake.ExactInputSingleParams({ + tokenIn: WETH9Address, + tokenOut: zetaToken, + fee: zetaPoolFee, + recipient: destinationAddress, + amountIn: msg.value, + amountOutMinimum: minAmountOut, + sqrtPriceLimitX96: 0 + }); + + uint256 amountOut = pancakeV3Router.exactInputSingle{value: msg.value}(params); + + emit EthExchangedForZeta(msg.value, amountOut); + return amountOut; + } + + function getZetaFromToken( + address destinationAddress, + uint256 minAmountOut, + address inputToken, + uint256 inputTokenAmount + ) external override returns (uint256) { + if (destinationAddress == address(0) || inputToken == address(0)) revert ZetaCommonErrors.InvalidAddress(); + if (inputTokenAmount == 0) revert InputCantBeZero(); + + IERC20(inputToken).safeTransferFrom(msg.sender, address(this), inputTokenAmount); + IERC20(inputToken).safeApprove(address(pancakeV3Router), inputTokenAmount); + + ISwapRouterPancake.ExactInputParams memory params = ISwapRouterPancake.ExactInputParams({ + path: abi.encodePacked(inputToken, tokenPoolFee, WETH9Address, zetaPoolFee, zetaToken), + recipient: destinationAddress, + amountIn: inputTokenAmount, + amountOutMinimum: minAmountOut + }); + + uint256 amountOut = pancakeV3Router.exactInput(params); + + emit TokenExchangedForZeta(inputToken, inputTokenAmount, amountOut); + return amountOut; + } + + function getEthFromZeta( + address destinationAddress, + uint256 minAmountOut, + uint256 zetaTokenAmount + ) external override returns (uint256) { + if (destinationAddress == address(0)) revert ZetaCommonErrors.InvalidAddress(); + if (zetaTokenAmount == 0) revert InputCantBeZero(); + + IERC20(zetaToken).safeTransferFrom(msg.sender, address(this), zetaTokenAmount); + IERC20(zetaToken).safeApprove(address(pancakeV3Router), zetaTokenAmount); + + ISwapRouterPancake.ExactInputSingleParams memory params = ISwapRouterPancake.ExactInputSingleParams({ + tokenIn: zetaToken, + tokenOut: WETH9Address, + fee: zetaPoolFee, + recipient: address(this), + amountIn: zetaTokenAmount, + amountOutMinimum: minAmountOut, + sqrtPriceLimitX96: 0 + }); + + uint256 amountOut = pancakeV3Router.exactInputSingle(params); + + WETH9(WETH9Address).withdraw(amountOut); + + emit ZetaExchangedForEth(zetaTokenAmount, amountOut); + + (bool sent, ) = destinationAddress.call{value: amountOut}(""); + if (!sent) revert ErrorSendingETH(); + + return amountOut; + } + + function getTokenFromZeta( + address destinationAddress, + uint256 minAmountOut, + address outputToken, + uint256 zetaTokenAmount + ) external override nonReentrant returns (uint256) { + if (destinationAddress == address(0) || outputToken == address(0)) revert ZetaCommonErrors.InvalidAddress(); + if (zetaTokenAmount == 0) revert InputCantBeZero(); + + IERC20(zetaToken).safeTransferFrom(msg.sender, address(this), zetaTokenAmount); + IERC20(zetaToken).safeApprove(address(pancakeV3Router), zetaTokenAmount); + + ISwapRouterPancake.ExactInputParams memory params = ISwapRouterPancake.ExactInputParams({ + path: abi.encodePacked(zetaToken, zetaPoolFee, WETH9Address, tokenPoolFee, outputToken), + recipient: destinationAddress, + amountIn: zetaTokenAmount, + amountOutMinimum: minAmountOut + }); + + uint256 amountOut = pancakeV3Router.exactInput(params); + + emit ZetaExchangedForToken(outputToken, zetaTokenAmount, amountOut); + return amountOut; + } + + function hasZetaLiquidity() external view override returns (bool) { + address poolAddress = uniswapV3Factory.getPool(WETH9Address, zetaToken, zetaPoolFee); + + if (poolAddress == address(0)) { + return false; + } + + //@dev: if pool does exist, get its liquidity + IUniswapV3Pool pool = IUniswapV3Pool(poolAddress); + return pool.liquidity() > 0; + } +} diff --git a/contracts/zevm/ZRC20.sol b/contracts/zevm/ZRC20.sol index 8887dbad..143c662e 100644 --- a/contracts/zevm/ZRC20.sol +++ b/contracts/zevm/ZRC20.sol @@ -168,29 +168,6 @@ contract ZRC20 is IZRC20, IZRC20Metadata, ZRC20Errors { return true; } - /** - * @dev Increases allowance by amount for spender. - * @param spender, spender address. - * @param amount, amount by which to increase allownace. - * @return true/false if succeeded/failed. - */ - function increaseAllowance(address spender, uint256 amount) external virtual returns (bool) { - _allowances[spender][_msgSender()] += amount; - return true; - } - - /** - * @dev Decreases allowance by amount for spender. - * @param spender, spender address. - * @param amount, amount by which to decrease allownace. - * @return true/false if succeeded/failed. - */ - function decreaseAllowance(address spender, uint256 amount) external virtual returns (bool) { - if (_allowances[spender][_msgSender()] < amount) revert LowAllowance(); - _allowances[spender][_msgSender()] -= amount; - return true; - } - /** * @dev Transfers tokens from sender to recipient. * @param sender, sender address. diff --git a/contracts/zevm/ConnectorZEVM.sol b/contracts/zevm/ZetaConnectorZEVM.sol similarity index 98% rename from contracts/zevm/ConnectorZEVM.sol rename to contracts/zevm/ZetaConnectorZEVM.sol index 69d9d65e..85a83f3a 100644 --- a/contracts/zevm/ConnectorZEVM.sol +++ b/contracts/zevm/ZetaConnectorZEVM.sol @@ -76,8 +76,8 @@ contract ZetaConnectorZEVM is ZetaInterfaces { ); event SetWZETA(address wzeta_); - constructor(address _wzeta) { - wzeta = _wzeta; + constructor(address wzeta_) { + wzeta = wzeta_; } /// @dev Receive function to receive ZETA from WETH9.withdraw(). diff --git a/contracts/zevm/interfaces/IWZETA.sol b/contracts/zevm/interfaces/IWZETA.sol new file mode 100644 index 00000000..f5a895d2 --- /dev/null +++ b/contracts/zevm/interfaces/IWZETA.sol @@ -0,0 +1,25 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.7; + +interface IWETH9 { + event Approval(address indexed owner, address indexed spender, uint value); + event Transfer(address indexed from, address indexed to, uint value); + event Deposit(address indexed dst, uint wad); + event Withdrawal(address indexed src, uint wad); + + function totalSupply() external view returns (uint); + + function balanceOf(address owner) external view returns (uint); + + function allowance(address owner, address spender) external view returns (uint); + + function approve(address spender, uint wad) external returns (bool); + + function transfer(address to, uint wad) external returns (bool); + + function transferFrom(address from, address to, uint wad) external returns (bool); + + function deposit() external payable; + + function withdraw(uint wad) external; +} diff --git a/contracts/zevm/testing/SystemContractMock.sol b/contracts/zevm/testing/SystemContractMock.sol new file mode 100644 index 00000000..f3c86a34 --- /dev/null +++ b/contracts/zevm/testing/SystemContractMock.sol @@ -0,0 +1,85 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.7; + +import "../interfaces/zContract.sol"; +import "../interfaces/IZRC20.sol"; + +interface SystemContractErrors { + error CallerIsNotFungibleModule(); + + error InvalidTarget(); + + error CantBeIdenticalAddresses(); + + error CantBeZeroAddress(); +} + +contract SystemContractMock is SystemContractErrors { + mapping(uint256 => uint256) public gasPriceByChainId; + mapping(uint256 => address) public gasCoinZRC20ByChainId; + mapping(uint256 => address) public gasZetaPoolByChainId; + + address public wZetaContractAddress; + address public uniswapv2FactoryAddress; + address public uniswapv2Router02Address; + + event SystemContractDeployed(); + event SetGasPrice(uint256, uint256); + event SetGasCoin(uint256, address); + event SetGasZetaPool(uint256, address); + event SetWZeta(address); + + constructor(address wzeta_, address uniswapv2Factory_, address uniswapv2Router02_) { + wZetaContractAddress = wzeta_; + uniswapv2FactoryAddress = uniswapv2Factory_; + uniswapv2Router02Address = uniswapv2Router02_; + emit SystemContractDeployed(); + } + + // fungible module updates the gas price oracle periodically + function setGasPrice(uint256 chainID, uint256 price) external { + gasPriceByChainId[chainID] = price; + emit SetGasPrice(chainID, price); + } + + function setGasCoinZRC20(uint256 chainID, address zrc20) external { + gasCoinZRC20ByChainId[chainID] = zrc20; + emit SetGasCoin(chainID, zrc20); + } + + function setWZETAContractAddress(address addr) external { + wZetaContractAddress = addr; + emit SetWZeta(wZetaContractAddress); + } + + // returns sorted token addresses, used to handle return values from pairs sorted in this order + function sortTokens(address tokenA, address tokenB) internal pure returns (address token0, address token1) { + if (tokenA == tokenB) revert CantBeIdenticalAddresses(); + (token0, token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA); + if (token0 == address(0)) revert CantBeZeroAddress(); + } + + function uniswapv2PairFor(address factory, address tokenA, address tokenB) public pure returns (address pair) { + (address token0, address token1) = sortTokens(tokenA, tokenB); + pair = address( + uint160( + uint256( + keccak256( + abi.encodePacked( + hex"ff", + factory, + keccak256(abi.encodePacked(token0, token1)), + hex"96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f" // init code hash + ) + ) + ) + ) + ); + } + + function onCrossChainCall(address target, address zrc20, uint256 amount, bytes calldata message) external { + zContext memory context = zContext({sender: msg.sender, origin: "", chainID: block.chainid}); + IZRC20(zrc20).transfer(target, amount); + zContract(target).onCrossChainCall(context, zrc20, amount, message); + } +} diff --git a/data/addresses.json b/data/addresses.json index b56f9f32..b78c7b76 100644 --- a/data/addresses.json +++ b/data/addresses.json @@ -1,13 +1,12 @@ { "ccm": { - "baobab_testnet": { - "connector": "", - "immutableCreate2Factory": "0x095a03c6a68137fE9a566bBc3e552F299d8b886d", - "tss": "", + "bsc_mainnet": { + "connector": "0x000063A6e758D9e2f438d430108377564cf4077D", + "erc20Custody": "0x00000fF8fA992424957F97688015814e707A0115", + "immutableCreate2Factory": "", + "tss": "0x70e967acFcC17c3941E87562161406d41676FD83", "tssUpdater": "", - "zetaToken": "", - "zetaTokenConsumerUniV2": "", - "zetaTokenConsumerUniV3": "" + "zetaToken": "0x0000028a2eB8346cd5c0267856aB7594B7a55308" }, "bsc_testnet": { "connector": "0x0000ecb8cdd25a18f12daa23f6422e07fbf8b9e1", @@ -17,7 +16,33 @@ "tssUpdater": "0x55122f7590164Ac222504436943FAB17B62F5d7d", "zetaToken": "0x0000c9ec4042283e8139c74f4c64bcd1e0b9b54f", "zetaTokenConsumerUniV2": "", - "zetaTokenConsumerUniV3": "0xd886b7Af031F9a505310bA01951948BD1d673aF1" + "zetaTokenConsumerUniV3": "0xFB2fCE3CCca19F0f764Ed8aa26C62181E3dA04C5" + }, + "btc_mainnet": { + "connector": "", + "immutableCreate2Factory": "", + "tss": "bc1qm24wp577nk8aacckv8np465z3dvmu7ry45el6y", + "tssUpdater": "", + "zetaToken": "", + "zetaTokenConsumerUniV2": "", + "zetaTokenConsumerUniV3": "" + }, + "btc_testnet": { + "connector": "", + "immutableCreate2Factory": "", + "tss": "tb1qy9pqmk2pd9sv63g27jt8r657wy0d9ueeh0nqur", + "tssUpdater": "", + "zetaToken": "", + "zetaTokenConsumerUniV2": "", + "zetaTokenConsumerUniV3": "" + }, + "eth_mainnet": { + "connector": "0x000007Cf399229b2f5A4D043F20E90C9C98B7C6a", + "erc20Custody": "0x0000030Ec64DF25301d8414eE5a29588C4B0dE10", + "immutableCreate2Factory": "", + "tss": "0x70e967acFcC17c3941E87562161406d41676FD83", + "tssUpdater": "", + "zetaToken": "0xf091867EC603A6628eD83D274E835539D82e9cc8" }, "goerli_testnet": { "connector": "0x00005e3125aba53c5652f9f0ce1a4cf91d8b15ea", @@ -39,6 +64,15 @@ "zetaTokenConsumerUniV2": "", "zetaTokenConsumerUniV3": "0x7e792f3736751e168864106AdbAC50152641A927" }, + "zeta_mainnet": { + "connector": "0x239e96c8f17C85c30100AC26F635Ea15f23E9c67", + "immutableCreate2Factory": "", + "tss": "", + "tssUpdater": "", + "zetaToken": "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf", + "zetaTokenConsumerUniV2": "", + "zetaTokenConsumerUniV3": "" + }, "zeta_testnet": { "connector": "0x239e96c8f17C85c30100AC26F635Ea15f23E9c67", "immutableCreate2Factory": "", @@ -50,37 +84,43 @@ } }, "non_zeta": { - "baobab_testnet": { + "bsc_mainnet": { + "uniswapV2Factory": "", "uniswapV2Router02": "", "uniswapV3Factory": "", "uniswapV3Router": "", "weth9": "" }, "bsc_testnet": { + "uniswapV2Factory": "", "uniswapV2Router02": "0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3", "uniswapV3Factory": "0x0BFbCF9fa4f9C56B0F40a671Ad40E0805A091865", "uniswapV3Router": "0x9a489505a00cE272eAa5e07Dba6491314CaE3796", - "weth9": "" + "weth9": "0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd" }, - "etherum_mainnet": { + "eth_mainnet": { + "uniswapV2Factory": "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f", "uniswapV2Router02": "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D", "uniswapV3Factory": "0x1F98431c8aD98523631AE4a59f267346ea31F984", "uniswapV3Router": "0xE592427A0AEce92De3Edee1F18E0157C05861564", "weth9": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, "goerli_testnet": { + "uniswapV2Factory": "", "uniswapV2Router02": "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D", "uniswapV3Factory": "0x1F98431c8aD98523631AE4a59f267346ea31F984", "uniswapV3Router": "0xE592427A0AEce92De3Edee1F18E0157C05861564", "weth9": "0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6" }, "mumbai_testnet": { + "uniswapV2Factory": "", "uniswapV2Router02": "0x0000ecb8cdd25a18f12daa23f6422e07fbf8b9e1", "uniswapV3Factory": "0x1F98431c8aD98523631AE4a59f267346ea31F984", "uniswapV3Router": "0xE592427A0AEce92De3Edee1F18E0157C05861564", - "weth9": "0xd886b7Af031F9a505310bA01951948BD1d673aF1" + "weth9": "0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889" }, "zeta_testnet": { + "uniswapV2Factory": "", "uniswapV2Router02": "", "uniswapV3Factory": "", "uniswapV3Router": "", @@ -91,15 +131,24 @@ "bsc_testnet": { "zrc20": "0xd97B1de3619ed2c6BEb3860147E30cA8A7dC9891" }, + "btc_testnet": { + "zrc20": "0x65a45c57636f9BcCeD4fe193A602008578BcA90b" + }, "goerli_testnet": { "zrc20": "0x13A0c5930C028511Dc02665E7285134B6d11A5f4" }, "mumbai_testnet": { "zrc20": "0x48f80608B672DC30DC7e3dbBd0343c5F02C738Eb" }, + "zeta_mainnet": { + "fungibleModule": "", + "systemContract": "0x91d18e54DAf4F677cB28167158d6dd21F6aB3921", + "uniswapv2Factory": "", + "uniswapv2Router02": "" + }, "zeta_testnet": { "fungibleModule": "0x735b14BB79463307AAcBED86DAf3322B1e6226aB", - "systemContract": "0x91d18e54DAf4F677cB28167158d6dd21F6aB3921", + "systemContract": "0xEdf1c3275d13489aCdC6cD6eD246E72458B8795B", "uniswapv2Factory": "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", "uniswapv2Router02": "0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe" } diff --git a/data/addresses.mainnet.json b/data/addresses.mainnet.json new file mode 100644 index 00000000..8d9af7f4 --- /dev/null +++ b/data/addresses.mainnet.json @@ -0,0 +1,289 @@ +[ + { + "address": "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f", + "category": "messaging", + "chain_id": 1, + "chain_name": "eth_mainnet", + "type": "uniswapV2Factory" + }, + { + "address": "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D", + "category": "messaging", + "chain_id": 1, + "chain_name": "eth_mainnet", + "type": "uniswapV2Router02" + }, + { + "address": "0xE592427A0AEce92De3Edee1F18E0157C05861564", + "category": "messaging", + "chain_id": 1, + "chain_name": "eth_mainnet", + "type": "uniswapV3Router" + }, + { + "address": "0x70e967acFcC17c3941E87562161406d41676FD83", + "category": "omnichain", + "chain_id": 1, + "chain_name": "eth_mainnet", + "type": "tss" + }, + { + "address": "0x70e967acFcC17c3941E87562161406d41676FD83", + "category": "omnichain", + "chain_id": 56, + "chain_name": "bsc_mainnet", + "type": "tss" + }, + { + "address": "0x70e967acFcC17c3941E87562161406d41676FD83", + "category": "omnichain", + "chain_id": 8332, + "chain_name": "btc_mainnet", + "type": "tss" + }, + { + "address": "0x70e967acFcC17c3941E87562161406d41676FD83", + "category": "omnichain", + "chain_id": 7000, + "chain_name": "zeta_mainnet", + "type": "tss" + }, + { + "address": "0x91d18e54DAf4F677cB28167158d6dd21F6aB3921", + "category": "omnichain", + "chain_id": 7000, + "chain_name": "zeta_mainnet", + "type": "systemContract" + }, + { + "address": "0x239e96c8f17C85c30100AC26F635Ea15f23E9c67", + "category": "messaging", + "chain_id": 7000, + "chain_name": "zeta_mainnet", + "type": "connector" + }, + { + "address": "0x05BA149A7bd6dC1F937fA9046A9e05C05f3b18b0", + "asset": "0x8ac76a51cc950d9822d68b83fe1ad97b32cd580d", + "category": "omnichain", + "chain_id": 7000, + "chain_name": "zeta_mainnet", + "coin_type": "erc20", + "decimals": 18, + "description": "ZetaChain ZRC20 USDC on BSC", + "foreign_chain_id": "56", + "symbol": "USDC.BSC", + "type": "zrc20" + }, + { + "address": "0x0cbe0dF132a6c6B4a2974Fa1b7Fb953CF0Cc798a", + "asset": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "category": "omnichain", + "chain_id": 7000, + "chain_name": "zeta_mainnet", + "coin_type": "erc20", + "decimals": 18, + "description": "ZetaChain ZRC20 USDC on ETH", + "foreign_chain_id": "1", + "symbol": "USDC.ETH", + "type": "zrc20" + }, + { + "address": "0x13A0c5930C028511Dc02665E7285134B6d11A5f4", + "asset": "", + "category": "omnichain", + "chain_id": 7000, + "chain_name": "zeta_mainnet", + "coin_type": "gas", + "decimals": 18, + "description": "ZetaChain ZRC20 BTC-btc_mainnet", + "foreign_chain_id": "8332", + "symbol": "BTC.BTC", + "type": "zrc20" + }, + { + "address": "0x48f80608B672DC30DC7e3dbBd0343c5F02C738Eb", + "asset": "", + "category": "omnichain", + "chain_id": 7000, + "chain_name": "zeta_mainnet", + "coin_type": "gas", + "decimals": 18, + "description": "ZetaChain ZRC20 BNB-bsc_mainnet", + "foreign_chain_id": "56", + "symbol": "BNB.BSC", + "type": "zrc20" + }, + { + "address": "0x7c8dDa80bbBE1254a7aACf3219EBe1481c6E01d7", + "asset": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "category": "omnichain", + "chain_id": 7000, + "chain_name": "zeta_mainnet", + "coin_type": "erc20", + "decimals": 18, + "description": "ZetaChain ZRC20 USDT on ETH", + "foreign_chain_id": "1", + "symbol": "USDT.ETH", + "type": "zrc20" + }, + { + "address": "0x91d4F0D54090Df2D81e834c3c8CE71C6c865e79F", + "asset": "0x55d398326f99059ff775485246999027b3197955", + "category": "omnichain", + "chain_id": 7000, + "chain_name": "zeta_mainnet", + "coin_type": "erc20", + "decimals": 18, + "description": "ZetaChain ZRC20 USDT on BSC", + "foreign_chain_id": "56", + "symbol": "USDT.BSC", + "type": "zrc20" + }, + { + "address": "0xd97B1de3619ed2c6BEb3860147E30cA8A7dC9891", + "asset": "", + "category": "omnichain", + "chain_id": 7000, + "chain_name": "zeta_mainnet", + "coin_type": "gas", + "decimals": 18, + "description": "ZetaChain ZRC20 ETH-eth_mainnet", + "foreign_chain_id": "1", + "symbol": "ETH.ETH", + "type": "zrc20" + }, + { + "address": "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "category": "omnichain", + "chain_id": 7000, + "chain_name": "zeta_mainnet", + "type": "uniswapV2Factory" + }, + { + "address": "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf", + "category": "omnichain", + "chain_id": 7000, + "chain_name": "zeta_mainnet", + "type": "zetaToken" + }, + { + "address": "0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe", + "category": "omnichain", + "chain_id": 7000, + "chain_name": "zeta_mainnet", + "type": "uniswapV2Router02" + }, + { + "address": "0x735b14BB79463307AAcBED86DAf3322B1e6226aB", + "category": "omnichain", + "chain_id": 7000, + "chain_name": "zeta_mainnet", + "type": "fungibleModule" + }, + { + "address": "0x0000028a2eB8346cd5c0267856aB7594B7a55308", + "category": "messaging", + "chain_id": 56, + "chain_name": "bsc_mainnet", + "type": "zetaToken" + }, + { + "address": "0x000063A6e758D9e2f438d430108377564cf4077D", + "category": "messaging", + "chain_id": 56, + "chain_name": "bsc_mainnet", + "type": "connector" + }, + { + "address": "0x00000fF8fA992424957F97688015814e707A0115", + "category": "omnichain", + "chain_id": 56, + "chain_name": "bsc_mainnet", + "type": "erc20Custody" + }, + { + "address": "0xf091867EC603A6628eD83D274E835539D82e9cc8", + "category": "messaging", + "chain_id": 1, + "chain_name": "eth_mainnet", + "type": "zetaToken" + }, + { + "address": "0x000007Cf399229b2f5A4D043F20E90C9C98B7C6a", + "category": "messaging", + "chain_id": 1, + "chain_name": "eth_mainnet", + "type": "connector" + }, + { + "address": "0x0000030Ec64DF25301d8414eE5a29588C4B0dE10", + "category": "omnichain", + "chain_id": 1, + "chain_name": "eth_mainnet", + "type": "erc20Custody" + }, + { + "address": "0xaeB6dDB7708467814D557e340283248be8E43124", + "category": "omnichain", + "chain_id": 1, + "chain_name": "eth_mainnet", + "type": "tssUpdater" + }, + { + "address": "0xaf28a257D292e7f0E531073f70a175b57E0261a8", + "category": "omnichain", + "chain_id": 56, + "chain_name": "bsc_mainnet", + "type": "tssUpdater" + }, + { + "address": "0xaeB6dDB7708467814D557e340283248be8E43124", + "category": "messaging", + "chain_id": 1, + "chain_name": "eth_mainnet", + "type": "pauser" + }, + { + "address": "0xaf28a257D292e7f0E531073f70a175b57E0261a8", + "category": "messaging", + "chain_id": 56, + "chain_name": "bsc_mainnet", + "type": "pauser" + }, + { + "address": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", + "category": "messaging", + "chain_id": 1, + "chain_name": "eth_mainnet", + "type": "weth9" + }, + { + "address": "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f", + "category": "messaging", + "chain_id": 1, + "chain_name": "eth_mainnet", + "type": "uniswapV2Factory" + }, + { + "address": "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "category": "messaging", + "chain_id": 7000, + "chain_name": "zeta_mainnet", + "type": "uniswapV2Factory" + }, + { + "address": "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f", + "category": "messaging", + "chain_id": 1, + "chain_name": "eth_mainnet", + "type": "uniswapV3Factory" + }, + { + "address": "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "category": "messaging", + "chain_id": 7000, + "chain_name": "zeta_mainnet", + "type": "uniswapV3Factory" + } +] diff --git a/data/addresses.testnet.json b/data/addresses.testnet.json new file mode 100644 index 00000000..e697a43f --- /dev/null +++ b/data/addresses.testnet.json @@ -0,0 +1,408 @@ +[ + { + "address": "0x8eAc517b92eeE82177a83851268F13109878f8c4", + "category": "messaging", + "chain_id": 5, + "chain_name": "goerli_testnet", + "type": "zetaTokenConsumerUniV2" + }, + { + "address": "0x7e792f3736751e168864106AdbAC50152641A927", + "category": "messaging", + "chain_id": 80001, + "chain_name": "mumbai_testnet", + "type": "zetaTokenConsumerUniV3" + }, + { + "address": "0xFB2fCE3CCca19F0f764Ed8aa26C62181E3dA04C5", + "category": "messaging", + "chain_id": 97, + "chain_name": "bsc_testnet", + "type": "zetaTokenConsumerUniV3" + }, + { + "address": "0x8954AfA98594b838bda56FE4C12a09D7739D179b", + "category": "messaging", + "chain_id": 80001, + "chain_name": "mumbai_testnet", + "type": "uniswapV2Router02" + }, + { + "address": "0xE592427A0AEce92De3Edee1F18E0157C05861564", + "category": "messaging", + "chain_id": 80001, + "chain_name": "mumbai_testnet", + "type": "uniswapV3Router" + }, + { + "address": "0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3", + "category": "messaging", + "chain_id": 97, + "chain_name": "bsc_testnet", + "type": "uniswapV2Router02" + }, + { + "address": "0x9a489505a00cE272eAa5e07Dba6491314CaE3796", + "category": "messaging", + "chain_id": 97, + "chain_name": "bsc_testnet", + "type": "uniswapV3Router" + }, + { + "address": "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D", + "category": "messaging", + "chain_id": 5, + "chain_name": "goerli_testnet", + "type": "uniswapV2Router02" + }, + { + "address": "0xE592427A0AEce92De3Edee1F18E0157C05861564", + "category": "messaging", + "chain_id": 5, + "chain_name": "goerli_testnet", + "type": "uniswapV3Router" + }, + { + "address": "0x8531a5aB847ff5B22D855633C25ED1DA3255247e", + "category": "omnichain", + "chain_id": 5, + "chain_name": "goerli_testnet", + "type": "tss" + }, + { + "address": "0x8531a5aB847ff5B22D855633C25ED1DA3255247e", + "category": "omnichain", + "chain_id": 97, + "chain_name": "bsc_testnet", + "type": "tss" + }, + { + "address": "0x8531a5aB847ff5B22D855633C25ED1DA3255247e", + "category": "omnichain", + "chain_id": 80001, + "chain_name": "mumbai_testnet", + "type": "tss" + }, + { + "address": "tb1qy9pqmk2pd9sv63g27jt8r657wy0d9ueeh0nqur", + "category": "omnichain", + "chain_id": 18332, + "chain_name": "btc_testnet", + "type": "tss" + }, + { + "address": "0xEdf1c3275d13489aCdC6cD6eD246E72458B8795B", + "category": "omnichain", + "chain_id": 7001, + "chain_name": "zeta_testnet", + "type": "systemContract" + }, + { + "address": "0x239e96c8f17C85c30100AC26F635Ea15f23E9c67", + "category": "messaging", + "chain_id": 7001, + "chain_name": "zeta_testnet", + "type": "connector" + }, + { + "address": "0x0cbe0dF132a6c6B4a2974Fa1b7Fb953CF0Cc798a", + "asset": "0x07865c6e87b9f70255377e024ace6630c1eaa37f", + "category": "omnichain", + "chain_id": 7001, + "chain_name": "zeta_testnet", + "coin_type": "erc20", + "decimals": 18, + "description": "USDC-goerli_testnet", + "foreign_chain_id": "5", + "symbol": "USDC", + "type": "zrc20" + }, + { + "address": "0x13A0c5930C028511Dc02665E7285134B6d11A5f4", + "asset": "", + "category": "omnichain", + "chain_id": 7001, + "chain_name": "zeta_testnet", + "coin_type": "gas", + "decimals": 18, + "description": "ETH-goerli_testnet", + "foreign_chain_id": "5", + "symbol": "gETH", + "type": "zrc20" + }, + { + "address": "0x48f80608B672DC30DC7e3dbBd0343c5F02C738Eb", + "asset": "", + "category": "omnichain", + "chain_id": 7001, + "chain_name": "zeta_testnet", + "coin_type": "gas", + "decimals": 18, + "description": "MATIC-mumbai_testnet", + "foreign_chain_id": "80001", + "symbol": "tMATIC", + "type": "zrc20" + }, + { + "address": "0x65a45c57636f9BcCeD4fe193A602008578BcA90b", + "asset": "", + "category": "omnichain", + "chain_id": 7001, + "chain_name": "zeta_testnet", + "coin_type": "gas", + "decimals": 18, + "description": "BTC-btc_testnet-btc_testnet", + "foreign_chain_id": "18332", + "symbol": "tBTC", + "type": "zrc20" + }, + { + "address": "0x7c8dDa80bbBE1254a7aACf3219EBe1481c6E01d7", + "asset": "0x64544969ed7EBf5f083679233325356EbE738930", + "category": "omnichain", + "chain_id": 7001, + "chain_name": "zeta_testnet", + "coin_type": "erc20", + "decimals": 18, + "description": "USDC-bsc_testnet", + "foreign_chain_id": "97", + "symbol": "USDC", + "type": "zrc20" + }, + { + "address": "0x91d4F0D54090Df2D81e834c3c8CE71C6c865e79F", + "asset": "0x9999f7fea5938fd3b1e26a12c3f2fb024e194f97", + "category": "omnichain", + "chain_id": 7001, + "chain_name": "zeta_testnet", + "coin_type": "erc20", + "decimals": 18, + "description": "USDC-mumbai_testnet", + "foreign_chain_id": "80001", + "symbol": "USDC", + "type": "zrc20" + }, + { + "address": "0xd97B1de3619ed2c6BEb3860147E30cA8A7dC9891", + "asset": "", + "category": "omnichain", + "chain_id": 7001, + "chain_name": "zeta_testnet", + "coin_type": "gas", + "decimals": 18, + "description": "BNB-bsc_testnet", + "foreign_chain_id": "97", + "symbol": "tBNB", + "type": "zrc20" + }, + { + "address": "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "category": "omnichain", + "chain_id": 7001, + "chain_name": "zeta_testnet", + "type": "uniswapV2Factory" + }, + { + "address": "0x5F0b1a82749cb4E2278EC87F8BF6B618dC71a8bf", + "category": "omnichain", + "chain_id": 7001, + "chain_name": "zeta_testnet", + "type": "zetaToken" + }, + { + "address": "0x2ca7d64A7EFE2D62A725E2B35Cf7230D6677FfEe", + "category": "omnichain", + "chain_id": 7001, + "chain_name": "zeta_testnet", + "type": "uniswapV2Router02" + }, + { + "address": "0x735b14BB79463307AAcBED86DAf3322B1e6226aB", + "category": "omnichain", + "chain_id": 7001, + "chain_name": "zeta_testnet", + "type": "fungibleModule" + }, + { + "address": "0x0000c304d2934c00db1d51995b9f6996affd17c0", + "category": "messaging", + "chain_id": 5, + "chain_name": "goerli_testnet", + "type": "zetaToken" + }, + { + "address": "0x00005e3125aba53c5652f9f0ce1a4cf91d8b15ea", + "category": "messaging", + "chain_id": 5, + "chain_name": "goerli_testnet", + "type": "connector" + }, + { + "address": "0x000047f11c6e42293f433c82473532e869ce4ec5", + "category": "omnichain", + "chain_id": 5, + "chain_name": "goerli_testnet", + "type": "erc20Custody" + }, + { + "address": "0x0000c9ec4042283e8139c74f4c64bcd1e0b9b54f", + "category": "messaging", + "chain_id": 80001, + "chain_name": "mumbai_testnet", + "type": "zetaToken" + }, + { + "address": "0x0000ecb8cdd25a18f12daa23f6422e07fbf8b9e1", + "category": "messaging", + "chain_id": 80001, + "chain_name": "mumbai_testnet", + "type": "connector" + }, + { + "address": "0x0000a7db254145767262c6a81a7ee1650684258e", + "category": "omnichain", + "chain_id": 80001, + "chain_name": "mumbai_testnet", + "type": "erc20Custody" + }, + { + "address": "0x0000c9ec4042283e8139c74f4c64bcd1e0b9b54f", + "category": "messaging", + "chain_id": 97, + "chain_name": "bsc_testnet", + "type": "zetaToken" + }, + { + "address": "0x0000ecb8cdd25a18f12daa23f6422e07fbf8b9e1", + "category": "messaging", + "chain_id": 97, + "chain_name": "bsc_testnet", + "type": "connector" + }, + { + "address": "0x0000a7db254145767262c6a81a7ee1650684258e", + "category": "omnichain", + "chain_id": 97, + "chain_name": "bsc_testnet", + "type": "erc20Custody" + }, + { + "address": "0x55122f7590164Ac222504436943FAB17B62F5d7d", + "category": "omnichain", + "chain_id": 97, + "chain_name": "bsc_testnet", + "type": "tssUpdater" + }, + { + "address": "0x55122f7590164Ac222504436943FAB17B62F5d7d", + "category": "omnichain", + "chain_id": 5, + "chain_name": "goerli_testnet", + "type": "tssUpdater" + }, + { + "address": "0x55122f7590164Ac222504436943FAB17B62F5d7d", + "category": "omnichain", + "chain_id": 80001, + "chain_name": "mumbai_testnet", + "type": "tssUpdater" + }, + { + "address": "0x55122f7590164Ac222504436943FAB17B62F5d7d", + "category": "messaging", + "chain_id": 5, + "chain_name": "goerli_testnet", + "type": "pauser" + }, + { + "address": "0x55122f7590164Ac222504436943FAB17B62F5d7d", + "category": "messaging", + "chain_id": 97, + "chain_name": "bsc_testnet", + "type": "pauser" + }, + { + "address": "0x55122f7590164Ac222504436943FAB17B62F5d7d", + "category": "messaging", + "chain_id": 80001, + "chain_name": "mumbai_testnet", + "type": "pauser" + }, + { + "address": "0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889", + "category": "messaging", + "chain_id": 80001, + "chain_name": "mumbai_testnet", + "type": "weth9" + }, + { + "address": "0x5757371414417b8C6CAad45bAeF941aBc7d3Ab32", + "category": "messaging", + "chain_id": 80001, + "chain_name": "mumbai_testnet", + "type": "uniswapV2Factory" + }, + { + "address": "0xae13d989daC2f0dEbFf460aC112a837C89BAa7cd", + "category": "messaging", + "chain_id": 97, + "chain_name": "bsc_testnet", + "type": "weth9" + }, + { + "address": "0xB7926C0430Afb07AA7DEfDE6DA862aE0Bde767bc", + "category": "messaging", + "chain_id": 97, + "chain_name": "bsc_testnet", + "type": "uniswapV2Factory" + }, + { + "address": "0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6", + "category": "messaging", + "chain_id": 5, + "chain_name": "goerli_testnet", + "type": "weth9" + }, + { + "address": "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f", + "category": "messaging", + "chain_id": 5, + "chain_name": "goerli_testnet", + "type": "uniswapV2Factory" + }, + { + "address": "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "category": "messaging", + "chain_id": 7001, + "chain_name": "zeta_testnet", + "type": "uniswapV2Factory" + }, + { + "address": "0x5757371414417b8C6CAad45bAeF941aBc7d3Ab32", + "category": "messaging", + "chain_id": 80001, + "chain_name": "mumbai_testnet", + "type": "uniswapV3Factory" + }, + { + "address": "0xB7926C0430Afb07AA7DEfDE6DA862aE0Bde767bc", + "category": "messaging", + "chain_id": 97, + "chain_name": "bsc_testnet", + "type": "uniswapV3Factory" + }, + { + "address": "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f", + "category": "messaging", + "chain_id": 5, + "chain_name": "goerli_testnet", + "type": "uniswapV3Factory" + }, + { + "address": "0x9fd96203f7b22bCF72d9DCb40ff98302376cE09c", + "category": "messaging", + "chain_id": 7001, + "chain_name": "zeta_testnet", + "type": "uniswapV3Factory" + } +] diff --git a/data/readme.md b/data/readme.md new file mode 100644 index 00000000..9a1ef0f0 --- /dev/null +++ b/data/readme.md @@ -0,0 +1 @@ +These addresses are generated automatically, do not modify them directly. diff --git a/hardhat.config.ts b/hardhat.config.ts index 36e2a868..40285136 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -1,31 +1,30 @@ import "@nomiclabs/hardhat-waffle"; -import "@nomiclabs/hardhat-etherscan"; +import "@nomicfoundation/hardhat-verify"; import "@typechain/hardhat"; import "tsconfig-paths/register"; import "hardhat-abi-exporter"; import "solidity-docgen"; +import "./tasks/addresses"; import { getHardhatConfigNetworks } from "@zetachain/networks"; import * as dotenv from "dotenv"; dotenv.config(); -const PRIVATE_KEYS = process.env.PRIVATE_KEY !== undefined ? [`0x${process.env.PRIVATE_KEY}`] : []; - -const config = { - docgen: { - pages: "files", - templates: "templates", +const config: HardhatUserConfig = { + //@ts-ignore + etherscan: { + apiKey: { + // BSC + bsc: process.env.BSCSCAN_API_KEY || "", + bscTestnet: process.env.BSCSCAN_API_KEY || "", + // ETH + goerli: process.env.ETHERSCAN_API_KEY || "", + mainnet: process.env.ETHERSCAN_API_KEY || "", + }, }, networks: { - ...getHardhatConfigNetworks(PRIVATE_KEYS), - hardhat: { - chainId: 1337, - forking: { - blockNumber: 14672712, - url: "https://rpc.ankr.com/eth", - }, - }, + ...getHardhatConfigNetworks(), }, solidity: { compilers: [ diff --git a/lib/address.helpers.ts b/lib/address.helpers.ts index b73913cf..3ddc8a33 100644 --- a/lib/address.helpers.ts +++ b/lib/address.helpers.ts @@ -1,41 +1,14 @@ -import { getAddress as getAddressLib, NetworkName, ZetaAddress, ZetaNetworkName } from "@zetachain/addresses"; -import { network } from "hardhat"; +import { ZetaProtocolNetwork } from "./address.tools"; -import { isProtocolNetworkName, ZetaProtocolNetwork } from "./address.tools"; +export declare type TestAddress = "dai" | "usdc"; -const MissingZetaNetworkError = new Error( - "ZETA_NETWORK is not defined, please set the environment variable (e.g.: ZETA_NETWORK=athens )" -); - -export const ProtocolNetworkNetworkNameMap: Record = { - baobab_testnet: "klaytn-baobab", - bsc_testnet: "bsc-testnet", - etherum_mainnet: "eth-mainnet", - goerli_testnet: "goerli", - mumbai_testnet: "polygon-mumbai", - zeta_testnet: "athens", -}; - -export const getExternalAddress = ( - address: ZetaAddress, - { - customNetworkName, - customZetaNetwork, - }: { customNetworkName?: ZetaProtocolNetwork; customZetaNetwork?: ZetaNetworkName } = {} -): string => { - const { name: _networkName } = network; - - const protocolNetworkName = customNetworkName || _networkName; - - if (!isProtocolNetworkName(protocolNetworkName)) { - throw new Error(`network.name: ${protocolNetworkName} isn't supported.`); +export const getTestAddress = (address: TestAddress, networkName: ZetaProtocolNetwork): string => { + if (networkName !== "eth_mainnet") throw new Error("Invalid network name"); + if (address === "dai") { + return "0x6b175474e89094c44da98b954eedeac495271d0f"; + } else if (address === "usdc") { + return "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; } - const networkName = ProtocolNetworkNetworkNameMap[protocolNetworkName]; - - const { ZETA_NETWORK: _ZETA_NETWORK } = process.env; - const zetaNetwork = customZetaNetwork || _ZETA_NETWORK; - - if (!zetaNetwork) throw MissingZetaNetworkError; - return getAddressLib({ address, networkName, zetaNetwork }); + throw new Error(`Unknown external address ${address} for network ${networkName}`); }; diff --git a/lib/address.tools.ts b/lib/address.tools.ts index 581a35fd..d027c883 100644 --- a/lib/address.tools.ts +++ b/lib/address.tools.ts @@ -1,9 +1,4 @@ -import fs from "fs"; -import path from "path"; - -export const addresses = JSON.parse( - fs.readFileSync(path.resolve(__dirname, "..", "data", "addresses.json")).toString() -); +import addresses from "../data/addresses.json"; export declare type ZetaProtocolAddress = | "connector" @@ -38,6 +33,7 @@ export declare type ZetaZEVMAddress = export declare type ZetaProtocolTestNetwork = | "baobab_testnet" | "bsc_testnet" + | "btc_testnet" | "goerli_testnet" | "mumbai_testnet" | "zeta_testnet"; @@ -45,17 +41,29 @@ export declare type ZetaProtocolTestNetwork = export const zetaProtocolTestNetworks: ZetaProtocolTestNetwork[] = [ "baobab_testnet", "bsc_testnet", + "btc_testnet", "goerli_testnet", "mumbai_testnet", "zeta_testnet", ]; -export declare type NonZetaAddress = "uniswapV2Router02" | "uniswapV3Factory" | "uniswapV3Router" | "weth9"; - -export const nonZetaAddress: NonZetaAddress[] = ["uniswapV2Router02", "uniswapV3Router", "uniswapV3Factory", "weth9"]; +export declare type NonZetaAddress = + | "uniswapV2Factory" + | "uniswapV2Router02" + | "uniswapV3Factory" + | "uniswapV3Router" + | "weth9"; + +export const nonZetaAddress: NonZetaAddress[] = [ + "uniswapV2Factory", + "uniswapV2Router02", + "uniswapV3Router", + "uniswapV3Factory", + "weth9", +]; -export declare type ZetaProtocolMainNetwork = "etherum_mainnet"; -export const zetaProtocolMainNetworks: ZetaProtocolMainNetwork[] = ["etherum_mainnet"]; +export declare type ZetaProtocolMainNetwork = "bsc_mainnet" | "eth_mainnet" | "zeta_mainnet"; +export const zetaProtocolMainNetworks: ZetaProtocolMainNetwork[] = ["eth_mainnet", "bsc_mainnet", "zeta_mainnet"]; export declare type ZetaProtocolNetwork = ZetaProtocolMainNetwork | ZetaProtocolTestNetwork; export const zetaProtocolNetworks: ZetaProtocolNetwork[] = [...zetaProtocolTestNetworks, ...zetaProtocolMainNetworks]; @@ -73,18 +81,18 @@ export const isMainnetNetwork = (network: ZetaProtocolTestNetwork): boolean => { return false; }; -export const getAddress = (address: ZetaProtocolAddress | ZetaZEVMAddress, network: ZetaProtocolNetwork): string => { - if (isZetaProtocolAddress(address)) { - return addresses["ccm"][network][address]; - } +// export const getAddress = (address: ZetaProtocolAddress | ZetaZEVMAddress, network: ZetaProtocolNetwork): string => { +// if (isZetaProtocolAddress(address)) { +// return (addresses["ccm"] as any)[network][address]; +// } - return addresses["zevm"][network][address]; -}; +// return (addresses["zevm"] as any)[network][address]; +// }; export const getZRC20Address = (network: ZetaProtocolNetwork): string => { - return addresses["zevm"][network]["zrc20"]; + return (addresses["zevm"] as any)[network]["zrc20"]; }; export const getNonZetaAddress = (address: NonZetaAddress, network: ZetaProtocolNetwork): string => { - return addresses["non-zeta"][network][address]; + return (addresses["non_zeta"] as any)[network][address]; }; diff --git a/lib/addresses.ts b/lib/addresses.ts new file mode 100644 index 00000000..0d2127cc --- /dev/null +++ b/lib/addresses.ts @@ -0,0 +1,25 @@ +import { getChainId } from "@zetachain/networks"; + +import mainnet from "../data/addresses.mainnet.json"; +import testnet from "../data/addresses.testnet.json"; +import { ParamChainName, ParamSymbol, ParamType } from "./types"; + +export const getAddress = (type: ParamType, network: ParamChainName, symbol?: ParamSymbol) => { + const networks = [...testnet, ...mainnet]; + let address; + if (type !== "zrc20" && symbol) { + throw new Error("Symbol is only supported when ParamType is zrc20"); + } + if (type === "zrc20" && !symbol) { + // for backwards compatibility + const chainId = getChainId(network); + address = networks.find((n: any) => { + return n.foreign_chain_id === chainId?.toString() && n.type === type && n.coin_type === "gas"; + }); + } else { + address = networks.find((n: any) => { + return n.chain_name === network && n.type === type && n.symbol === symbol; + }); + } + return address?.address; +}; diff --git a/lib/contracts.constants.ts b/lib/contracts.constants.ts index 1ea515fd..9458905a 100644 --- a/lib/contracts.constants.ts +++ b/lib/contracts.constants.ts @@ -5,16 +5,66 @@ export const ZETA_INITIAL_SUPPLY = 2_100_000_000; export const MAX_ETH_ADDRESS = "0xffffffffffffffffffffffffffffffffffffffff"; // dev: this values should be calculated using get-salt script -export const ZETA_TOKEN_SALT_NUMBER_ETH = "84108"; -export const ZETA_TOKEN_SALT_NUMBER_NON_ETH = "29265"; +const SALT_NUMBERS = { + baobab_testnet: { + zetaConnector: "71733", + zetaConsumer: "0", + zetaERC20Custody: "195084", + zetaToken: "29265", + }, + bsc_mainnet: { + zetaConnector: "71733", + zetaConsumer: "0", + zetaERC20Custody: "195084", + zetaToken: "29265", + }, + bsc_testnet: { + zetaConnector: "71733", + zetaConsumer: "0", + zetaERC20Custody: "195084", + zetaToken: "29265", + }, + btc_testnet: { + zetaConnector: "", + zetaConsumer: "", + zetaERC20Custody: "", + zetaToken: "", + }, + eth_mainnet: { + zetaConnector: "84286", + zetaConsumer: "0", + zetaERC20Custody: "926526", + zetaToken: "0", + }, + goerli_testnet: { + zetaConnector: "1414", + zetaConsumer: "0", + zetaERC20Custody: "87967", + zetaToken: "84108", + }, + mumbai_testnet: { + zetaConnector: "71733", + zetaConsumer: "0", + zetaERC20Custody: "195084", + zetaToken: "29265", + }, + zeta_testnet: { + zetaConnector: "71733", + zetaConsumer: "0", + zetaERC20Custody: "195084", + zetaToken: "29265", + }, +}; -// dev: this values should be calculated using get-salt script -export const ZETA_CONNECTOR_SALT_NUMBER_ETH = "1414"; -export const ZETA_CONNECTOR_SALT_NUMBER_NON_ETH = "71733"; +export const getSaltNumber = (contractName: string, networkName: string) => { + const saltNumber = SALT_NUMBERS[networkName][contractName]; + + if (!saltNumber) { + throw new Error(`Salt number for ${contractName} on ${networkName} is not defined.`); + } + + return saltNumber; +}; -export const ERC20_CUSTODY_SALT_NUMBER_ETH = "87967"; -export const ERC20_CUSTODY_SALT_NUMBER_NON_ETH = "195084"; export const ERC20_CUSTODY_ZETA_FEE = "0"; export const ERC20_CUSTODY_ZETA_MAX_FEE = parseEther("1000"); - -export const ZETA_CONSUMER_SALT_NUMBER = "0"; diff --git a/lib/contracts.helpers.ts b/lib/contracts.helpers.ts index f941a0d1..5508789b 100644 --- a/lib/contracts.helpers.ts +++ b/lib/contracts.helpers.ts @@ -24,7 +24,7 @@ import { BaseContract, ContractFactory } from "ethers"; import { ethers } from "hardhat"; export const isEthNetworkName = (networkName: string) => - networkName === "eth-localnet" || networkName === "goerli" || networkName === "eth-mainnet"; + networkName === "eth-localnet" || networkName === "goerli_testnet" || networkName === "eth_mainnet"; export const deployZetaConnectorBase = async ({ args }: { args: Parameters }) => { const Factory = (await ethers.getContractFactory("ZetaConnectorBase")) as ZetaConnectorBaseFactory; diff --git a/lib/deterministic-deploy.helpers.ts b/lib/deterministic-deploy.helpers.ts index 7527b5e9..b2d3ce96 100644 --- a/lib/deterministic-deploy.helpers.ts +++ b/lib/deterministic-deploy.helpers.ts @@ -1,21 +1,23 @@ import { BigNumber } from "ethers"; +import { getAddress } from "lib"; -import { getAddress } from "../lib/address.helpers"; import { MAX_ETH_ADDRESS } from "../lib/contracts.constants"; import { buildBytecode, buildCreate2Address, saltToHex, } from "../lib/ImmutableCreate2Factory/ImmutableCreate2Factory.helpers"; +import { ZetaProtocolNetwork } from "./address.tools"; export const calculateBestSalt = async ( maxIterations: BigNumber, deployerAddress: string, constructorTypes: string[], constructorArgs: string[], - contractBytecode: string + contractBytecode: string, + network: ZetaProtocolNetwork ) => { - const immutableCreate2Factory = getAddress("immutableCreate2Factory"); + const immutableCreate2Factory = getAddress("immutableCreate2Factory", network); let minAddress = MAX_ETH_ADDRESS; let minAddressSalt = ""; diff --git a/lib/index.ts b/lib/index.ts index b2321035..0e1ccbec 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -1 +1,5 @@ +export { default as mainnet } from "../data/addresses.mainnet.json"; +export { default as testnet } from "../data/addresses.testnet.json"; export * from "./address.tools"; +export * from "./addresses"; +export * from "./types"; diff --git a/lib/types.ts b/lib/types.ts new file mode 100644 index 00000000..6dbc5594 --- /dev/null +++ b/lib/types.ts @@ -0,0 +1,40 @@ +export type ParamSymbol = + | "BNB.BSC" + | "BTC.BTC" + | "ETH.ETH" + | "gETH" + | "tBNB" + | "tBTC" + | "tMATIC" + | "USDC.BSC" + | "USDC.ETH" + | "USDC" + | "USDT.BSC" + | "USDT.ETH"; +export type ParamChainName = + | "bsc_mainnet" + | "bsc_testnet" + | "btc_mainnet" + | "btc_testnet" + | "eth_mainnet" + | "goerli_testnet" + | "mumbai_testnet" + | "zeta_mainnet" + | "zeta_testnet"; +export type ParamType = + | "connector" + | "erc20Custody" + | "fungibleModule" + | "pauser" + | "systemContract" + | "tss" + | "tssUpdater" + | "uniswapV2Factory" + | "uniswapV2Router02" + | "uniswapV3Factory" + | "uniswapV3Router" + | "weth9" + | "zetaToken" + | "zetaTokenConsumerUniV2" + | "zetaTokenConsumerUniV3" + | "zrc20"; diff --git a/package.json b/package.json index 278f345e..0cc1b9bf 100644 --- a/package.json +++ b/package.json @@ -7,8 +7,8 @@ "@nomicfoundation/hardhat-chai-matchers": "^1.0.6", "@nomicfoundation/hardhat-network-helpers": "^1.0.0", "@nomicfoundation/hardhat-toolbox": "^2.0.0", + "@nomicfoundation/hardhat-verify": "2.0.3", "@nomiclabs/hardhat-ethers": "^2.0.5", - "@nomiclabs/hardhat-etherscan": "3.0.3", "@nomiclabs/hardhat-waffle": "^2.0.3", "@openzeppelin/contracts": "^4.8.3", "@typechain/ethers-v5": "^10.1.0", @@ -22,8 +22,8 @@ "@uniswap/v2-core": "^1.0.1", "@uniswap/v2-periphery": "^1.1.0-beta.0", "@uniswap/v3-periphery": "^1.4.3", - "@zetachain/addresses": "^0.0.9", - "@zetachain/networks": "^0.0.1", + "@zetachain/networks": "4.0.0-rc1", + "axios": "^1.6.5", "chai": "^4.3.6", "cpx": "^1.5.0", "del-cli": "^5.0.0", @@ -69,16 +69,15 @@ "registry": "https://registry.npmjs.org/" }, "scripts": { - "build": "yarn clean && yarn compile && npx del-cli dist abi && tsc || exit 0 && npx del-cli './dist/typechain-types/**/*.js' && npx cpx './data/**/*' dist/data && npx cpx './artifacts/contracts/**/*' ./abi && npx del-cli './abi/**/*.dbg.json'", - "clean": "npx hardhat clean", - "compile": "yarn clean && npx hardhat compile", - "generate": "yarn compile && ./scripts/generate_go.sh", + "build": "yarn compile && npx del-cli dist abi && npx tsc || true && npx del-cli './dist/typechain-types/**/*.js' && npx cpx './data/**/*' dist/data && npx cpx './artifacts/contracts/**/*' ./abi && npx del-cli './abi/**/*.dbg.json'", + "compile": "npx hardhat compile --force", + "generate": "yarn compile && ./scripts/generate_go.sh || true && ./scripts/generate_addresses.sh && yarn lint:fix", "lint": "npx eslint . --ext .js,.ts", "lint:fix": "npx eslint . --ext .js,.ts,.json --fix", "prepublishOnly": "yarn build", - "test": "npx hardhat clean && npx hardhat test", + "test": "yarn compile && npx hardhat test", "tsc:watch": "npx tsc --watch" }, "types": "./dist/lib/index.d.ts", "version": "0.0.8" -} \ No newline at end of file +} diff --git a/pkg/contracts/evm/erc20custody.sol/erc20custody.go b/pkg/contracts/evm/erc20custody.sol/erc20custody.go index 397928e4..0564dfec 100644 --- a/pkg/contracts/evm/erc20custody.sol/erc20custody.go +++ b/pkg/contracts/evm/erc20custody.sol/erc20custody.go @@ -32,7 +32,7 @@ var ( // ERC20CustodyMetaData contains all meta data concerning the ERC20Custody contract. var ERC20CustodyMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"TSSAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"TSSAddressUpdater_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaFee_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zetaMaxFee_\",\"type\":\"uint256\"},{\"internalType\":\"contractIERC20\",\"name\":\"zeta_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTSSUpdater\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"IsPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotPaused\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotWhitelisted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroFee\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaMaxFeeExceeded\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"Deposited\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"TSSAddressUpdater_\",\"type\":\"address\"}],\"name\":\"RenouncedTSSUpdater\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"Unwhitelisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"TSSAddress_\",\"type\":\"address\"}],\"name\":\"UpdatedTSSAddress\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaFee_\",\"type\":\"uint256\"}],\"name\":\"UpdatedZetaFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"Whitelisted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Withdrawn\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"TSSAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"TSSAddressUpdater\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceTSSAddressUpdater\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"unwhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"TSSAddress_\",\"type\":\"address\"}],\"name\":\"updateTSSAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"zetaFee_\",\"type\":\"uint256\"}],\"name\":\"updateZetaFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"}],\"name\":\"whitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"contractIERC20\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zeta\",\"outputs\":[{\"internalType\":\"contractIERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaMaxFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c06040523480156200001157600080fd5b50604051620021043803806200210483398181016040528101906200003791906200014f565b84600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826002819055508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b81525050816080818152505050505050506200027c565b6000815190506200011b816200022e565b92915050565b600081519050620001328162000248565b92915050565b600081519050620001498162000262565b92915050565b600080600080600060a086880312156200016e576200016d62000229565b5b60006200017e888289016200010a565b955050602062000191888289016200010a565b9450506040620001a48882890162000138565b9350506060620001b78882890162000138565b9250506080620001ca8882890162000121565b9150509295509295909350565b6000620001e482620001ff565b9050919050565b6000620001f882620001d7565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b6200023981620001d7565b81146200024557600080fd5b50565b6200025381620001eb565b81146200025f57600080fd5b50565b6200026d816200021f565b81146200027957600080fd5b50565b60805160a05160601c611e4a620002ba60003960008181610dfd01528181610e66015261105a01526000818161042b0152610c6e0152611e4a6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639b19251a11610097578063e5408cfa11610066578063e5408cfa1461024d578063e609055e1461026b578063e8f9cb3a14610287578063ed11692b146102a557610100565b80639b19251a146101c9578063d936547e146101e5578063d9caed1214610215578063de2f6c5e1461023157610100565b80637bdaded3116100d35780637bdaded3146101695780638456cb5914610187578063950837aa146101915780639a590427146101ad57610100565b80633f4ba83a1461010557806353ee30a31461010f57806354b61e811461012d5780635c975abb1461014b575b600080fd5b61010d6102af565b005b6101176103cc565b60405161012491906119b8565b60405180910390f35b6101356103f2565b60405161014291906119b8565b60405180910390f35b610153610418565b6040516101609190611a33565b60405180910390f35b610171610429565b60405161017e9190611b34565b60405180910390f35b61018f61044d565b005b6101ab60048036038101906101a6919061168a565b6105f4565b005b6101c760048036038101906101c291906117de565b61075c565b005b6101e360048036038101906101de91906117de565b610881565b005b6101ff60048036038101906101fa91906117de565b6109a6565b60405161020c9190611a33565b60405180910390f35b61022f600480360381019061022a91906116b7565b6109c6565b005b61024b6004803603810190610246919061180b565b610baa565b005b610255610d07565b6040516102629190611b34565b60405180910390f35b61028560048036038101906102809190611737565b610d0d565b005b61028f611058565b60405161029c9190611a97565b60405180910390f35b6102ad61107c565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610335576040517e611fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900460ff16610379576040517f6cd6020100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336040516103c291906119b8565b60405180910390a1565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104d3576040517e611fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900460ff1615610518576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105a1576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336040516105ea91906119b8565b60405180910390a1565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461067a576040517e611fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106e1576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fcd2958db8285a532edf298cbe1aa28ea3fb5ec82461253f9a8c1477924e299478160405161075191906119b8565b60405180910390a150565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107e3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da4679160405160405180910390a250565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610908576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a5460405160405180910390a250565b60036020528060005260406000206000915054906101000a900460ff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a4d576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900460ff1615610a92576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b15576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b4083828473ffffffffffffffffffffffffffffffffffffffff166112279092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb83604051610b9d9190611b34565b60405180910390a3505050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c31576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000811415610c6c576040517faf13986d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000811115610cc6576040517fc1be451300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507f6d2d8e313fbaf76898bb9fa55e4b52525e49c7d7182d0874f97bd9076e81d52381604051610cfc9190611b34565b60405180910390a150565b60025481565b60008054906101000a900460ff1615610d52576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610dd5576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025414158015610e355750600073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614155b15610eac57610eab33600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166112ad909392919063ffffffff16565b5b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ee791906119b8565b60206040518083038186803b158015610eff57600080fd5b505afa158015610f13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f379190611838565b9050610f663330868873ffffffffffffffffffffffffffffffffffffffff166112ad909392919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae8888848973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fda91906119b8565b60206040518083038186803b158015610ff257600080fd5b505afa158015611006573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102a9190611838565b6110349190611b92565b8787604051611047959493929190611a4e565b60405180910390a250505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611102576040517e611fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561118b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f39ac266bfc011581be62c138d96e4e8782812013bb66fffb4cd207f4bfee37773360405161121d91906119b8565b60405180910390a1565b6112a88363a9059cbb60e01b8484604051602401611246929190611a0a565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611336565b505050565b611330846323b872dd60e01b8585856040516024016112ce939291906119d3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611336565b50505050565b6000611398826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166113fd9092919063ffffffff16565b90506000815111156113f857808060200190518101906113b8919061170a565b6113f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ee90611b14565b60405180910390fd5b5b505050565b606061140c8484600085611415565b90509392505050565b60608247101561145a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145190611ad4565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161148391906119a1565b60006040518083038185875af1925050503d80600081146114c0576040519150601f19603f3d011682016040523d82523d6000602084013e6114c5565b606091505b50915091506114d6878383876114e2565b92505050949350505050565b606083156115455760008351141561153d576114fd85611558565b61153c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153390611af4565b60405180910390fd5b5b829050611550565b61154f838361157b565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561158e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c29190611ab2565b60405180910390fd5b6000813590506115da81611db8565b92915050565b6000815190506115ef81611dcf565b92915050565b60008083601f84011261160b5761160a611ccc565b5b8235905067ffffffffffffffff81111561162857611627611cc7565b5b60208301915083600182028301111561164457611643611cd1565b5b9250929050565b60008135905061165a81611de6565b92915050565b60008135905061166f81611dfd565b92915050565b60008151905061168481611dfd565b92915050565b6000602082840312156116a05761169f611cdb565b5b60006116ae848285016115cb565b91505092915050565b6000806000606084860312156116d0576116cf611cdb565b5b60006116de868287016115cb565b93505060206116ef8682870161164b565b925050604061170086828701611660565b9150509250925092565b6000602082840312156117205761171f611cdb565b5b600061172e848285016115e0565b91505092915050565b6000806000806000806080878903121561175457611753611cdb565b5b600087013567ffffffffffffffff81111561177257611771611cd6565b5b61177e89828a016115f5565b9650965050602061179189828a0161164b565b94505060406117a289828a01611660565b935050606087013567ffffffffffffffff8111156117c3576117c2611cd6565b5b6117cf89828a016115f5565b92509250509295509295509295565b6000602082840312156117f4576117f3611cdb565b5b60006118028482850161164b565b91505092915050565b60006020828403121561182157611820611cdb565b5b600061182f84828501611660565b91505092915050565b60006020828403121561184e5761184d611cdb565b5b600061185c84828501611675565b91505092915050565b61186e81611bc6565b82525050565b61187d81611bd8565b82525050565b600061188f8385611b65565b935061189c838584611c56565b6118a583611ce0565b840190509392505050565b60006118bb82611b4f565b6118c58185611b76565b93506118d5818560208601611c65565b80840191505092915050565b6118ea81611c20565b82525050565b60006118fb82611b5a565b6119058185611b81565b9350611915818560208601611c65565b61191e81611ce0565b840191505092915050565b6000611936602683611b81565b915061194182611cf1565b604082019050919050565b6000611959601d83611b81565b915061196482611d40565b602082019050919050565b600061197c602a83611b81565b915061198782611d69565b604082019050919050565b61199b81611c16565b82525050565b60006119ad82846118b0565b915081905092915050565b60006020820190506119cd6000830184611865565b92915050565b60006060820190506119e86000830186611865565b6119f56020830185611865565b611a026040830184611992565b949350505050565b6000604082019050611a1f6000830185611865565b611a2c6020830184611992565b9392505050565b6000602082019050611a486000830184611874565b92915050565b60006060820190508181036000830152611a69818789611883565b9050611a786020830186611992565b8181036040830152611a8b818486611883565b90509695505050505050565b6000602082019050611aac60008301846118e1565b92915050565b60006020820190508181036000830152611acc81846118f0565b905092915050565b60006020820190508181036000830152611aed81611929565b9050919050565b60006020820190508181036000830152611b0d8161194c565b9050919050565b60006020820190508181036000830152611b2d8161196f565b9050919050565b6000602082019050611b496000830184611992565b92915050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611b9d82611c16565b9150611ba883611c16565b925082821015611bbb57611bba611c98565b5b828203905092915050565b6000611bd182611bf6565b9050919050565b60008115159050919050565b6000611bef82611bc6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611c2b82611c32565b9050919050565b6000611c3d82611c44565b9050919050565b6000611c4f82611bf6565b9050919050565b82818337600083830152505050565b60005b83811015611c83578082015181840152602081019050611c68565b83811115611c92576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b611dc181611bc6565b8114611dcc57600080fd5b50565b611dd881611bd8565b8114611de357600080fd5b50565b611def81611be4565b8114611dfa57600080fd5b50565b611e0681611c16565b8114611e1157600080fd5b5056fea26469706673582212206146a48df6487c8ffd47b2ee14a7124685ab8cfa6ca34eb6be52dca97f6f146164736f6c63430008070033", + Bin: "0x60c06040523480156200001157600080fd5b50604051620021a0380380620021a0833981810160405281019062000037919062000156565b6001600081905550846001806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826003819055508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508160808181525050505050505062000283565b600081519050620001228162000235565b92915050565b60008151905062000139816200024f565b92915050565b600081519050620001508162000269565b92915050565b600080600080600060a0868803121562000175576200017462000230565b5b6000620001858882890162000111565b9550506020620001988882890162000111565b9450506040620001ab888289016200013f565b9350506060620001be888289016200013f565b9250506080620001d18882890162000128565b9150509295509295909350565b6000620001eb8262000206565b9050919050565b6000620001ff82620001de565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b6200024081620001de565b81146200024c57600080fd5b50565b6200025a81620001f2565b81146200026657600080fd5b50565b620002748162000226565b81146200028057600080fd5b50565b60805160a05160601c611edf620002c160003960008181610dca01528181610e31015261102d01526000818161042d0152610c310152611edf6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639b19251a11610097578063e5408cfa11610066578063e5408cfa1461024d578063e609055e1461026b578063e8f9cb3a14610287578063ed11692b146102a557610100565b80639b19251a146101c9578063d936547e146101e5578063d9caed1214610215578063de2f6c5e1461023157610100565b80637bdaded3116100d35780637bdaded3146101695780638456cb5914610187578063950837aa146101915780639a590427146101ad57610100565b80633f4ba83a1461010557806353ee30a31461010f57806354b61e811461012d5780635c975abb1461014b575b600080fd5b61010d6102af565b005b6101176103ce565b6040516101249190611a04565b60405180910390f35b6101356103f2565b6040516101429190611a04565b60405180910390f35b610153610418565b6040516101609190611a7f565b60405180910390f35b61017161042b565b60405161017e9190611ba0565b60405180910390f35b61018f61044f565b005b6101ab60048036038101906101a691906116b3565b6105f5565b005b6101c760048036038101906101c29190611807565b61075c565b005b6101e360048036038101906101de9190611807565b61087f565b005b6101ff60048036038101906101fa9190611807565b6109a2565b60405161020c9190611a7f565b60405180910390f35b61022f600480360381019061022a91906116e0565b6109c2565b005b61024b60048036038101906102469190611834565b610b6f565b005b610255610cca565b6040516102629190611ba0565b60405180910390f35b61028560048036038101906102809190611760565b610cd0565b005b61028f61102b565b60405161029c9190611ae3565b60405180910390f35b6102ad61104f565b005b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610334576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900460ff1661037a576040517f6cd6020100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600160006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336040516103c49190611a04565b60405180910390a1565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104d4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900460ff161561051b576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105a2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018060006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336040516105eb9190611a04565b60405180910390a1565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461067b576040517e611fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106e2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fcd2958db8285a532edf298cbe1aa28ea3fb5ec82461253f9a8c1477924e29947816040516107519190611a04565b60405180910390a150565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107e1576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da4679160405160405180910390a250565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610904576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a5460405160405180910390a250565b60046020528060005260406000206000915054906101000a900460ff1681565b6109ca6111f6565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a4f576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610ad2576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610afd83828473ffffffffffffffffffffffffffffffffffffffff166112469092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb83604051610b5a9190611ba0565b60405180910390a3610b6a6112cc565b505050565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bf4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000811415610c2f576040517faf13986d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000811115610c89576040517fc1be451300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806003819055507f6d2d8e313fbaf76898bb9fa55e4b52525e49c7d7182d0874f97bd9076e81d52381604051610cbf9190611ba0565b60405180910390a150565b60035481565b610cd86111f6565b600160009054906101000a900460ff1615610d1f576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610da2576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035414158015610e025750600073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614155b15610e7757610e763360018054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166112d6909392919063ffffffff16565b5b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610eb29190611a04565b60206040518083038186803b158015610eca57600080fd5b505afa158015610ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f029190611861565b9050610f313330868873ffffffffffffffffffffffffffffffffffffffff166112d6909392919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae8888848973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fa59190611a04565b60206040518083038186803b158015610fbd57600080fd5b505afa158015610fd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff59190611861565b610fff9190611bfe565b8787604051611012959493929190611a9a565b60405180910390a2506110236112cc565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110d5576040517e611fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561115c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f39ac266bfc011581be62c138d96e4e8782812013bb66fffb4cd207f4bfee3777336040516111ec9190611a04565b60405180910390a1565b6002600054141561123c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123390611b80565b60405180910390fd5b6002600081905550565b6112c78363a9059cbb60e01b8484604051602401611265929190611a56565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061135f565b505050565b6001600081905550565b611359846323b872dd60e01b8585856040516024016112f793929190611a1f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061135f565b50505050565b60006113c1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166114269092919063ffffffff16565b905060008151111561142157808060200190518101906113e19190611733565b611420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141790611b60565b60405180910390fd5b5b505050565b6060611435848460008561143e565b90509392505050565b606082471015611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a90611b20565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114ac91906119ed565b60006040518083038185875af1925050503d80600081146114e9576040519150601f19603f3d011682016040523d82523d6000602084013e6114ee565b606091505b50915091506114ff8783838761150b565b92505050949350505050565b6060831561156e576000835114156115665761152685611581565b611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90611b40565b60405180910390fd5b5b829050611579565b61157883836115a4565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156115b75781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115eb9190611afe565b60405180910390fd5b60008135905061160381611e4d565b92915050565b60008151905061161881611e64565b92915050565b60008083601f84011261163457611633611d38565b5b8235905067ffffffffffffffff81111561165157611650611d33565b5b60208301915083600182028301111561166d5761166c611d3d565b5b9250929050565b60008135905061168381611e7b565b92915050565b60008135905061169881611e92565b92915050565b6000815190506116ad81611e92565b92915050565b6000602082840312156116c9576116c8611d47565b5b60006116d7848285016115f4565b91505092915050565b6000806000606084860312156116f9576116f8611d47565b5b6000611707868287016115f4565b935050602061171886828701611674565b925050604061172986828701611689565b9150509250925092565b60006020828403121561174957611748611d47565b5b600061175784828501611609565b91505092915050565b6000806000806000806080878903121561177d5761177c611d47565b5b600087013567ffffffffffffffff81111561179b5761179a611d42565b5b6117a789828a0161161e565b965096505060206117ba89828a01611674565b94505060406117cb89828a01611689565b935050606087013567ffffffffffffffff8111156117ec576117eb611d42565b5b6117f889828a0161161e565b92509250509295509295509295565b60006020828403121561181d5761181c611d47565b5b600061182b84828501611674565b91505092915050565b60006020828403121561184a57611849611d47565b5b600061185884828501611689565b91505092915050565b60006020828403121561187757611876611d47565b5b60006118858482850161169e565b91505092915050565b61189781611c32565b82525050565b6118a681611c44565b82525050565b60006118b88385611bd1565b93506118c5838584611cc2565b6118ce83611d4c565b840190509392505050565b60006118e482611bbb565b6118ee8185611be2565b93506118fe818560208601611cd1565b80840191505092915050565b61191381611c8c565b82525050565b600061192482611bc6565b61192e8185611bed565b935061193e818560208601611cd1565b61194781611d4c565b840191505092915050565b600061195f602683611bed565b915061196a82611d5d565b604082019050919050565b6000611982601d83611bed565b915061198d82611dac565b602082019050919050565b60006119a5602a83611bed565b91506119b082611dd5565b604082019050919050565b60006119c8601f83611bed565b91506119d382611e24565b602082019050919050565b6119e781611c82565b82525050565b60006119f982846118d9565b915081905092915050565b6000602082019050611a19600083018461188e565b92915050565b6000606082019050611a34600083018661188e565b611a41602083018561188e565b611a4e60408301846119de565b949350505050565b6000604082019050611a6b600083018561188e565b611a7860208301846119de565b9392505050565b6000602082019050611a94600083018461189d565b92915050565b60006060820190508181036000830152611ab58187896118ac565b9050611ac460208301866119de565b8181036040830152611ad78184866118ac565b90509695505050505050565b6000602082019050611af8600083018461190a565b92915050565b60006020820190508181036000830152611b188184611919565b905092915050565b60006020820190508181036000830152611b3981611952565b9050919050565b60006020820190508181036000830152611b5981611975565b9050919050565b60006020820190508181036000830152611b7981611998565b9050919050565b60006020820190508181036000830152611b99816119bb565b9050919050565b6000602082019050611bb560008301846119de565b92915050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611c0982611c82565b9150611c1483611c82565b925082821015611c2757611c26611d04565b5b828203905092915050565b6000611c3d82611c62565b9050919050565b60008115159050919050565b6000611c5b82611c32565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611c9782611c9e565b9050919050565b6000611ca982611cb0565b9050919050565b6000611cbb82611c62565b9050919050565b82818337600083830152505050565b60005b83811015611cef578082015181840152602081019050611cd4565b83811115611cfe576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b611e5681611c32565b8114611e6157600080fd5b50565b611e6d81611c44565b8114611e7857600080fd5b50565b611e8481611c50565b8114611e8f57600080fd5b50565b611e9b81611c82565b8114611ea657600080fd5b5056fea26469706673582212205768544075d85a56b1d380f8fcc0c8829b8a656c656277c25c81c31608d9e4ef64736f6c63430008070033", } // ERC20CustodyABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/evm/testing/attackercontract.sol/attackercontract.go b/pkg/contracts/evm/testing/attackercontract.sol/attackercontract.go new file mode 100644 index 00000000..7c7840ec --- /dev/null +++ b/pkg/contracts/evm/testing/attackercontract.sol/attackercontract.go @@ -0,0 +1,318 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package attackercontract + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// AttackerContractMetaData contains all meta data concerning the AttackerContract contract. +var AttackerContractMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"victimContractAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"wzeta\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"victimMethod\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"victimContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x60806040523480156200001157600080fd5b50604051620009ae380380620009ae8339818101604052810190620000379190620001a0565b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401620000f492919062000250565b602060405180830381600087803b1580156200010f57600080fd5b505af115801562000124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014a9190620001fc565b50806001819055505050506200031a565b6000815190506200016c81620002cc565b92915050565b6000815190506200018381620002e6565b92915050565b6000815190506200019a8162000300565b92915050565b600080600060608486031215620001bc57620001bb620002c7565b5b6000620001cc868287016200015b565b9350506020620001df868287016200015b565b9250506040620001f28682870162000189565b9150509250925092565b600060208284031215620002155762000214620002c7565b5b6000620002258482850162000172565b91505092915050565b62000239816200027d565b82525050565b6200024a81620002bd565b82525050565b60006040820190506200026760008301856200022e565b6200027660208301846200023f565b9392505050565b60006200028a826200029d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b620002d7816200027d565b8114620002e357600080fd5b50565b620002f18162000291565b8114620002fd57600080fd5b50565b6200030b81620002bd565b81146200031757600080fd5b50565b610684806200032a6000396000f3fe6080604052600436106100435760003560e01c806323b872dd1461004f57806370a082311461008c57806389bc0bb7146100c9578063a9059cbb146100f45761004a565b3661004a57005b600080fd5b34801561005b57600080fd5b506100766004803603810190610071919061034c565b610131565b60405161008391906104b3565b60405180910390f35b34801561009857600080fd5b506100b360048036038101906100ae919061031f565b610146565b6040516100c0919061051d565b60405180910390f35b3480156100d557600080fd5b506100de610159565b6040516100eb9190610461565b60405180910390f35b34801561010057600080fd5b5061011b6004803603810190610116919061039f565b61017d565b60405161012891906104b3565b60405180910390f35b600061013b610191565b600190509392505050565b6000610150610191565b60009050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610187610191565b6001905092915050565b6001805414156101a8576101a36101bf565b6101bd565b600260015414156101bc576101bb61024f565b5b5b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e609055e3060006040518363ffffffff1660e01b815260040161021b9291906104ce565b600060405180830381600087803b15801561023557600080fd5b505af1158015610249573d6000803e3d6000fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9caed1273f39fd6e51aad88f6f4ce6ab8827279cfffb922663060006040518463ffffffff1660e01b81526004016102c19392919061047c565b600060405180830381600087803b1580156102db57600080fd5b505af11580156102ef573d6000803e3d6000fd5b50505050565b60008135905061030481610620565b92915050565b60008135905061031981610637565b92915050565b600060208284031215610335576103346105a3565b5b6000610343848285016102f5565b91505092915050565b600080600060608486031215610365576103646105a3565b5b6000610373868287016102f5565b9350506020610384868287016102f5565b92505060406103958682870161030a565b9150509250925092565b600080604083850312156103b6576103b56105a3565b5b60006103c4858286016102f5565b92505060206103d58582860161030a565b9150509250929050565b6103e881610549565b82525050565b6103f78161055b565b82525050565b61040681610591565b82525050565b6000610419600483610538565b9150610424826105a8565b602082019050919050565b600061043c602a83610538565b9150610447826105d1565b604082019050919050565b61045b81610587565b82525050565b600060208201905061047660008301846103df565b92915050565b600060608201905061049160008301866103df565b61049e60208301856103df565b6104ab60408301846103fd565b949350505050565b60006020820190506104c860008301846103ee565b92915050565b600060808201905081810360008301526104e78161042f565b90506104f660208301856103df565b61050360408301846103fd565b81810360608301526105148161040c565b90509392505050565b60006020820190506105326000830184610452565b92915050565b600082825260208201905092915050565b600061055482610567565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061059c82610587565b9050919050565b600080fd5b7f3078303000000000000000000000000000000000000000000000000000000000600082015250565b7f307866333946643665353161616438384636463463653661423838323732373960008201527f6366664662393232363600000000000000000000000000000000000000000000602082015250565b61062981610549565b811461063457600080fd5b50565b61064081610587565b811461064b57600080fd5b5056fea264697066735822122075954d652b0eb8d814b91524c47a04c537d638cec0eda3ca0e4ee67767e1a37064736f6c63430008070033", +} + +// AttackerContractABI is the input ABI used to generate the binding from. +// Deprecated: Use AttackerContractMetaData.ABI instead. +var AttackerContractABI = AttackerContractMetaData.ABI + +// AttackerContractBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use AttackerContractMetaData.Bin instead. +var AttackerContractBin = AttackerContractMetaData.Bin + +// DeployAttackerContract deploys a new Ethereum contract, binding an instance of AttackerContract to it. +func DeployAttackerContract(auth *bind.TransactOpts, backend bind.ContractBackend, victimContractAddress_ common.Address, wzeta common.Address, victimMethod *big.Int) (common.Address, *types.Transaction, *AttackerContract, error) { + parsed, err := AttackerContractMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(AttackerContractBin), backend, victimContractAddress_, wzeta, victimMethod) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &AttackerContract{AttackerContractCaller: AttackerContractCaller{contract: contract}, AttackerContractTransactor: AttackerContractTransactor{contract: contract}, AttackerContractFilterer: AttackerContractFilterer{contract: contract}}, nil +} + +// AttackerContract is an auto generated Go binding around an Ethereum contract. +type AttackerContract struct { + AttackerContractCaller // Read-only binding to the contract + AttackerContractTransactor // Write-only binding to the contract + AttackerContractFilterer // Log filterer for contract events +} + +// AttackerContractCaller is an auto generated read-only Go binding around an Ethereum contract. +type AttackerContractCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AttackerContractTransactor is an auto generated write-only Go binding around an Ethereum contract. +type AttackerContractTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AttackerContractFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type AttackerContractFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// AttackerContractSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type AttackerContractSession struct { + Contract *AttackerContract // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AttackerContractCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type AttackerContractCallerSession struct { + Contract *AttackerContractCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// AttackerContractTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type AttackerContractTransactorSession struct { + Contract *AttackerContractTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// AttackerContractRaw is an auto generated low-level Go binding around an Ethereum contract. +type AttackerContractRaw struct { + Contract *AttackerContract // Generic contract binding to access the raw methods on +} + +// AttackerContractCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type AttackerContractCallerRaw struct { + Contract *AttackerContractCaller // Generic read-only contract binding to access the raw methods on +} + +// AttackerContractTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type AttackerContractTransactorRaw struct { + Contract *AttackerContractTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewAttackerContract creates a new instance of AttackerContract, bound to a specific deployed contract. +func NewAttackerContract(address common.Address, backend bind.ContractBackend) (*AttackerContract, error) { + contract, err := bindAttackerContract(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &AttackerContract{AttackerContractCaller: AttackerContractCaller{contract: contract}, AttackerContractTransactor: AttackerContractTransactor{contract: contract}, AttackerContractFilterer: AttackerContractFilterer{contract: contract}}, nil +} + +// NewAttackerContractCaller creates a new read-only instance of AttackerContract, bound to a specific deployed contract. +func NewAttackerContractCaller(address common.Address, caller bind.ContractCaller) (*AttackerContractCaller, error) { + contract, err := bindAttackerContract(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &AttackerContractCaller{contract: contract}, nil +} + +// NewAttackerContractTransactor creates a new write-only instance of AttackerContract, bound to a specific deployed contract. +func NewAttackerContractTransactor(address common.Address, transactor bind.ContractTransactor) (*AttackerContractTransactor, error) { + contract, err := bindAttackerContract(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &AttackerContractTransactor{contract: contract}, nil +} + +// NewAttackerContractFilterer creates a new log filterer instance of AttackerContract, bound to a specific deployed contract. +func NewAttackerContractFilterer(address common.Address, filterer bind.ContractFilterer) (*AttackerContractFilterer, error) { + contract, err := bindAttackerContract(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &AttackerContractFilterer{contract: contract}, nil +} + +// bindAttackerContract binds a generic wrapper to an already deployed contract. +func bindAttackerContract(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := AttackerContractMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_AttackerContract *AttackerContractRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _AttackerContract.Contract.AttackerContractCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_AttackerContract *AttackerContractRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AttackerContract.Contract.AttackerContractTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_AttackerContract *AttackerContractRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _AttackerContract.Contract.AttackerContractTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_AttackerContract *AttackerContractCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _AttackerContract.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_AttackerContract *AttackerContractTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AttackerContract.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_AttackerContract *AttackerContractTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _AttackerContract.Contract.contract.Transact(opts, method, params...) +} + +// VictimContractAddress is a free data retrieval call binding the contract method 0x89bc0bb7. +// +// Solidity: function victimContractAddress() view returns(address) +func (_AttackerContract *AttackerContractCaller) VictimContractAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _AttackerContract.contract.Call(opts, &out, "victimContractAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// VictimContractAddress is a free data retrieval call binding the contract method 0x89bc0bb7. +// +// Solidity: function victimContractAddress() view returns(address) +func (_AttackerContract *AttackerContractSession) VictimContractAddress() (common.Address, error) { + return _AttackerContract.Contract.VictimContractAddress(&_AttackerContract.CallOpts) +} + +// VictimContractAddress is a free data retrieval call binding the contract method 0x89bc0bb7. +// +// Solidity: function victimContractAddress() view returns(address) +func (_AttackerContract *AttackerContractCallerSession) VictimContractAddress() (common.Address, error) { + return _AttackerContract.Contract.VictimContractAddress(&_AttackerContract.CallOpts) +} + +// BalanceOf is a paid mutator transaction binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) returns(uint256) +func (_AttackerContract *AttackerContractTransactor) BalanceOf(opts *bind.TransactOpts, account common.Address) (*types.Transaction, error) { + return _AttackerContract.contract.Transact(opts, "balanceOf", account) +} + +// BalanceOf is a paid mutator transaction binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) returns(uint256) +func (_AttackerContract *AttackerContractSession) BalanceOf(account common.Address) (*types.Transaction, error) { + return _AttackerContract.Contract.BalanceOf(&_AttackerContract.TransactOpts, account) +} + +// BalanceOf is a paid mutator transaction binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) returns(uint256) +func (_AttackerContract *AttackerContractTransactorSession) BalanceOf(account common.Address) (*types.Transaction, error) { + return _AttackerContract.Contract.BalanceOf(&_AttackerContract.TransactOpts, account) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_AttackerContract *AttackerContractTransactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _AttackerContract.contract.Transact(opts, "transfer", to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_AttackerContract *AttackerContractSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _AttackerContract.Contract.Transfer(&_AttackerContract.TransactOpts, to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_AttackerContract *AttackerContractTransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _AttackerContract.Contract.Transfer(&_AttackerContract.TransactOpts, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_AttackerContract *AttackerContractTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _AttackerContract.contract.Transact(opts, "transferFrom", from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_AttackerContract *AttackerContractSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _AttackerContract.Contract.TransferFrom(&_AttackerContract.TransactOpts, from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_AttackerContract *AttackerContractTransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _AttackerContract.Contract.TransferFrom(&_AttackerContract.TransactOpts, from, to, amount) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_AttackerContract *AttackerContractTransactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _AttackerContract.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_AttackerContract *AttackerContractSession) Receive() (*types.Transaction, error) { + return _AttackerContract.Contract.Receive(&_AttackerContract.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_AttackerContract *AttackerContractTransactorSession) Receive() (*types.Transaction, error) { + return _AttackerContract.Contract.Receive(&_AttackerContract.TransactOpts) +} diff --git a/pkg/contracts/evm/testing/attackercontract.sol/victim.go b/pkg/contracts/evm/testing/attackercontract.sol/victim.go new file mode 100644 index 00000000..1aa58727 --- /dev/null +++ b/pkg/contracts/evm/testing/attackercontract.sol/victim.go @@ -0,0 +1,223 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package attackercontract + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// VictimMetaData contains all meta data concerning the Victim contract. +var VictimMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"recipient\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// VictimABI is the input ABI used to generate the binding from. +// Deprecated: Use VictimMetaData.ABI instead. +var VictimABI = VictimMetaData.ABI + +// Victim is an auto generated Go binding around an Ethereum contract. +type Victim struct { + VictimCaller // Read-only binding to the contract + VictimTransactor // Write-only binding to the contract + VictimFilterer // Log filterer for contract events +} + +// VictimCaller is an auto generated read-only Go binding around an Ethereum contract. +type VictimCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// VictimTransactor is an auto generated write-only Go binding around an Ethereum contract. +type VictimTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// VictimFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type VictimFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// VictimSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type VictimSession struct { + Contract *Victim // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// VictimCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type VictimCallerSession struct { + Contract *VictimCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// VictimTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type VictimTransactorSession struct { + Contract *VictimTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// VictimRaw is an auto generated low-level Go binding around an Ethereum contract. +type VictimRaw struct { + Contract *Victim // Generic contract binding to access the raw methods on +} + +// VictimCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type VictimCallerRaw struct { + Contract *VictimCaller // Generic read-only contract binding to access the raw methods on +} + +// VictimTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type VictimTransactorRaw struct { + Contract *VictimTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewVictim creates a new instance of Victim, bound to a specific deployed contract. +func NewVictim(address common.Address, backend bind.ContractBackend) (*Victim, error) { + contract, err := bindVictim(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &Victim{VictimCaller: VictimCaller{contract: contract}, VictimTransactor: VictimTransactor{contract: contract}, VictimFilterer: VictimFilterer{contract: contract}}, nil +} + +// NewVictimCaller creates a new read-only instance of Victim, bound to a specific deployed contract. +func NewVictimCaller(address common.Address, caller bind.ContractCaller) (*VictimCaller, error) { + contract, err := bindVictim(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &VictimCaller{contract: contract}, nil +} + +// NewVictimTransactor creates a new write-only instance of Victim, bound to a specific deployed contract. +func NewVictimTransactor(address common.Address, transactor bind.ContractTransactor) (*VictimTransactor, error) { + contract, err := bindVictim(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &VictimTransactor{contract: contract}, nil +} + +// NewVictimFilterer creates a new log filterer instance of Victim, bound to a specific deployed contract. +func NewVictimFilterer(address common.Address, filterer bind.ContractFilterer) (*VictimFilterer, error) { + contract, err := bindVictim(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &VictimFilterer{contract: contract}, nil +} + +// bindVictim binds a generic wrapper to an already deployed contract. +func bindVictim(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := VictimMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Victim *VictimRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Victim.Contract.VictimCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Victim *VictimRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Victim.Contract.VictimTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Victim *VictimRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Victim.Contract.VictimTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_Victim *VictimCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _Victim.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_Victim *VictimTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _Victim.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_Victim *VictimTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _Victim.Contract.contract.Transact(opts, method, params...) +} + +// Deposit is a paid mutator transaction binding the contract method 0xe609055e. +// +// Solidity: function deposit(bytes recipient, address asset, uint256 amount, bytes message) returns() +func (_Victim *VictimTransactor) Deposit(opts *bind.TransactOpts, recipient []byte, asset common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _Victim.contract.Transact(opts, "deposit", recipient, asset, amount, message) +} + +// Deposit is a paid mutator transaction binding the contract method 0xe609055e. +// +// Solidity: function deposit(bytes recipient, address asset, uint256 amount, bytes message) returns() +func (_Victim *VictimSession) Deposit(recipient []byte, asset common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _Victim.Contract.Deposit(&_Victim.TransactOpts, recipient, asset, amount, message) +} + +// Deposit is a paid mutator transaction binding the contract method 0xe609055e. +// +// Solidity: function deposit(bytes recipient, address asset, uint256 amount, bytes message) returns() +func (_Victim *VictimTransactorSession) Deposit(recipient []byte, asset common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _Victim.Contract.Deposit(&_Victim.TransactOpts, recipient, asset, amount, message) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address recipient, address asset, uint256 amount) returns() +func (_Victim *VictimTransactor) Withdraw(opts *bind.TransactOpts, recipient common.Address, asset common.Address, amount *big.Int) (*types.Transaction, error) { + return _Victim.contract.Transact(opts, "withdraw", recipient, asset, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address recipient, address asset, uint256 amount) returns() +func (_Victim *VictimSession) Withdraw(recipient common.Address, asset common.Address, amount *big.Int) (*types.Transaction, error) { + return _Victim.Contract.Withdraw(&_Victim.TransactOpts, recipient, asset, amount) +} + +// Withdraw is a paid mutator transaction binding the contract method 0xd9caed12. +// +// Solidity: function withdraw(address recipient, address asset, uint256 amount) returns() +func (_Victim *VictimTransactorSession) Withdraw(recipient common.Address, asset common.Address, amount *big.Int) (*types.Transaction, error) { + return _Victim.Contract.Withdraw(&_Victim.TransactOpts, recipient, asset, amount) +} diff --git a/pkg/contracts/evm/testing/erc20mock.sol/erc20mock.go b/pkg/contracts/evm/testing/erc20mock.sol/erc20mock.go new file mode 100644 index 00000000..cd791a51 --- /dev/null +++ b/pkg/contracts/evm/testing/erc20mock.sol/erc20mock.go @@ -0,0 +1,802 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package erc20mock + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ERC20MockMetaData contains all meta data concerning the ERC20Mock contract. +var ERC20MockMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"address\",\"name\":\"creator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"initialSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60806040523480156200001157600080fd5b5060405162001beb38038062001beb833981810160405281019062000037919062000393565b838381600390805190602001906200005192919062000237565b5080600490805190602001906200006a92919062000237565b505050620000ac8262000082620000b660201b60201c565b60ff16600a620000939190620005e2565b83620000a091906200071f565b620000bf60201b60201c565b505050506200097c565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000129906200047b565b60405180910390fd5b62000146600083836200022d60201b60201c565b80600260008282546200015a91906200052a565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200020d91906200049d565b60405180910390a362000229600083836200023260201b60201c565b5050565b505050565b505050565b8280546200024590620007f4565b90600052602060002090601f016020900481019282620002695760008555620002b5565b82601f106200028457805160ff1916838001178555620002b5565b82800160010185558215620002b5579182015b82811115620002b457825182559160200191906001019062000297565b5b509050620002c49190620002c8565b5090565b5b80821115620002e3576000816000905550600101620002c9565b5090565b6000620002fe620002f884620004e3565b620004ba565b9050828152602081018484840111156200031d576200031c620008f2565b5b6200032a848285620007be565b509392505050565b600081519050620003438162000948565b92915050565b600082601f830112620003615762000360620008ed565b5b815162000373848260208601620002e7565b91505092915050565b6000815190506200038d8162000962565b92915050565b60008060008060808587031215620003b057620003af620008fc565b5b600085015167ffffffffffffffff811115620003d157620003d0620008f7565b5b620003df8782880162000349565b945050602085015167ffffffffffffffff811115620004035762000402620008f7565b5b620004118782880162000349565b9350506040620004248782880162000332565b925050606062000437878288016200037c565b91505092959194509250565b600062000452601f8362000519565b91506200045f826200091f565b602082019050919050565b6200047581620007b4565b82525050565b60006020820190508181036000830152620004968162000443565b9050919050565b6000602082019050620004b460008301846200046a565b92915050565b6000620004c6620004d9565b9050620004d482826200082a565b919050565b6000604051905090565b600067ffffffffffffffff821115620005015762000500620008be565b5b6200050c8262000901565b9050602081019050919050565b600082825260208201905092915050565b60006200053782620007b4565b91506200054483620007b4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200057c576200057b62000860565b5b828201905092915050565b6000808291508390505b6001851115620005d957808604811115620005b157620005b062000860565b5b6001851615620005c15780820291505b8081029050620005d18562000912565b945062000591565b94509492505050565b6000620005ef82620007b4565b9150620005fc83620007b4565b92506200062b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000633565b905092915050565b60008262000645576001905062000718565b8162000655576000905062000718565b81600181146200066e57600281146200067957620006af565b600191505062000718565b60ff8411156200068e576200068d62000860565b5b8360020a915084821115620006a857620006a762000860565b5b5062000718565b5060208310610133831016604e8410600b8410161715620006e95782820a905083811115620006e357620006e262000860565b5b62000718565b620006f8848484600162000587565b9250905081840481111562000712576200071162000860565b5b81810290505b9392505050565b60006200072c82620007b4565b91506200073983620007b4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000775576200077462000860565b5b828202905092915050565b60006200078d8262000794565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015620007de578082015181840152602081019050620007c1565b83811115620007ee576000848401525b50505050565b600060028204905060018216806200080d57607f821691505b602082108114156200082457620008236200088f565b5b50919050565b620008358262000901565b810181811067ffffffffffffffff82111715620008575762000856620008be565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b620009538162000780565b81146200095f57600080fd5b50565b6200096d81620007b4565b81146200097957600080fd5b50565b61125f806200098c6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610d20565b60405180910390f35b6100e660048036038101906100e19190610b6a565b610308565b6040516100f39190610d05565b60405180910390f35b61010461032b565b6040516101119190610e22565b60405180910390f35b610134600480360381019061012f9190610b17565b610335565b6040516101419190610d05565b60405180910390f35b610152610364565b60405161015f9190610e3d565b60405180910390f35b610182600480360381019061017d9190610b6a565b61036d565b60405161018f9190610d05565b60405180910390f35b6101b260048036038101906101ad9190610aaa565b6103a4565b6040516101bf9190610e22565b60405180910390f35b6101d06103ec565b6040516101dd9190610d20565b60405180910390f35b61020060048036038101906101fb9190610b6a565b61047e565b60405161020d9190610d05565b60405180910390f35b610230600480360381019061022b9190610b6a565b6104f5565b60405161023d9190610d05565b60405180910390f35b610260600480360381019061025b9190610ad7565b610518565b60405161026d9190610e22565b60405180910390f35b60606003805461028590610f52565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610f52565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b60008061031361059f565b90506103208185856105a7565b600191505092915050565b6000600254905090565b60008061034061059f565b905061034d858285610772565b6103588585856107fe565b60019150509392505050565b60006012905090565b60008061037861059f565b905061039981858561038a8589610518565b6103949190610e74565b6105a7565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546103fb90610f52565b80601f016020809104026020016040519081016040528092919081815260200182805461042790610f52565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60008061048961059f565b905060006104978286610518565b9050838110156104dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d390610e02565b60405180910390fd5b6104e982868684036105a7565b60019250505092915050565b60008061050061059f565b905061050d8185856107fe565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060e90610de2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067e90610d62565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107659190610e22565b60405180910390a3505050565b600061077e8484610518565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107f857818110156107ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e190610d82565b60405180910390fd5b6107f784848484036105a7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561086e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086590610dc2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d590610d42565b60405180910390fd5b6108e9838383610a76565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096690610da2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a5d9190610e22565b60405180910390a3610a70848484610a7b565b50505050565b505050565b505050565b600081359050610a8f816111fb565b92915050565b600081359050610aa481611212565b92915050565b600060208284031215610ac057610abf610fe2565b5b6000610ace84828501610a80565b91505092915050565b60008060408385031215610aee57610aed610fe2565b5b6000610afc85828601610a80565b9250506020610b0d85828601610a80565b9150509250929050565b600080600060608486031215610b3057610b2f610fe2565b5b6000610b3e86828701610a80565b9350506020610b4f86828701610a80565b9250506040610b6086828701610a95565b9150509250925092565b60008060408385031215610b8157610b80610fe2565b5b6000610b8f85828601610a80565b9250506020610ba085828601610a95565b9150509250929050565b610bb381610edc565b82525050565b6000610bc482610e58565b610bce8185610e63565b9350610bde818560208601610f1f565b610be781610fe7565b840191505092915050565b6000610bff602383610e63565b9150610c0a82610ff8565b604082019050919050565b6000610c22602283610e63565b9150610c2d82611047565b604082019050919050565b6000610c45601d83610e63565b9150610c5082611096565b602082019050919050565b6000610c68602683610e63565b9150610c73826110bf565b604082019050919050565b6000610c8b602583610e63565b9150610c968261110e565b604082019050919050565b6000610cae602483610e63565b9150610cb98261115d565b604082019050919050565b6000610cd1602583610e63565b9150610cdc826111ac565b604082019050919050565b610cf081610f08565b82525050565b610cff81610f12565b82525050565b6000602082019050610d1a6000830184610baa565b92915050565b60006020820190508181036000830152610d3a8184610bb9565b905092915050565b60006020820190508181036000830152610d5b81610bf2565b9050919050565b60006020820190508181036000830152610d7b81610c15565b9050919050565b60006020820190508181036000830152610d9b81610c38565b9050919050565b60006020820190508181036000830152610dbb81610c5b565b9050919050565b60006020820190508181036000830152610ddb81610c7e565b9050919050565b60006020820190508181036000830152610dfb81610ca1565b9050919050565b60006020820190508181036000830152610e1b81610cc4565b9050919050565b6000602082019050610e376000830184610ce7565b92915050565b6000602082019050610e526000830184610cf6565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610e7f82610f08565b9150610e8a83610f08565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610ebf57610ebe610f84565b5b828201905092915050565b6000610ed582610ee8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015610f3d578082015181840152602081019050610f22565b83811115610f4c576000848401525b50505050565b60006002820490506001821680610f6a57607f821691505b60208210811415610f7e57610f7d610fb3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61120481610eca565b811461120f57600080fd5b50565b61121b81610f08565b811461122657600080fd5b5056fea26469706673582212206e7d4645203c528cb4c5c20b28a6d1615134cd17e709cf6083e931dfc154394964736f6c63430008070033", +} + +// ERC20MockABI is the input ABI used to generate the binding from. +// Deprecated: Use ERC20MockMetaData.ABI instead. +var ERC20MockABI = ERC20MockMetaData.ABI + +// ERC20MockBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ERC20MockMetaData.Bin instead. +var ERC20MockBin = ERC20MockMetaData.Bin + +// DeployERC20Mock deploys a new Ethereum contract, binding an instance of ERC20Mock to it. +func DeployERC20Mock(auth *bind.TransactOpts, backend bind.ContractBackend, name string, symbol string, creator common.Address, initialSupply *big.Int) (common.Address, *types.Transaction, *ERC20Mock, error) { + parsed, err := ERC20MockMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ERC20MockBin), backend, name, symbol, creator, initialSupply) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ERC20Mock{ERC20MockCaller: ERC20MockCaller{contract: contract}, ERC20MockTransactor: ERC20MockTransactor{contract: contract}, ERC20MockFilterer: ERC20MockFilterer{contract: contract}}, nil +} + +// ERC20Mock is an auto generated Go binding around an Ethereum contract. +type ERC20Mock struct { + ERC20MockCaller // Read-only binding to the contract + ERC20MockTransactor // Write-only binding to the contract + ERC20MockFilterer // Log filterer for contract events +} + +// ERC20MockCaller is an auto generated read-only Go binding around an Ethereum contract. +type ERC20MockCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20MockTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ERC20MockTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20MockFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ERC20MockFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ERC20MockSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ERC20MockSession struct { + Contract *ERC20Mock // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC20MockCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ERC20MockCallerSession struct { + Contract *ERC20MockCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ERC20MockTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ERC20MockTransactorSession struct { + Contract *ERC20MockTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ERC20MockRaw is an auto generated low-level Go binding around an Ethereum contract. +type ERC20MockRaw struct { + Contract *ERC20Mock // Generic contract binding to access the raw methods on +} + +// ERC20MockCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ERC20MockCallerRaw struct { + Contract *ERC20MockCaller // Generic read-only contract binding to access the raw methods on +} + +// ERC20MockTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ERC20MockTransactorRaw struct { + Contract *ERC20MockTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewERC20Mock creates a new instance of ERC20Mock, bound to a specific deployed contract. +func NewERC20Mock(address common.Address, backend bind.ContractBackend) (*ERC20Mock, error) { + contract, err := bindERC20Mock(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ERC20Mock{ERC20MockCaller: ERC20MockCaller{contract: contract}, ERC20MockTransactor: ERC20MockTransactor{contract: contract}, ERC20MockFilterer: ERC20MockFilterer{contract: contract}}, nil +} + +// NewERC20MockCaller creates a new read-only instance of ERC20Mock, bound to a specific deployed contract. +func NewERC20MockCaller(address common.Address, caller bind.ContractCaller) (*ERC20MockCaller, error) { + contract, err := bindERC20Mock(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ERC20MockCaller{contract: contract}, nil +} + +// NewERC20MockTransactor creates a new write-only instance of ERC20Mock, bound to a specific deployed contract. +func NewERC20MockTransactor(address common.Address, transactor bind.ContractTransactor) (*ERC20MockTransactor, error) { + contract, err := bindERC20Mock(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ERC20MockTransactor{contract: contract}, nil +} + +// NewERC20MockFilterer creates a new log filterer instance of ERC20Mock, bound to a specific deployed contract. +func NewERC20MockFilterer(address common.Address, filterer bind.ContractFilterer) (*ERC20MockFilterer, error) { + contract, err := bindERC20Mock(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ERC20MockFilterer{contract: contract}, nil +} + +// bindERC20Mock binds a generic wrapper to an already deployed contract. +func bindERC20Mock(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ERC20MockMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20Mock *ERC20MockRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20Mock.Contract.ERC20MockCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20Mock *ERC20MockRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Mock.Contract.ERC20MockTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20Mock *ERC20MockRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20Mock.Contract.ERC20MockTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ERC20Mock *ERC20MockCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ERC20Mock.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ERC20Mock *ERC20MockTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ERC20Mock.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ERC20Mock *ERC20MockTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ERC20Mock.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20Mock *ERC20MockCaller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _ERC20Mock.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20Mock *ERC20MockSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ERC20Mock.Contract.Allowance(&_ERC20Mock.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_ERC20Mock *ERC20MockCallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _ERC20Mock.Contract.Allowance(&_ERC20Mock.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20Mock *ERC20MockCaller) BalanceOf(opts *bind.CallOpts, account common.Address) (*big.Int, error) { + var out []interface{} + err := _ERC20Mock.contract.Call(opts, &out, "balanceOf", account) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20Mock *ERC20MockSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ERC20Mock.Contract.BalanceOf(&_ERC20Mock.CallOpts, account) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address account) view returns(uint256) +func (_ERC20Mock *ERC20MockCallerSession) BalanceOf(account common.Address) (*big.Int, error) { + return _ERC20Mock.Contract.BalanceOf(&_ERC20Mock.CallOpts, account) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ERC20Mock *ERC20MockCaller) Decimals(opts *bind.CallOpts) (uint8, error) { + var out []interface{} + err := _ERC20Mock.contract.Call(opts, &out, "decimals") + + if err != nil { + return *new(uint8), err + } + + out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) + + return out0, err + +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ERC20Mock *ERC20MockSession) Decimals() (uint8, error) { + return _ERC20Mock.Contract.Decimals(&_ERC20Mock.CallOpts) +} + +// Decimals is a free data retrieval call binding the contract method 0x313ce567. +// +// Solidity: function decimals() view returns(uint8) +func (_ERC20Mock *ERC20MockCallerSession) Decimals() (uint8, error) { + return _ERC20Mock.Contract.Decimals(&_ERC20Mock.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20Mock *ERC20MockCaller) Name(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20Mock.contract.Call(opts, &out, "name") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20Mock *ERC20MockSession) Name() (string, error) { + return _ERC20Mock.Contract.Name(&_ERC20Mock.CallOpts) +} + +// Name is a free data retrieval call binding the contract method 0x06fdde03. +// +// Solidity: function name() view returns(string) +func (_ERC20Mock *ERC20MockCallerSession) Name() (string, error) { + return _ERC20Mock.Contract.Name(&_ERC20Mock.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20Mock *ERC20MockCaller) Symbol(opts *bind.CallOpts) (string, error) { + var out []interface{} + err := _ERC20Mock.contract.Call(opts, &out, "symbol") + + if err != nil { + return *new(string), err + } + + out0 := *abi.ConvertType(out[0], new(string)).(*string) + + return out0, err + +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20Mock *ERC20MockSession) Symbol() (string, error) { + return _ERC20Mock.Contract.Symbol(&_ERC20Mock.CallOpts) +} + +// Symbol is a free data retrieval call binding the contract method 0x95d89b41. +// +// Solidity: function symbol() view returns(string) +func (_ERC20Mock *ERC20MockCallerSession) Symbol() (string, error) { + return _ERC20Mock.Contract.Symbol(&_ERC20Mock.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20Mock *ERC20MockCaller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ERC20Mock.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20Mock *ERC20MockSession) TotalSupply() (*big.Int, error) { + return _ERC20Mock.Contract.TotalSupply(&_ERC20Mock.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_ERC20Mock *ERC20MockCallerSession) TotalSupply() (*big.Int, error) { + return _ERC20Mock.Contract.TotalSupply(&_ERC20Mock.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ERC20Mock *ERC20MockTransactor) Approve(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mock.contract.Transact(opts, "approve", spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ERC20Mock *ERC20MockSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mock.Contract.Approve(&_ERC20Mock.TransactOpts, spender, amount) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 amount) returns(bool) +func (_ERC20Mock *ERC20MockTransactorSession) Approve(spender common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mock.Contract.Approve(&_ERC20Mock.TransactOpts, spender, amount) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ERC20Mock *ERC20MockTransactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ERC20Mock.contract.Transact(opts, "decreaseAllowance", spender, subtractedValue) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ERC20Mock *ERC20MockSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ERC20Mock.Contract.DecreaseAllowance(&_ERC20Mock.TransactOpts, spender, subtractedValue) +} + +// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. +// +// Solidity: function decreaseAllowance(address spender, uint256 subtractedValue) returns(bool) +func (_ERC20Mock *ERC20MockTransactorSession) DecreaseAllowance(spender common.Address, subtractedValue *big.Int) (*types.Transaction, error) { + return _ERC20Mock.Contract.DecreaseAllowance(&_ERC20Mock.TransactOpts, spender, subtractedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ERC20Mock *ERC20MockTransactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ERC20Mock.contract.Transact(opts, "increaseAllowance", spender, addedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ERC20Mock *ERC20MockSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ERC20Mock.Contract.IncreaseAllowance(&_ERC20Mock.TransactOpts, spender, addedValue) +} + +// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. +// +// Solidity: function increaseAllowance(address spender, uint256 addedValue) returns(bool) +func (_ERC20Mock *ERC20MockTransactorSession) IncreaseAllowance(spender common.Address, addedValue *big.Int) (*types.Transaction, error) { + return _ERC20Mock.Contract.IncreaseAllowance(&_ERC20Mock.TransactOpts, spender, addedValue) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_ERC20Mock *ERC20MockTransactor) Transfer(opts *bind.TransactOpts, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mock.contract.Transact(opts, "transfer", to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_ERC20Mock *ERC20MockSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mock.Contract.Transfer(&_ERC20Mock.TransactOpts, to, amount) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 amount) returns(bool) +func (_ERC20Mock *ERC20MockTransactorSession) Transfer(to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mock.Contract.Transfer(&_ERC20Mock.TransactOpts, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_ERC20Mock *ERC20MockTransactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mock.contract.Transact(opts, "transferFrom", from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_ERC20Mock *ERC20MockSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mock.Contract.TransferFrom(&_ERC20Mock.TransactOpts, from, to, amount) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 amount) returns(bool) +func (_ERC20Mock *ERC20MockTransactorSession) TransferFrom(from common.Address, to common.Address, amount *big.Int) (*types.Transaction, error) { + return _ERC20Mock.Contract.TransferFrom(&_ERC20Mock.TransactOpts, from, to, amount) +} + +// ERC20MockApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the ERC20Mock contract. +type ERC20MockApprovalIterator struct { + Event *ERC20MockApproval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20MockApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20MockApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20MockApproval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20MockApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20MockApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20MockApproval represents a Approval event raised by the ERC20Mock contract. +type ERC20MockApproval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20Mock *ERC20MockFilterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*ERC20MockApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ERC20Mock.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &ERC20MockApprovalIterator{contract: _ERC20Mock.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20Mock *ERC20MockFilterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *ERC20MockApproval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _ERC20Mock.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20MockApproval) + if err := _ERC20Mock.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_ERC20Mock *ERC20MockFilterer) ParseApproval(log types.Log) (*ERC20MockApproval, error) { + event := new(ERC20MockApproval) + if err := _ERC20Mock.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ERC20MockTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ERC20Mock contract. +type ERC20MockTransferIterator struct { + Event *ERC20MockTransfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ERC20MockTransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ERC20MockTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ERC20MockTransfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ERC20MockTransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ERC20MockTransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ERC20MockTransfer represents a Transfer event raised by the ERC20Mock contract. +type ERC20MockTransfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20Mock *ERC20MockFilterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*ERC20MockTransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20Mock.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &ERC20MockTransferIterator{contract: _ERC20Mock.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20Mock *ERC20MockFilterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *ERC20MockTransfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _ERC20Mock.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ERC20MockTransfer) + if err := _ERC20Mock.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_ERC20Mock *ERC20MockFilterer) ParseTransfer(log types.Log) (*ERC20MockTransfer, error) { + event := new(ERC20MockTransfer) + if err := _ERC20Mock.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/contracts/evm/testing/zetainteractormock.sol/zetainteractormock.go b/pkg/contracts/evm/testing/zetainteractormock.sol/zetainteractormock.go index ca42d8e4..13eed8cb 100644 --- a/pkg/contracts/evm/testing/zetainteractormock.sol/zetainteractormock.go +++ b/pkg/contracts/evm/testing/zetainteractormock.sol/zetainteractormock.go @@ -51,7 +51,7 @@ type ZetaInterfacesZetaRevert struct { // ZetaInteractorMockMetaData contains all meta data concerning the ZetaInteractorMock contract. var ZetaInteractorMockMetaData = &bind.MetaData{ ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaConnectorAddress\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"InvalidCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidDestinationChainId\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidZetaMessageCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidZetaRevertCall\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferStarted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"connector\",\"outputs\":[{\"internalType\":\"contractZetaConnector\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"interactorsByChainId\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.ZetaMessage\",\"name\":\"zetaMessage\",\"type\":\"tuple\"}],\"name\":\"onZetaMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.ZetaRevert\",\"name\":\"zetaRevert\",\"type\":\"tuple\"}],\"name\":\"onZetaRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pendingOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"contractAddress\",\"type\":\"bytes\"}],\"name\":\"setInteractorByChainId\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60c06040523480156200001157600080fd5b506040516200123c3803806200123c833981810160405281019062000037919062000228565b80620000586200004c6200010760201b60201c565b6200010f60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000c0576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b46608081815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620002ad565b600033905090565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556200014a816200014d60201b620005bd1760201c565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620002228162000293565b92915050565b6000602082840312156200024157620002406200028e565b5b6000620002518482850162000211565b91505092915050565b600062000267826200026e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200029e816200025a565b8114620002aa57600080fd5b50565b60805160a05160601c610f5f620002dd6000396000818161049b0152610683015260006103690152610f5f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806379ba50971161006657806379ba50971461013157806383f3084f1461013b5780638da5cb5b14610159578063e30c397814610177578063f2fde38b146101955761009e565b80632618143f146100a35780633749c51a146100d35780633ff0693c146100ef5780634fd3f7d71461010b578063715018a614610127575b600080fd5b6100bd60048036038101906100b891906109ea565b6101b1565b6040516100ca9190610c03565b60405180910390f35b6100ed60048036038101906100e89190610958565b610251565b005b610109600480360381019061010491906109a1565b6102e7565b005b61012560048036038101906101209190610a17565b6103c8565b005b61012f6103f8565b005b61013961040c565b005b610143610499565b6040516101509190610c25565b60405180910390f35b6101616104bd565b60405161016e9190610be8565b60405180910390f35b61017f6104e6565b60405161018c9190610be8565b60405180910390f35b6101af60048036038101906101aa919061092b565b610510565b005b600260205280600052604060002060009150905080546101d090610de4565b80601f01602080910402602001604051908101604052809291908181526020018280546101fc90610de4565b80156102495780601f1061021e57610100808354040283529160200191610249565b820191906000526020600020905b81548152906001019060200180831161022c57829003601f168201915b505050505081565b8061025a610681565b600260008260200135815260200190815260200160002060405161027e9190610bd1565b60405180910390208180600001906102969190610c80565b6040516102a4929190610bb8565b6040518091039020146102e3576040517fb473eb0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b806102f0610681565b3073ffffffffffffffffffffffffffffffffffffffff1681600001602081019061031a919061092b565b73ffffffffffffffffffffffffffffffffffffffff1614610367576040517fc03e9c3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008160200135146103c4576040517fc03e9c3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6103d0610713565b81816002600086815260200190815260200160002091906103f29291906107ca565b50505050565b610400610713565b61040a6000610791565b565b60006104166107c2565b90508073ffffffffffffffffffffffffffffffffffffffff166104376104e6565b73ffffffffffffffffffffffffffffffffffffffff161461048d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048490610c40565b60405180910390fd5b61049681610791565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610518610713565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff166105786104bd565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461071157336040517fcbd9d2e00000000000000000000000000000000000000000000000000000000081526004016107089190610be8565b60405180910390fd5b565b61071b6107c2565b73ffffffffffffffffffffffffffffffffffffffff166107396104bd565b73ffffffffffffffffffffffffffffffffffffffff161461078f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690610c60565b60405180910390fd5b565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556107bf816105bd565b50565b600033905090565b8280546107d690610de4565b90600052602060002090601f0160209004810192826107f8576000855561083f565b82601f1061081157803560ff191683800117855561083f565b8280016001018555821561083f579182015b8281111561083e578235825591602001919060010190610823565b5b50905061084c9190610850565b5090565b5b80821115610869576000816000905550600101610851565b5090565b60008135905061087c81610efb565b92915050565b60008083601f84011261089857610897610e4a565b5b8235905067ffffffffffffffff8111156108b5576108b4610e45565b5b6020830191508360018202830111156108d1576108d0610e5e565b5b9250929050565b600060a082840312156108ee576108ed610e54565b5b81905092915050565b600060c0828403121561090d5761090c610e54565b5b81905092915050565b60008135905061092581610f12565b92915050565b60006020828403121561094157610940610e6d565b5b600061094f8482850161086d565b91505092915050565b60006020828403121561096e5761096d610e6d565b5b600082013567ffffffffffffffff81111561098c5761098b610e68565b5b610998848285016108d8565b91505092915050565b6000602082840312156109b7576109b6610e6d565b5b600082013567ffffffffffffffff8111156109d5576109d4610e68565b5b6109e1848285016108f7565b91505092915050565b600060208284031215610a00576109ff610e6d565b5b6000610a0e84828501610916565b91505092915050565b600080600060408486031215610a3057610a2f610e6d565b5b6000610a3e86828701610916565b935050602084013567ffffffffffffffff811115610a5f57610a5e610e68565b5b610a6b86828701610882565b92509250509250925092565b610a8081610d30565b82525050565b6000610a928385610d14565b9350610a9f838584610da2565b82840190509392505050565b6000610ab682610cf8565b610ac08185610d03565b9350610ad0818560208601610db1565b610ad981610e72565b840191505092915050565b60008154610af181610de4565b610afb8186610d14565b94506001821660008114610b165760018114610b2757610b5a565b60ff19831686528186019350610b5a565b610b3085610ce3565b60005b83811015610b5257815481890152600182019150602081019050610b33565b838801955050505b50505092915050565b610b6c81610d6c565b82525050565b6000610b7f602983610d1f565b9150610b8a82610e83565b604082019050919050565b6000610ba2602083610d1f565b9150610bad82610ed2565b602082019050919050565b6000610bc5828486610a86565b91508190509392505050565b6000610bdd8284610ae4565b915081905092915050565b6000602082019050610bfd6000830184610a77565b92915050565b60006020820190508181036000830152610c1d8184610aab565b905092915050565b6000602082019050610c3a6000830184610b63565b92915050565b60006020820190508181036000830152610c5981610b72565b9050919050565b60006020820190508181036000830152610c7981610b95565b9050919050565b60008083356001602003843603038112610c9d57610c9c610e59565b5b80840192508235915067ffffffffffffffff821115610cbf57610cbe610e4f565b5b602083019250600182023603831315610cdb57610cda610e63565b5b509250929050565b60008190508160005260206000209050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610d3b82610d42565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610d7782610d7e565b9050919050565b6000610d8982610d90565b9050919050565b6000610d9b82610d42565b9050919050565b82818337600083830152505050565b60005b83811015610dcf578082015181840152602081019050610db4565b83811115610dde576000848401525b50505050565b60006002820490506001821680610dfc57607f821691505b60208210811415610e1057610e0f610e16565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060008201527f6e6577206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b610f0481610d30565b8114610f0f57600080fd5b50565b610f1b81610d62565b8114610f2657600080fd5b5056fea26469706673582212206999e36457fead1d5e7b5a125ef2e0a49dcff212174326676d6fd53cff4e990364736f6c63430008070033", + Bin: "0x60c06040523480156200001157600080fd5b50604051620011dc380380620011dc833981810160405281019062000037919062000228565b80620000586200004c6200010760201b60201c565b6200010f60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000c0576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b46608081815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620002ad565b600033905090565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556200014a816200014d60201b620005601760201c565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620002228162000293565b92915050565b6000602082840312156200024157620002406200028e565b5b6000620002518482850162000211565b91505092915050565b600062000267826200026e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200029e816200025a565b8114620002aa57600080fd5b50565b60805160a05160601c610f02620002da6000396000818161043e0152610626015260005050610f026000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806379ba50971161006657806379ba50971461013157806383f3084f1461013b5780638da5cb5b14610159578063e30c397814610177578063f2fde38b146101955761009e565b80632618143f146100a35780633749c51a146100d35780633ff0693c146100ef5780634fd3f7d71461010b578063715018a614610127575b600080fd5b6100bd60048036038101906100b8919061098d565b6101b1565b6040516100ca9190610ba6565b60405180910390f35b6100ed60048036038101906100e891906108fb565b610251565b005b61010960048036038101906101049190610944565b6102e7565b005b610125600480360381019061012091906109ba565b61036b565b005b61012f61039b565b005b6101396103af565b005b61014361043c565b6040516101509190610bc8565b60405180910390f35b610161610460565b60405161016e9190610b8b565b60405180910390f35b61017f610489565b60405161018c9190610b8b565b60405180910390f35b6101af60048036038101906101aa91906108ce565b6104b3565b005b600260205280600052604060002060009150905080546101d090610d87565b80601f01602080910402602001604051908101604052809291908181526020018280546101fc90610d87565b80156102495780601f1061021e57610100808354040283529160200191610249565b820191906000526020600020905b81548152906001019060200180831161022c57829003601f168201915b505050505081565b8061025a610624565b600260008260200135815260200190815260200160002060405161027e9190610b74565b60405180910390208180600001906102969190610c23565b6040516102a4929190610b5b565b6040518091039020146102e3576040517fb473eb0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b806102f0610624565b3073ffffffffffffffffffffffffffffffffffffffff1681600001602081019061031a91906108ce565b73ffffffffffffffffffffffffffffffffffffffff1614610367576040517fc03e9c3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6103736106b6565b818160026000868152602001908152602001600020919061039592919061076d565b50505050565b6103a36106b6565b6103ad6000610734565b565b60006103b9610765565b90508073ffffffffffffffffffffffffffffffffffffffff166103da610489565b73ffffffffffffffffffffffffffffffffffffffff1614610430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042790610be3565b60405180910390fd5b61043981610734565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6104bb6106b6565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1661051b610460565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b457336040517fcbd9d2e00000000000000000000000000000000000000000000000000000000081526004016106ab9190610b8b565b60405180910390fd5b565b6106be610765565b73ffffffffffffffffffffffffffffffffffffffff166106dc610460565b73ffffffffffffffffffffffffffffffffffffffff1614610732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072990610c03565b60405180910390fd5b565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905561076281610560565b50565b600033905090565b82805461077990610d87565b90600052602060002090601f01602090048101928261079b57600085556107e2565b82601f106107b457803560ff19168380011785556107e2565b828001600101855582156107e2579182015b828111156107e15782358255916020019190600101906107c6565b5b5090506107ef91906107f3565b5090565b5b8082111561080c5760008160009055506001016107f4565b5090565b60008135905061081f81610e9e565b92915050565b60008083601f84011261083b5761083a610ded565b5b8235905067ffffffffffffffff81111561085857610857610de8565b5b60208301915083600182028301111561087457610873610e01565b5b9250929050565b600060a0828403121561089157610890610df7565b5b81905092915050565b600060c082840312156108b0576108af610df7565b5b81905092915050565b6000813590506108c881610eb5565b92915050565b6000602082840312156108e4576108e3610e10565b5b60006108f284828501610810565b91505092915050565b60006020828403121561091157610910610e10565b5b600082013567ffffffffffffffff81111561092f5761092e610e0b565b5b61093b8482850161087b565b91505092915050565b60006020828403121561095a57610959610e10565b5b600082013567ffffffffffffffff81111561097857610977610e0b565b5b6109848482850161089a565b91505092915050565b6000602082840312156109a3576109a2610e10565b5b60006109b1848285016108b9565b91505092915050565b6000806000604084860312156109d3576109d2610e10565b5b60006109e1868287016108b9565b935050602084013567ffffffffffffffff811115610a0257610a01610e0b565b5b610a0e86828701610825565b92509250509250925092565b610a2381610cd3565b82525050565b6000610a358385610cb7565b9350610a42838584610d45565b82840190509392505050565b6000610a5982610c9b565b610a638185610ca6565b9350610a73818560208601610d54565b610a7c81610e15565b840191505092915050565b60008154610a9481610d87565b610a9e8186610cb7565b94506001821660008114610ab95760018114610aca57610afd565b60ff19831686528186019350610afd565b610ad385610c86565b60005b83811015610af557815481890152600182019150602081019050610ad6565b838801955050505b50505092915050565b610b0f81610d0f565b82525050565b6000610b22602983610cc2565b9150610b2d82610e26565b604082019050919050565b6000610b45602083610cc2565b9150610b5082610e75565b602082019050919050565b6000610b68828486610a29565b91508190509392505050565b6000610b808284610a87565b915081905092915050565b6000602082019050610ba06000830184610a1a565b92915050565b60006020820190508181036000830152610bc08184610a4e565b905092915050565b6000602082019050610bdd6000830184610b06565b92915050565b60006020820190508181036000830152610bfc81610b15565b9050919050565b60006020820190508181036000830152610c1c81610b38565b9050919050565b60008083356001602003843603038112610c4057610c3f610dfc565b5b80840192508235915067ffffffffffffffff821115610c6257610c61610df2565b5b602083019250600182023603831315610c7e57610c7d610e06565b5b509250929050565b60008190508160005260206000209050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610cde82610ce5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610d1a82610d21565b9050919050565b6000610d2c82610d33565b9050919050565b6000610d3e82610ce5565b9050919050565b82818337600083830152505050565b60005b83811015610d72578082015181840152602081019050610d57565b83811115610d81576000848401525b50505050565b60006002820490506001821680610d9f57607f821691505b60208210811415610db357610db2610db9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060008201527f6e6577206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b610ea781610cd3565b8114610eb257600080fd5b50565b610ebe81610d05565b8114610ec957600080fd5b5056fea264697066735822122063babae00441a1f6e87dfa1b12f25265331734088794be43384b60938347fc3864736f6c63430008070033", } // ZetaInteractorMockABI is the input ABI used to generate the binding from. diff --git a/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/iswaprouterpancake.go b/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/iswaprouterpancake.go new file mode 100644 index 00000000..df6236ee --- /dev/null +++ b/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/iswaprouterpancake.go @@ -0,0 +1,263 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetatokenconsumerpancakev3 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ISwapRouterPancakeExactInputParams is an auto generated low-level Go binding around an user-defined struct. +type ISwapRouterPancakeExactInputParams struct { + Path []byte + Recipient common.Address + AmountIn *big.Int + AmountOutMinimum *big.Int +} + +// ISwapRouterPancakeExactInputSingleParams is an auto generated low-level Go binding around an user-defined struct. +type ISwapRouterPancakeExactInputSingleParams struct { + TokenIn common.Address + TokenOut common.Address + Fee *big.Int + Recipient common.Address + AmountIn *big.Int + AmountOutMinimum *big.Int + SqrtPriceLimitX96 *big.Int +} + +// ISwapRouterPancakeMetaData contains all meta data concerning the ISwapRouterPancake contract. +var ISwapRouterPancakeMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"bytes\",\"name\":\"path\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"}],\"internalType\":\"structISwapRouterPancake.ExactInputParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInput\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenOut\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"fee\",\"type\":\"uint24\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMinimum\",\"type\":\"uint256\"},{\"internalType\":\"uint160\",\"name\":\"sqrtPriceLimitX96\",\"type\":\"uint160\"}],\"internalType\":\"structISwapRouterPancake.ExactInputSingleParams\",\"name\":\"params\",\"type\":\"tuple\"}],\"name\":\"exactInputSingle\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int256\",\"name\":\"amount0Delta\",\"type\":\"int256\"},{\"internalType\":\"int256\",\"name\":\"amount1Delta\",\"type\":\"int256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"uniswapV3SwapCallback\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// ISwapRouterPancakeABI is the input ABI used to generate the binding from. +// Deprecated: Use ISwapRouterPancakeMetaData.ABI instead. +var ISwapRouterPancakeABI = ISwapRouterPancakeMetaData.ABI + +// ISwapRouterPancake is an auto generated Go binding around an Ethereum contract. +type ISwapRouterPancake struct { + ISwapRouterPancakeCaller // Read-only binding to the contract + ISwapRouterPancakeTransactor // Write-only binding to the contract + ISwapRouterPancakeFilterer // Log filterer for contract events +} + +// ISwapRouterPancakeCaller is an auto generated read-only Go binding around an Ethereum contract. +type ISwapRouterPancakeCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ISwapRouterPancakeTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ISwapRouterPancakeTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ISwapRouterPancakeFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ISwapRouterPancakeFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ISwapRouterPancakeSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ISwapRouterPancakeSession struct { + Contract *ISwapRouterPancake // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ISwapRouterPancakeCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ISwapRouterPancakeCallerSession struct { + Contract *ISwapRouterPancakeCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ISwapRouterPancakeTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ISwapRouterPancakeTransactorSession struct { + Contract *ISwapRouterPancakeTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ISwapRouterPancakeRaw is an auto generated low-level Go binding around an Ethereum contract. +type ISwapRouterPancakeRaw struct { + Contract *ISwapRouterPancake // Generic contract binding to access the raw methods on +} + +// ISwapRouterPancakeCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ISwapRouterPancakeCallerRaw struct { + Contract *ISwapRouterPancakeCaller // Generic read-only contract binding to access the raw methods on +} + +// ISwapRouterPancakeTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ISwapRouterPancakeTransactorRaw struct { + Contract *ISwapRouterPancakeTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewISwapRouterPancake creates a new instance of ISwapRouterPancake, bound to a specific deployed contract. +func NewISwapRouterPancake(address common.Address, backend bind.ContractBackend) (*ISwapRouterPancake, error) { + contract, err := bindISwapRouterPancake(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ISwapRouterPancake{ISwapRouterPancakeCaller: ISwapRouterPancakeCaller{contract: contract}, ISwapRouterPancakeTransactor: ISwapRouterPancakeTransactor{contract: contract}, ISwapRouterPancakeFilterer: ISwapRouterPancakeFilterer{contract: contract}}, nil +} + +// NewISwapRouterPancakeCaller creates a new read-only instance of ISwapRouterPancake, bound to a specific deployed contract. +func NewISwapRouterPancakeCaller(address common.Address, caller bind.ContractCaller) (*ISwapRouterPancakeCaller, error) { + contract, err := bindISwapRouterPancake(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ISwapRouterPancakeCaller{contract: contract}, nil +} + +// NewISwapRouterPancakeTransactor creates a new write-only instance of ISwapRouterPancake, bound to a specific deployed contract. +func NewISwapRouterPancakeTransactor(address common.Address, transactor bind.ContractTransactor) (*ISwapRouterPancakeTransactor, error) { + contract, err := bindISwapRouterPancake(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ISwapRouterPancakeTransactor{contract: contract}, nil +} + +// NewISwapRouterPancakeFilterer creates a new log filterer instance of ISwapRouterPancake, bound to a specific deployed contract. +func NewISwapRouterPancakeFilterer(address common.Address, filterer bind.ContractFilterer) (*ISwapRouterPancakeFilterer, error) { + contract, err := bindISwapRouterPancake(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ISwapRouterPancakeFilterer{contract: contract}, nil +} + +// bindISwapRouterPancake binds a generic wrapper to an already deployed contract. +func bindISwapRouterPancake(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ISwapRouterPancakeMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ISwapRouterPancake *ISwapRouterPancakeRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ISwapRouterPancake.Contract.ISwapRouterPancakeCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ISwapRouterPancake *ISwapRouterPancakeRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ISwapRouterPancake.Contract.ISwapRouterPancakeTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ISwapRouterPancake *ISwapRouterPancakeRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ISwapRouterPancake.Contract.ISwapRouterPancakeTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ISwapRouterPancake *ISwapRouterPancakeCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ISwapRouterPancake.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ISwapRouterPancake *ISwapRouterPancakeTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ISwapRouterPancake.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ISwapRouterPancake *ISwapRouterPancakeTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ISwapRouterPancake.Contract.contract.Transact(opts, method, params...) +} + +// ExactInput is a paid mutator transaction binding the contract method 0xb858183f. +// +// Solidity: function exactInput((bytes,address,uint256,uint256) params) payable returns(uint256 amountOut) +func (_ISwapRouterPancake *ISwapRouterPancakeTransactor) ExactInput(opts *bind.TransactOpts, params ISwapRouterPancakeExactInputParams) (*types.Transaction, error) { + return _ISwapRouterPancake.contract.Transact(opts, "exactInput", params) +} + +// ExactInput is a paid mutator transaction binding the contract method 0xb858183f. +// +// Solidity: function exactInput((bytes,address,uint256,uint256) params) payable returns(uint256 amountOut) +func (_ISwapRouterPancake *ISwapRouterPancakeSession) ExactInput(params ISwapRouterPancakeExactInputParams) (*types.Transaction, error) { + return _ISwapRouterPancake.Contract.ExactInput(&_ISwapRouterPancake.TransactOpts, params) +} + +// ExactInput is a paid mutator transaction binding the contract method 0xb858183f. +// +// Solidity: function exactInput((bytes,address,uint256,uint256) params) payable returns(uint256 amountOut) +func (_ISwapRouterPancake *ISwapRouterPancakeTransactorSession) ExactInput(params ISwapRouterPancakeExactInputParams) (*types.Transaction, error) { + return _ISwapRouterPancake.Contract.ExactInput(&_ISwapRouterPancake.TransactOpts, params) +} + +// ExactInputSingle is a paid mutator transaction binding the contract method 0x04e45aaf. +// +// Solidity: function exactInputSingle((address,address,uint24,address,uint256,uint256,uint160) params) payable returns(uint256 amountOut) +func (_ISwapRouterPancake *ISwapRouterPancakeTransactor) ExactInputSingle(opts *bind.TransactOpts, params ISwapRouterPancakeExactInputSingleParams) (*types.Transaction, error) { + return _ISwapRouterPancake.contract.Transact(opts, "exactInputSingle", params) +} + +// ExactInputSingle is a paid mutator transaction binding the contract method 0x04e45aaf. +// +// Solidity: function exactInputSingle((address,address,uint24,address,uint256,uint256,uint160) params) payable returns(uint256 amountOut) +func (_ISwapRouterPancake *ISwapRouterPancakeSession) ExactInputSingle(params ISwapRouterPancakeExactInputSingleParams) (*types.Transaction, error) { + return _ISwapRouterPancake.Contract.ExactInputSingle(&_ISwapRouterPancake.TransactOpts, params) +} + +// ExactInputSingle is a paid mutator transaction binding the contract method 0x04e45aaf. +// +// Solidity: function exactInputSingle((address,address,uint24,address,uint256,uint256,uint160) params) payable returns(uint256 amountOut) +func (_ISwapRouterPancake *ISwapRouterPancakeTransactorSession) ExactInputSingle(params ISwapRouterPancakeExactInputSingleParams) (*types.Transaction, error) { + return _ISwapRouterPancake.Contract.ExactInputSingle(&_ISwapRouterPancake.TransactOpts, params) +} + +// UniswapV3SwapCallback is a paid mutator transaction binding the contract method 0xfa461e33. +// +// Solidity: function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data) returns() +func (_ISwapRouterPancake *ISwapRouterPancakeTransactor) UniswapV3SwapCallback(opts *bind.TransactOpts, amount0Delta *big.Int, amount1Delta *big.Int, data []byte) (*types.Transaction, error) { + return _ISwapRouterPancake.contract.Transact(opts, "uniswapV3SwapCallback", amount0Delta, amount1Delta, data) +} + +// UniswapV3SwapCallback is a paid mutator transaction binding the contract method 0xfa461e33. +// +// Solidity: function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data) returns() +func (_ISwapRouterPancake *ISwapRouterPancakeSession) UniswapV3SwapCallback(amount0Delta *big.Int, amount1Delta *big.Int, data []byte) (*types.Transaction, error) { + return _ISwapRouterPancake.Contract.UniswapV3SwapCallback(&_ISwapRouterPancake.TransactOpts, amount0Delta, amount1Delta, data) +} + +// UniswapV3SwapCallback is a paid mutator transaction binding the contract method 0xfa461e33. +// +// Solidity: function uniswapV3SwapCallback(int256 amount0Delta, int256 amount1Delta, bytes data) returns() +func (_ISwapRouterPancake *ISwapRouterPancakeTransactorSession) UniswapV3SwapCallback(amount0Delta *big.Int, amount1Delta *big.Int, data []byte) (*types.Transaction, error) { + return _ISwapRouterPancake.Contract.UniswapV3SwapCallback(&_ISwapRouterPancake.TransactOpts, amount0Delta, amount1Delta, data) +} diff --git a/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/weth9.go b/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/weth9.go new file mode 100644 index 00000000..9268e000 --- /dev/null +++ b/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/weth9.go @@ -0,0 +1,202 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetatokenconsumerpancakev3 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// WETH9MetaData contains all meta data concerning the WETH9 contract. +var WETH9MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// WETH9ABI is the input ABI used to generate the binding from. +// Deprecated: Use WETH9MetaData.ABI instead. +var WETH9ABI = WETH9MetaData.ABI + +// WETH9 is an auto generated Go binding around an Ethereum contract. +type WETH9 struct { + WETH9Caller // Read-only binding to the contract + WETH9Transactor // Write-only binding to the contract + WETH9Filterer // Log filterer for contract events +} + +// WETH9Caller is an auto generated read-only Go binding around an Ethereum contract. +type WETH9Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WETH9Transactor is an auto generated write-only Go binding around an Ethereum contract. +type WETH9Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WETH9Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type WETH9Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// WETH9Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type WETH9Session struct { + Contract *WETH9 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// WETH9CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type WETH9CallerSession struct { + Contract *WETH9Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// WETH9TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type WETH9TransactorSession struct { + Contract *WETH9Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// WETH9Raw is an auto generated low-level Go binding around an Ethereum contract. +type WETH9Raw struct { + Contract *WETH9 // Generic contract binding to access the raw methods on +} + +// WETH9CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type WETH9CallerRaw struct { + Contract *WETH9Caller // Generic read-only contract binding to access the raw methods on +} + +// WETH9TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type WETH9TransactorRaw struct { + Contract *WETH9Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewWETH9 creates a new instance of WETH9, bound to a specific deployed contract. +func NewWETH9(address common.Address, backend bind.ContractBackend) (*WETH9, error) { + contract, err := bindWETH9(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &WETH9{WETH9Caller: WETH9Caller{contract: contract}, WETH9Transactor: WETH9Transactor{contract: contract}, WETH9Filterer: WETH9Filterer{contract: contract}}, nil +} + +// NewWETH9Caller creates a new read-only instance of WETH9, bound to a specific deployed contract. +func NewWETH9Caller(address common.Address, caller bind.ContractCaller) (*WETH9Caller, error) { + contract, err := bindWETH9(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &WETH9Caller{contract: contract}, nil +} + +// NewWETH9Transactor creates a new write-only instance of WETH9, bound to a specific deployed contract. +func NewWETH9Transactor(address common.Address, transactor bind.ContractTransactor) (*WETH9Transactor, error) { + contract, err := bindWETH9(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &WETH9Transactor{contract: contract}, nil +} + +// NewWETH9Filterer creates a new log filterer instance of WETH9, bound to a specific deployed contract. +func NewWETH9Filterer(address common.Address, filterer bind.ContractFilterer) (*WETH9Filterer, error) { + contract, err := bindWETH9(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &WETH9Filterer{contract: contract}, nil +} + +// bindWETH9 binds a generic wrapper to an already deployed contract. +func bindWETH9(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := WETH9MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_WETH9 *WETH9Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _WETH9.Contract.WETH9Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_WETH9 *WETH9Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WETH9.Contract.WETH9Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_WETH9 *WETH9Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _WETH9.Contract.WETH9Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_WETH9 *WETH9CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _WETH9.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_WETH9 *WETH9TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _WETH9.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_WETH9 *WETH9TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _WETH9.Contract.contract.Transact(opts, method, params...) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_WETH9 *WETH9Transactor) Withdraw(opts *bind.TransactOpts, wad *big.Int) (*types.Transaction, error) { + return _WETH9.contract.Transact(opts, "withdraw", wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_WETH9 *WETH9Session) Withdraw(wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.Withdraw(&_WETH9.TransactOpts, wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_WETH9 *WETH9TransactorSession) Withdraw(wad *big.Int) (*types.Transaction, error) { + return _WETH9.Contract.Withdraw(&_WETH9.TransactOpts, wad) +} diff --git a/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/zetatokenconsumerpancakev3.go b/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/zetatokenconsumerpancakev3.go new file mode 100644 index 00000000..53cdb729 --- /dev/null +++ b/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/zetatokenconsumerpancakev3.go @@ -0,0 +1,1067 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetatokenconsumerpancakev3 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaTokenConsumerPancakeV3MetaData contains all meta data concerning the ZetaTokenConsumerPancakeV3 contract. +var ZetaTokenConsumerPancakeV3MetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pancakeV3Router_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapV3Factory_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"WETH9Address_\",\"type\":\"address\"},{\"internalType\":\"uint24\",\"name\":\"zetaPoolFee_\",\"type\":\"uint24\"},{\"internalType\":\"uint24\",\"name\":\"tokenPoolFee_\",\"type\":\"uint24\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"ErrorSendingETH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"EthExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"TokenExchangedForZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForEth\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"ZetaExchangedForToken\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"WETH9Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getEthFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"outputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getTokenFromZeta\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"}],\"name\":\"getZetaFromEth\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"minAmountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"inputToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"inputTokenAmount\",\"type\":\"uint256\"}],\"name\":\"getZetaFromToken\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"hasZetaLiquidity\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pancakeV3Router\",\"outputs\":[{\"internalType\":\"contractISwapRouterPancake\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenPoolFee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapV3Factory\",\"outputs\":[{\"internalType\":\"contractIUniswapV3Factory\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaPoolFee\",\"outputs\":[{\"internalType\":\"uint24\",\"name\":\"\",\"type\":\"uint24\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x6101406040523480156200001257600080fd5b506040516200288c3803806200288c83398181016040528101906200003891906200028a565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480620000a05750600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80620000d85750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80620001105750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1562000148576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508473ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff1660601b815250508373ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508162ffffff1660808162ffffff1660e81b815250508062ffffff1660a08162ffffff1660e81b81525050505050505050620003a2565b6000815190506200026d816200036e565b92915050565b600081519050620002848162000388565b92915050565b60008060008060008060c08789031215620002aa57620002a962000369565b5b6000620002ba89828a016200025c565b9650506020620002cd89828a016200025c565b9550506040620002e089828a016200025c565b9450506060620002f389828a016200025c565b93505060806200030689828a0162000273565b92505060a06200031989828a0162000273565b9150509295509295509295565b600062000333826200033a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b600080fd5b620003798162000326565b81146200038557600080fd5b50565b62000393816200035a565b81146200039f57600080fd5b50565b60805160e81c60a05160e81c60c05160601c60e05160601c6101005160601c6101205160601c6123b6620004d660003960008181610d340152610d7f01526000818161045c0152818161067c015281816107a8015281816109b401528181610b13015281816110f80152818161124401526113530152600081816103ae0152818161054e015281816107350152818161096a015281816109d601528181610a2901528181610ddc015281816110ae0152818161111a015261116d015260008181610372015281816106f301528181610a6501528181610bc001528181610dbb015281816111af01526113770152600081816106d201528181610d5801526111d00152600081816103ea015281816107140152818161089d01528181610aa101528181610dfd015261118e01526123b66000f3fe6080604052600436106100a05760003560e01c80635b549182116100645780635b549182146101ac5780635d9dfdde146101d757806380801f8414610202578063a53fb10b1461022d578063c27745dd1461026a578063c469cf1414610295576100a7565b8063013b2ff8146100ac57806321e093b1146100dc5780632405620a146101075780633cbd70051461014457806354c49a2a1461016f576100a7565b366100a757005b600080fd5b6100c660048036038101906100c191906118c0565b6102c0565b6040516100d39190612030565b60405180910390f35b3480156100e857600080fd5b506100f161054c565b6040516100fe9190611dd3565b60405180910390f35b34801561011357600080fd5b5061012e60048036038101906101299190611900565b610570565b60405161013b9190612030565b60405180910390f35b34801561015057600080fd5b5061015961089b565b6040516101669190612015565b60405180910390f35b34801561017b57600080fd5b5061019660048036038101906101919190611967565b6108bf565b6040516101a39190612030565b60405180910390f35b3480156101b857600080fd5b506101c1610d32565b6040516101ce9190611f1b565b60405180910390f35b3480156101e357600080fd5b506101ec610d56565b6040516101f99190612015565b60405180910390f35b34801561020e57600080fd5b50610217610d7a565b6040516102249190611ee5565b60405180910390f35b34801561023957600080fd5b50610254600480360381019061024f9190611900565b610f6b565b6040516102619190612030565b60405180910390f35b34801561027657600080fd5b5061027f611351565b60405161028c9190611f00565b60405180910390f35b3480156102a157600080fd5b506102aa611375565b6040516102b79190611dd3565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610328576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000341415610363576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060e001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001348152602001848152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166304e45aaf34846040518363ffffffff1660e01b81526004016104b49190611ffa565b6020604051808303818588803b1580156104cd57600080fd5b505af11580156104e1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906105069190611a14565b90507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161053992919061204b565b60405180910390a1809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105d85750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561060f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561064a576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106773330848673ffffffffffffffffffffffffffffffffffffffff16611399909392919063ffffffff16565b6106c27f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166114229092919063ffffffff16565b60006040518060800160405280857f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000604051602001610768959493929190611d48565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b858183f836040518263ffffffff1660e01b81526004016107ff9190611fd8565b602060405180830381600087803b15801561081957600080fd5b505af115801561082d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108519190611a14565b90507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f85858360405161088693929190611eae565b60405180910390a18092505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610927576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610962576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109af3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611399909392919063ffffffff16565b610a1a7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166114229092919063ffffffff16565b60006040518060e001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001848152602001858152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166304e45aaf836040518263ffffffff1660e01b8152600401610b6a9190611ffa565b602060405180830381600087803b158015610b8457600080fd5b505af1158015610b98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbc9190611a14565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401610c179190612030565b600060405180830381600087803b158015610c3157600080fd5b505af1158015610c45573d6000803e3d6000fd5b505050507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8482604051610c7a92919061204b565b60405180910390a160008673ffffffffffffffffffffffffffffffffffffffff1682604051610ca890611dbe565b60006040518083038185875af1925050503d8060008114610ce5576040519150601f19603f3d011682016040523d82523d6000602084013e610cea565b606091505b5050905080610d25576040517f3794aeaf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8193505050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631698ee827f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518463ffffffff1660e01b8152600401610e3a93929190611e17565b60206040518083038186803b158015610e5257600080fd5b505afa158015610e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8a9190611893565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ecb576000915050610f68565b600081905060008173ffffffffffffffffffffffffffffffffffffffff16631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1857600080fd5b505afa158015610f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5091906119e7565b6fffffffffffffffffffffffffffffffff1611925050505b90565b60008060009054906101000a900460ff1615610fb3576040517f29f745a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110345750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561106b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156110a6576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110f33330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611399909392919063ffffffff16565b61115e7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166114229092919063ffffffff16565b600060405180608001604052807f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089604051602001611204959493929190611d48565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b858183f836040518263ffffffff1660e01b815260040161129b9190611fd8565b602060405180830381600087803b1580156112b557600080fd5b505af11580156112c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ed9190611a14565b90507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b85858360405161132293929190611eae565b60405180910390a1809250505060008060006101000a81548160ff021916908315150217905550949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b61141c846323b872dd60e01b8585856040516024016113ba93929190611e4e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611580565b50505050565b60008114806114bb575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401611469929190611dee565b60206040518083038186803b15801561148157600080fd5b505afa158015611495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b99190611a14565b145b6114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f190611fb8565b60405180910390fd5b61157b8363095ea7b360e01b8484604051602401611519929190611e85565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611580565b505050565b60006115e2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116479092919063ffffffff16565b9050600081511115611642578080602001905181019061160291906119ba565b611641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163890611f98565b60405180910390fd5b5b505050565b6060611656848460008561165f565b90509392505050565b6060824710156116a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169b90611f58565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516116cd9190611da7565b60006040518083038185875af1925050503d806000811461170a576040519150601f19603f3d011682016040523d82523d6000602084013e61170f565b606091505b50915091506117208783838761172c565b92505050949350505050565b6060831561178f5760008351141561178757611747856117a2565b611786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177d90611f78565b60405180910390fd5b5b82905061179a565b61179983836117c5565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156117d85781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180c9190611f36565b60405180910390fd5b60008135905061182481612324565b92915050565b60008151905061183981612324565b92915050565b60008151905061184e8161233b565b92915050565b60008151905061186381612352565b92915050565b60008135905061187881612369565b92915050565b60008151905061188d81612369565b92915050565b6000602082840312156118a9576118a86121db565b5b60006118b78482850161182a565b91505092915050565b600080604083850312156118d7576118d66121db565b5b60006118e585828601611815565b92505060206118f685828601611869565b9150509250929050565b6000806000806080858703121561191a576119196121db565b5b600061192887828801611815565b945050602061193987828801611869565b935050604061194a87828801611815565b925050606061195b87828801611869565b91505092959194509250565b6000806000606084860312156119805761197f6121db565b5b600061198e86828701611815565b935050602061199f86828701611869565b92505060406119b086828701611869565b9150509250925092565b6000602082840312156119d0576119cf6121db565b5b60006119de8482850161183f565b91505092915050565b6000602082840312156119fd576119fc6121db565b5b6000611a0b84828501611854565b91505092915050565b600060208284031215611a2a57611a296121db565b5b6000611a388482850161187e565b91505092915050565b611a4a816120b7565b82525050565b611a59816120b7565b82525050565b611a70611a6b826120b7565b6121a5565b82525050565b611a7f816120c9565b82525050565b6000611a9082612074565b611a9a818561208a565b9350611aaa818560208601612172565b611ab3816121e0565b840191505092915050565b6000611ac982612074565b611ad3818561209b565b9350611ae3818560208601612172565b80840191505092915050565b611af88161212a565b82525050565b611b078161213c565b82525050565b6000611b188261207f565b611b2281856120a6565b9350611b32818560208601612172565b611b3b816121e0565b840191505092915050565b6000611b536026836120a6565b9150611b5e8261220b565b604082019050919050565b6000611b7660008361209b565b9150611b818261225a565b600082019050919050565b6000611b99601d836120a6565b9150611ba48261225d565b602082019050919050565b6000611bbc602a836120a6565b9150611bc782612286565b604082019050919050565b6000611bdf6036836120a6565b9150611bea826122d5565b604082019050919050565b60006080830160008301518482036000860152611c128282611a85565b9150506020830151611c276020860182611a41565b506040830151611c3a6040860182611d2a565b506060830151611c4d6060860182611d2a565b508091505092915050565b60e082016000820151611c6e6000850182611a41565b506020820151611c816020850182611a41565b506040820151611c946040850182611cf5565b506060820151611ca76060850182611a41565b506080820151611cba6080850182611d2a565b5060a0820151611ccd60a0850182611d2a565b5060c0820151611ce060c0850182611ce6565b50505050565b611cef816120f1565b82525050565b611cfe81612111565b82525050565b611d0d81612111565b82525050565b611d24611d1f82612111565b6121c9565b82525050565b611d3381612120565b82525050565b611d4281612120565b82525050565b6000611d548288611a5f565b601482019150611d648287611d13565b600382019150611d748286611a5f565b601482019150611d848285611d13565b600382019150611d948284611a5f565b6014820191508190509695505050505050565b6000611db38284611abe565b915081905092915050565b6000611dc982611b69565b9150819050919050565b6000602082019050611de86000830184611a50565b92915050565b6000604082019050611e036000830185611a50565b611e106020830184611a50565b9392505050565b6000606082019050611e2c6000830186611a50565b611e396020830185611a50565b611e466040830184611d04565b949350505050565b6000606082019050611e636000830186611a50565b611e706020830185611a50565b611e7d6040830184611d39565b949350505050565b6000604082019050611e9a6000830185611a50565b611ea76020830184611d39565b9392505050565b6000606082019050611ec36000830186611a50565b611ed06020830185611d39565b611edd6040830184611d39565b949350505050565b6000602082019050611efa6000830184611a76565b92915050565b6000602082019050611f156000830184611aef565b92915050565b6000602082019050611f306000830184611afe565b92915050565b60006020820190508181036000830152611f508184611b0d565b905092915050565b60006020820190508181036000830152611f7181611b46565b9050919050565b60006020820190508181036000830152611f9181611b8c565b9050919050565b60006020820190508181036000830152611fb181611baf565b9050919050565b60006020820190508181036000830152611fd181611bd2565b9050919050565b60006020820190508181036000830152611ff28184611bf5565b905092915050565b600060e08201905061200f6000830184611c58565b92915050565b600060208201905061202a6000830184611d04565b92915050565b60006020820190506120456000830184611d39565b92915050565b60006040820190506120606000830185611d39565b61206d6020830184611d39565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006120c2826120f1565b9050919050565b60008115159050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b6000819050919050565b60006121358261214e565b9050919050565b60006121478261214e565b9050919050565b600061215982612160565b9050919050565b600061216b826120f1565b9050919050565b60005b83811015612190578082015181840152602081019050612175565b8381111561219f576000848401525b50505050565b60006121b0826121b7565b9050919050565b60006121c2826121fe565b9050919050565b60006121d4826121f1565b9050919050565b600080fd5b6000601f19601f8301169050919050565b60008160e81b9050919050565b60008160601b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b61232d816120b7565b811461233857600080fd5b50565b612344816120c9565b811461234f57600080fd5b50565b61235b816120d5565b811461236657600080fd5b50565b61237281612120565b811461237d57600080fd5b5056fea264697066735822122027f90d12abe6bc83d01268f9d1f2b1f06cb3a1291fe43afcacc978ec0c07420664736f6c63430008070033", +} + +// ZetaTokenConsumerPancakeV3ABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaTokenConsumerPancakeV3MetaData.ABI instead. +var ZetaTokenConsumerPancakeV3ABI = ZetaTokenConsumerPancakeV3MetaData.ABI + +// ZetaTokenConsumerPancakeV3Bin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use ZetaTokenConsumerPancakeV3MetaData.Bin instead. +var ZetaTokenConsumerPancakeV3Bin = ZetaTokenConsumerPancakeV3MetaData.Bin + +// DeployZetaTokenConsumerPancakeV3 deploys a new Ethereum contract, binding an instance of ZetaTokenConsumerPancakeV3 to it. +func DeployZetaTokenConsumerPancakeV3(auth *bind.TransactOpts, backend bind.ContractBackend, zetaToken_ common.Address, pancakeV3Router_ common.Address, uniswapV3Factory_ common.Address, WETH9Address_ common.Address, zetaPoolFee_ *big.Int, tokenPoolFee_ *big.Int) (common.Address, *types.Transaction, *ZetaTokenConsumerPancakeV3, error) { + parsed, err := ZetaTokenConsumerPancakeV3MetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaTokenConsumerPancakeV3Bin), backend, zetaToken_, pancakeV3Router_, uniswapV3Factory_, WETH9Address_, zetaPoolFee_, tokenPoolFee_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &ZetaTokenConsumerPancakeV3{ZetaTokenConsumerPancakeV3Caller: ZetaTokenConsumerPancakeV3Caller{contract: contract}, ZetaTokenConsumerPancakeV3Transactor: ZetaTokenConsumerPancakeV3Transactor{contract: contract}, ZetaTokenConsumerPancakeV3Filterer: ZetaTokenConsumerPancakeV3Filterer{contract: contract}}, nil +} + +// ZetaTokenConsumerPancakeV3 is an auto generated Go binding around an Ethereum contract. +type ZetaTokenConsumerPancakeV3 struct { + ZetaTokenConsumerPancakeV3Caller // Read-only binding to the contract + ZetaTokenConsumerPancakeV3Transactor // Write-only binding to the contract + ZetaTokenConsumerPancakeV3Filterer // Log filterer for contract events +} + +// ZetaTokenConsumerPancakeV3Caller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerPancakeV3Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerPancakeV3Transactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerPancakeV3Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerPancakeV3Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaTokenConsumerPancakeV3Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerPancakeV3Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaTokenConsumerPancakeV3Session struct { + Contract *ZetaTokenConsumerPancakeV3 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerPancakeV3CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaTokenConsumerPancakeV3CallerSession struct { + Contract *ZetaTokenConsumerPancakeV3Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaTokenConsumerPancakeV3TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaTokenConsumerPancakeV3TransactorSession struct { + Contract *ZetaTokenConsumerPancakeV3Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerPancakeV3Raw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaTokenConsumerPancakeV3Raw struct { + Contract *ZetaTokenConsumerPancakeV3 // Generic contract binding to access the raw methods on +} + +// ZetaTokenConsumerPancakeV3CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerPancakeV3CallerRaw struct { + Contract *ZetaTokenConsumerPancakeV3Caller // Generic read-only contract binding to access the raw methods on +} + +// ZetaTokenConsumerPancakeV3TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerPancakeV3TransactorRaw struct { + Contract *ZetaTokenConsumerPancakeV3Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaTokenConsumerPancakeV3 creates a new instance of ZetaTokenConsumerPancakeV3, bound to a specific deployed contract. +func NewZetaTokenConsumerPancakeV3(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerPancakeV3, error) { + contract, err := bindZetaTokenConsumerPancakeV3(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerPancakeV3{ZetaTokenConsumerPancakeV3Caller: ZetaTokenConsumerPancakeV3Caller{contract: contract}, ZetaTokenConsumerPancakeV3Transactor: ZetaTokenConsumerPancakeV3Transactor{contract: contract}, ZetaTokenConsumerPancakeV3Filterer: ZetaTokenConsumerPancakeV3Filterer{contract: contract}}, nil +} + +// NewZetaTokenConsumerPancakeV3Caller creates a new read-only instance of ZetaTokenConsumerPancakeV3, bound to a specific deployed contract. +func NewZetaTokenConsumerPancakeV3Caller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerPancakeV3Caller, error) { + contract, err := bindZetaTokenConsumerPancakeV3(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerPancakeV3Caller{contract: contract}, nil +} + +// NewZetaTokenConsumerPancakeV3Transactor creates a new write-only instance of ZetaTokenConsumerPancakeV3, bound to a specific deployed contract. +func NewZetaTokenConsumerPancakeV3Transactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerPancakeV3Transactor, error) { + contract, err := bindZetaTokenConsumerPancakeV3(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerPancakeV3Transactor{contract: contract}, nil +} + +// NewZetaTokenConsumerPancakeV3Filterer creates a new log filterer instance of ZetaTokenConsumerPancakeV3, bound to a specific deployed contract. +func NewZetaTokenConsumerPancakeV3Filterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerPancakeV3Filterer, error) { + contract, err := bindZetaTokenConsumerPancakeV3(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerPancakeV3Filterer{contract: contract}, nil +} + +// bindZetaTokenConsumerPancakeV3 binds a generic wrapper to an already deployed contract. +func bindZetaTokenConsumerPancakeV3(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaTokenConsumerPancakeV3MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerPancakeV3.Contract.ZetaTokenConsumerPancakeV3Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.ZetaTokenConsumerPancakeV3Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.ZetaTokenConsumerPancakeV3Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerPancakeV3.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.contract.Transact(opts, method, params...) +} + +// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. +// +// Solidity: function WETH9Address() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Caller) WETH9Address(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaTokenConsumerPancakeV3.contract.Call(opts, &out, "WETH9Address") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. +// +// Solidity: function WETH9Address() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) WETH9Address() (common.Address, error) { + return _ZetaTokenConsumerPancakeV3.Contract.WETH9Address(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// WETH9Address is a free data retrieval call binding the contract method 0xc469cf14. +// +// Solidity: function WETH9Address() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerSession) WETH9Address() (common.Address, error) { + return _ZetaTokenConsumerPancakeV3.Contract.WETH9Address(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Caller) HasZetaLiquidity(opts *bind.CallOpts) (bool, error) { + var out []interface{} + err := _ZetaTokenConsumerPancakeV3.contract.Call(opts, &out, "hasZetaLiquidity") + + if err != nil { + return *new(bool), err + } + + out0 := *abi.ConvertType(out[0], new(bool)).(*bool) + + return out0, err + +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) HasZetaLiquidity() (bool, error) { + return _ZetaTokenConsumerPancakeV3.Contract.HasZetaLiquidity(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// HasZetaLiquidity is a free data retrieval call binding the contract method 0x80801f84. +// +// Solidity: function hasZetaLiquidity() view returns(bool) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerSession) HasZetaLiquidity() (bool, error) { + return _ZetaTokenConsumerPancakeV3.Contract.HasZetaLiquidity(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// PancakeV3Router is a free data retrieval call binding the contract method 0xc27745dd. +// +// Solidity: function pancakeV3Router() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Caller) PancakeV3Router(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaTokenConsumerPancakeV3.contract.Call(opts, &out, "pancakeV3Router") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// PancakeV3Router is a free data retrieval call binding the contract method 0xc27745dd. +// +// Solidity: function pancakeV3Router() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) PancakeV3Router() (common.Address, error) { + return _ZetaTokenConsumerPancakeV3.Contract.PancakeV3Router(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// PancakeV3Router is a free data retrieval call binding the contract method 0xc27745dd. +// +// Solidity: function pancakeV3Router() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerSession) PancakeV3Router() (common.Address, error) { + return _ZetaTokenConsumerPancakeV3.Contract.PancakeV3Router(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// TokenPoolFee is a free data retrieval call binding the contract method 0x5d9dfdde. +// +// Solidity: function tokenPoolFee() view returns(uint24) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Caller) TokenPoolFee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZetaTokenConsumerPancakeV3.contract.Call(opts, &out, "tokenPoolFee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TokenPoolFee is a free data retrieval call binding the contract method 0x5d9dfdde. +// +// Solidity: function tokenPoolFee() view returns(uint24) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) TokenPoolFee() (*big.Int, error) { + return _ZetaTokenConsumerPancakeV3.Contract.TokenPoolFee(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// TokenPoolFee is a free data retrieval call binding the contract method 0x5d9dfdde. +// +// Solidity: function tokenPoolFee() view returns(uint24) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerSession) TokenPoolFee() (*big.Int, error) { + return _ZetaTokenConsumerPancakeV3.Contract.TokenPoolFee(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// UniswapV3Factory is a free data retrieval call binding the contract method 0x5b549182. +// +// Solidity: function uniswapV3Factory() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Caller) UniswapV3Factory(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaTokenConsumerPancakeV3.contract.Call(opts, &out, "uniswapV3Factory") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// UniswapV3Factory is a free data retrieval call binding the contract method 0x5b549182. +// +// Solidity: function uniswapV3Factory() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) UniswapV3Factory() (common.Address, error) { + return _ZetaTokenConsumerPancakeV3.Contract.UniswapV3Factory(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// UniswapV3Factory is a free data retrieval call binding the contract method 0x5b549182. +// +// Solidity: function uniswapV3Factory() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerSession) UniswapV3Factory() (common.Address, error) { + return _ZetaTokenConsumerPancakeV3.Contract.UniswapV3Factory(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// ZetaPoolFee is a free data retrieval call binding the contract method 0x3cbd7005. +// +// Solidity: function zetaPoolFee() view returns(uint24) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Caller) ZetaPoolFee(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _ZetaTokenConsumerPancakeV3.contract.Call(opts, &out, "zetaPoolFee") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// ZetaPoolFee is a free data retrieval call binding the contract method 0x3cbd7005. +// +// Solidity: function zetaPoolFee() view returns(uint24) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) ZetaPoolFee() (*big.Int, error) { + return _ZetaTokenConsumerPancakeV3.Contract.ZetaPoolFee(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// ZetaPoolFee is a free data retrieval call binding the contract method 0x3cbd7005. +// +// Solidity: function zetaPoolFee() view returns(uint24) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerSession) ZetaPoolFee() (*big.Int, error) { + return _ZetaTokenConsumerPancakeV3.Contract.ZetaPoolFee(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Caller) ZetaToken(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _ZetaTokenConsumerPancakeV3.contract.Call(opts, &out, "zetaToken") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) ZetaToken() (common.Address, error) { + return _ZetaTokenConsumerPancakeV3.Contract.ZetaToken(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// ZetaToken is a free data retrieval call binding the contract method 0x21e093b1. +// +// Solidity: function zetaToken() view returns(address) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3CallerSession) ZetaToken() (common.Address, error) { + return _ZetaTokenConsumerPancakeV3.Contract.ZetaToken(&_ZetaTokenConsumerPancakeV3.CallOpts) +} + +// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. +// +// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Transactor) GetEthFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.contract.Transact(opts, "getEthFromZeta", destinationAddress, minAmountOut, zetaTokenAmount) +} + +// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. +// +// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.GetEthFromZeta(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) +} + +// GetEthFromZeta is a paid mutator transaction binding the contract method 0x54c49a2a. +// +// Solidity: function getEthFromZeta(address destinationAddress, uint256 minAmountOut, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3TransactorSession) GetEthFromZeta(destinationAddress common.Address, minAmountOut *big.Int, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.GetEthFromZeta(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut, zetaTokenAmount) +} + +// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. +// +// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Transactor) GetTokenFromZeta(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.contract.Transact(opts, "getTokenFromZeta", destinationAddress, minAmountOut, outputToken, zetaTokenAmount) +} + +// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. +// +// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.GetTokenFromZeta(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) +} + +// GetTokenFromZeta is a paid mutator transaction binding the contract method 0xa53fb10b. +// +// Solidity: function getTokenFromZeta(address destinationAddress, uint256 minAmountOut, address outputToken, uint256 zetaTokenAmount) returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3TransactorSession) GetTokenFromZeta(destinationAddress common.Address, minAmountOut *big.Int, outputToken common.Address, zetaTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.GetTokenFromZeta(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut, outputToken, zetaTokenAmount) +} + +// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. +// +// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Transactor) GetZetaFromEth(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.contract.Transact(opts, "getZetaFromEth", destinationAddress, minAmountOut) +} + +// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. +// +// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.GetZetaFromEth(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut) +} + +// GetZetaFromEth is a paid mutator transaction binding the contract method 0x013b2ff8. +// +// Solidity: function getZetaFromEth(address destinationAddress, uint256 minAmountOut) payable returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3TransactorSession) GetZetaFromEth(destinationAddress common.Address, minAmountOut *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.GetZetaFromEth(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut) +} + +// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. +// +// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Transactor) GetZetaFromToken(opts *bind.TransactOpts, destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.contract.Transact(opts, "getZetaFromToken", destinationAddress, minAmountOut, inputToken, inputTokenAmount) +} + +// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. +// +// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.GetZetaFromToken(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) +} + +// GetZetaFromToken is a paid mutator transaction binding the contract method 0x2405620a. +// +// Solidity: function getZetaFromToken(address destinationAddress, uint256 minAmountOut, address inputToken, uint256 inputTokenAmount) returns(uint256) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3TransactorSession) GetZetaFromToken(destinationAddress common.Address, minAmountOut *big.Int, inputToken common.Address, inputTokenAmount *big.Int) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.GetZetaFromToken(&_ZetaTokenConsumerPancakeV3.TransactOpts, destinationAddress, minAmountOut, inputToken, inputTokenAmount) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Transactor) Receive(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.contract.RawTransact(opts, nil) // calldata is disallowed for receive function +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Session) Receive() (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.Receive(&_ZetaTokenConsumerPancakeV3.TransactOpts) +} + +// Receive is a paid mutator transaction binding the contract receive function. +// +// Solidity: receive() payable returns() +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3TransactorSession) Receive() (*types.Transaction, error) { + return _ZetaTokenConsumerPancakeV3.Contract.Receive(&_ZetaTokenConsumerPancakeV3.TransactOpts) +} + +// ZetaTokenConsumerPancakeV3EthExchangedForZetaIterator is returned from FilterEthExchangedForZeta and is used to iterate over the raw logs and unpacked data for EthExchangedForZeta events raised by the ZetaTokenConsumerPancakeV3 contract. +type ZetaTokenConsumerPancakeV3EthExchangedForZetaIterator struct { + Event *ZetaTokenConsumerPancakeV3EthExchangedForZeta // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerPancakeV3EthExchangedForZetaIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerPancakeV3EthExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerPancakeV3EthExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerPancakeV3EthExchangedForZetaIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerPancakeV3EthExchangedForZetaIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerPancakeV3EthExchangedForZeta represents a EthExchangedForZeta event raised by the ZetaTokenConsumerPancakeV3 contract. +type ZetaTokenConsumerPancakeV3EthExchangedForZeta struct { + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterEthExchangedForZeta is a free log retrieval operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. +// +// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) FilterEthExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerPancakeV3EthExchangedForZetaIterator, error) { + + logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.FilterLogs(opts, "EthExchangedForZeta") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerPancakeV3EthExchangedForZetaIterator{contract: _ZetaTokenConsumerPancakeV3.contract, event: "EthExchangedForZeta", logs: logs, sub: sub}, nil +} + +// WatchEthExchangedForZeta is a free log subscription operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. +// +// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) WatchEthExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerPancakeV3EthExchangedForZeta) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.WatchLogs(opts, "EthExchangedForZeta") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerPancakeV3EthExchangedForZeta) + if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseEthExchangedForZeta is a log parse operation binding the contract event 0x87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11. +// +// Solidity: event EthExchangedForZeta(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) ParseEthExchangedForZeta(log types.Log) (*ZetaTokenConsumerPancakeV3EthExchangedForZeta, error) { + event := new(ZetaTokenConsumerPancakeV3EthExchangedForZeta) + if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "EthExchangedForZeta", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerPancakeV3TokenExchangedForZetaIterator is returned from FilterTokenExchangedForZeta and is used to iterate over the raw logs and unpacked data for TokenExchangedForZeta events raised by the ZetaTokenConsumerPancakeV3 contract. +type ZetaTokenConsumerPancakeV3TokenExchangedForZetaIterator struct { + Event *ZetaTokenConsumerPancakeV3TokenExchangedForZeta // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerPancakeV3TokenExchangedForZetaIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerPancakeV3TokenExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerPancakeV3TokenExchangedForZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerPancakeV3TokenExchangedForZetaIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerPancakeV3TokenExchangedForZetaIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerPancakeV3TokenExchangedForZeta represents a TokenExchangedForZeta event raised by the ZetaTokenConsumerPancakeV3 contract. +type ZetaTokenConsumerPancakeV3TokenExchangedForZeta struct { + Token common.Address + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTokenExchangedForZeta is a free log retrieval operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. +// +// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) FilterTokenExchangedForZeta(opts *bind.FilterOpts) (*ZetaTokenConsumerPancakeV3TokenExchangedForZetaIterator, error) { + + logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.FilterLogs(opts, "TokenExchangedForZeta") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerPancakeV3TokenExchangedForZetaIterator{contract: _ZetaTokenConsumerPancakeV3.contract, event: "TokenExchangedForZeta", logs: logs, sub: sub}, nil +} + +// WatchTokenExchangedForZeta is a free log subscription operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. +// +// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) WatchTokenExchangedForZeta(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerPancakeV3TokenExchangedForZeta) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.WatchLogs(opts, "TokenExchangedForZeta") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerPancakeV3TokenExchangedForZeta) + if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTokenExchangedForZeta is a log parse operation binding the contract event 0x017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f. +// +// Solidity: event TokenExchangedForZeta(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) ParseTokenExchangedForZeta(log types.Log) (*ZetaTokenConsumerPancakeV3TokenExchangedForZeta, error) { + event := new(ZetaTokenConsumerPancakeV3TokenExchangedForZeta) + if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "TokenExchangedForZeta", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerPancakeV3ZetaExchangedForEthIterator is returned from FilterZetaExchangedForEth and is used to iterate over the raw logs and unpacked data for ZetaExchangedForEth events raised by the ZetaTokenConsumerPancakeV3 contract. +type ZetaTokenConsumerPancakeV3ZetaExchangedForEthIterator struct { + Event *ZetaTokenConsumerPancakeV3ZetaExchangedForEth // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerPancakeV3ZetaExchangedForEthIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerPancakeV3ZetaExchangedForEth) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerPancakeV3ZetaExchangedForEth) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerPancakeV3ZetaExchangedForEthIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerPancakeV3ZetaExchangedForEthIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerPancakeV3ZetaExchangedForEth represents a ZetaExchangedForEth event raised by the ZetaTokenConsumerPancakeV3 contract. +type ZetaTokenConsumerPancakeV3ZetaExchangedForEth struct { + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaExchangedForEth is a free log retrieval operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. +// +// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) FilterZetaExchangedForEth(opts *bind.FilterOpts) (*ZetaTokenConsumerPancakeV3ZetaExchangedForEthIterator, error) { + + logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.FilterLogs(opts, "ZetaExchangedForEth") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerPancakeV3ZetaExchangedForEthIterator{contract: _ZetaTokenConsumerPancakeV3.contract, event: "ZetaExchangedForEth", logs: logs, sub: sub}, nil +} + +// WatchZetaExchangedForEth is a free log subscription operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. +// +// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) WatchZetaExchangedForEth(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerPancakeV3ZetaExchangedForEth) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.WatchLogs(opts, "ZetaExchangedForEth") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerPancakeV3ZetaExchangedForEth) + if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaExchangedForEth is a log parse operation binding the contract event 0x74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae. +// +// Solidity: event ZetaExchangedForEth(uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) ParseZetaExchangedForEth(log types.Log) (*ZetaTokenConsumerPancakeV3ZetaExchangedForEth, error) { + event := new(ZetaTokenConsumerPancakeV3ZetaExchangedForEth) + if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "ZetaExchangedForEth", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaTokenConsumerPancakeV3ZetaExchangedForTokenIterator is returned from FilterZetaExchangedForToken and is used to iterate over the raw logs and unpacked data for ZetaExchangedForToken events raised by the ZetaTokenConsumerPancakeV3 contract. +type ZetaTokenConsumerPancakeV3ZetaExchangedForTokenIterator struct { + Event *ZetaTokenConsumerPancakeV3ZetaExchangedForToken // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaTokenConsumerPancakeV3ZetaExchangedForTokenIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerPancakeV3ZetaExchangedForToken) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaTokenConsumerPancakeV3ZetaExchangedForToken) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaTokenConsumerPancakeV3ZetaExchangedForTokenIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaTokenConsumerPancakeV3ZetaExchangedForTokenIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaTokenConsumerPancakeV3ZetaExchangedForToken represents a ZetaExchangedForToken event raised by the ZetaTokenConsumerPancakeV3 contract. +type ZetaTokenConsumerPancakeV3ZetaExchangedForToken struct { + Token common.Address + AmountIn *big.Int + AmountOut *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterZetaExchangedForToken is a free log retrieval operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. +// +// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) FilterZetaExchangedForToken(opts *bind.FilterOpts) (*ZetaTokenConsumerPancakeV3ZetaExchangedForTokenIterator, error) { + + logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.FilterLogs(opts, "ZetaExchangedForToken") + if err != nil { + return nil, err + } + return &ZetaTokenConsumerPancakeV3ZetaExchangedForTokenIterator{contract: _ZetaTokenConsumerPancakeV3.contract, event: "ZetaExchangedForToken", logs: logs, sub: sub}, nil +} + +// WatchZetaExchangedForToken is a free log subscription operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. +// +// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) WatchZetaExchangedForToken(opts *bind.WatchOpts, sink chan<- *ZetaTokenConsumerPancakeV3ZetaExchangedForToken) (event.Subscription, error) { + + logs, sub, err := _ZetaTokenConsumerPancakeV3.contract.WatchLogs(opts, "ZetaExchangedForToken") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaTokenConsumerPancakeV3ZetaExchangedForToken) + if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseZetaExchangedForToken is a log parse operation binding the contract event 0x0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b. +// +// Solidity: event ZetaExchangedForToken(address token, uint256 amountIn, uint256 amountOut) +func (_ZetaTokenConsumerPancakeV3 *ZetaTokenConsumerPancakeV3Filterer) ParseZetaExchangedForToken(log types.Log) (*ZetaTokenConsumerPancakeV3ZetaExchangedForToken, error) { + event := new(ZetaTokenConsumerPancakeV3ZetaExchangedForToken) + if err := _ZetaTokenConsumerPancakeV3.contract.UnpackLog(event, "ZetaExchangedForToken", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/zetatokenconsumeruniv3errors.go b/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/zetatokenconsumeruniv3errors.go new file mode 100644 index 00000000..65658391 --- /dev/null +++ b/pkg/contracts/evm/tools/zetatokenconsumerpancakev3.strategy.sol/zetatokenconsumeruniv3errors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package zetatokenconsumerpancakev3 + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ZetaTokenConsumerUniV3ErrorsMetaData contains all meta data concerning the ZetaTokenConsumerUniV3Errors contract. +var ZetaTokenConsumerUniV3ErrorsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"ErrorSendingETH\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InputCantBeZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyError\",\"type\":\"error\"}]", +} + +// ZetaTokenConsumerUniV3ErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use ZetaTokenConsumerUniV3ErrorsMetaData.ABI instead. +var ZetaTokenConsumerUniV3ErrorsABI = ZetaTokenConsumerUniV3ErrorsMetaData.ABI + +// ZetaTokenConsumerUniV3Errors is an auto generated Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3Errors struct { + ZetaTokenConsumerUniV3ErrorsCaller // Read-only binding to the contract + ZetaTokenConsumerUniV3ErrorsTransactor // Write-only binding to the contract + ZetaTokenConsumerUniV3ErrorsFilterer // Log filterer for contract events +} + +// ZetaTokenConsumerUniV3ErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3ErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerUniV3ErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3ErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerUniV3ErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ZetaTokenConsumerUniV3ErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ZetaTokenConsumerUniV3ErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ZetaTokenConsumerUniV3ErrorsSession struct { + Contract *ZetaTokenConsumerUniV3Errors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerUniV3ErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ZetaTokenConsumerUniV3ErrorsCallerSession struct { + Contract *ZetaTokenConsumerUniV3ErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ZetaTokenConsumerUniV3ErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ZetaTokenConsumerUniV3ErrorsTransactorSession struct { + Contract *ZetaTokenConsumerUniV3ErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ZetaTokenConsumerUniV3ErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3ErrorsRaw struct { + Contract *ZetaTokenConsumerUniV3Errors // Generic contract binding to access the raw methods on +} + +// ZetaTokenConsumerUniV3ErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3ErrorsCallerRaw struct { + Contract *ZetaTokenConsumerUniV3ErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// ZetaTokenConsumerUniV3ErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ZetaTokenConsumerUniV3ErrorsTransactorRaw struct { + Contract *ZetaTokenConsumerUniV3ErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewZetaTokenConsumerUniV3Errors creates a new instance of ZetaTokenConsumerUniV3Errors, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV3Errors(address common.Address, backend bind.ContractBackend) (*ZetaTokenConsumerUniV3Errors, error) { + contract, err := bindZetaTokenConsumerUniV3Errors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV3Errors{ZetaTokenConsumerUniV3ErrorsCaller: ZetaTokenConsumerUniV3ErrorsCaller{contract: contract}, ZetaTokenConsumerUniV3ErrorsTransactor: ZetaTokenConsumerUniV3ErrorsTransactor{contract: contract}, ZetaTokenConsumerUniV3ErrorsFilterer: ZetaTokenConsumerUniV3ErrorsFilterer{contract: contract}}, nil +} + +// NewZetaTokenConsumerUniV3ErrorsCaller creates a new read-only instance of ZetaTokenConsumerUniV3Errors, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV3ErrorsCaller(address common.Address, caller bind.ContractCaller) (*ZetaTokenConsumerUniV3ErrorsCaller, error) { + contract, err := bindZetaTokenConsumerUniV3Errors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV3ErrorsCaller{contract: contract}, nil +} + +// NewZetaTokenConsumerUniV3ErrorsTransactor creates a new write-only instance of ZetaTokenConsumerUniV3Errors, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV3ErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*ZetaTokenConsumerUniV3ErrorsTransactor, error) { + contract, err := bindZetaTokenConsumerUniV3Errors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV3ErrorsTransactor{contract: contract}, nil +} + +// NewZetaTokenConsumerUniV3ErrorsFilterer creates a new log filterer instance of ZetaTokenConsumerUniV3Errors, bound to a specific deployed contract. +func NewZetaTokenConsumerUniV3ErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*ZetaTokenConsumerUniV3ErrorsFilterer, error) { + contract, err := bindZetaTokenConsumerUniV3Errors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ZetaTokenConsumerUniV3ErrorsFilterer{contract: contract}, nil +} + +// bindZetaTokenConsumerUniV3Errors binds a generic wrapper to an already deployed contract. +func bindZetaTokenConsumerUniV3Errors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ZetaTokenConsumerUniV3ErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerUniV3Errors.Contract.ZetaTokenConsumerUniV3ErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3Errors.Contract.ZetaTokenConsumerUniV3ErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3Errors.Contract.ZetaTokenConsumerUniV3ErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ZetaTokenConsumerUniV3Errors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3Errors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ZetaTokenConsumerUniV3Errors *ZetaTokenConsumerUniV3ErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ZetaTokenConsumerUniV3Errors.Contract.contract.Transact(opts, method, params...) +} diff --git a/pkg/contracts/evm/zeta.non-eth.sol/zetanoneth.go b/pkg/contracts/evm/zeta.non-eth.sol/zetanoneth.go index ff86fca3..2beabe2c 100644 --- a/pkg/contracts/evm/zeta.non-eth.sol/zetanoneth.go +++ b/pkg/contracts/evm/zeta.non-eth.sol/zetanoneth.go @@ -31,8 +31,8 @@ var ( // ZetaNonEthMetaData contains all meta data concerning the ZetaNonEth contract. var ZetaNonEthMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddressUpdater_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotConnector\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTss\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssOrUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssUpdater\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaTransferError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"burnee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Burnt\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"mintee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"connectorAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"mintee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceTssAddressUpdater\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddressUpdater\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"connectorAddress_\",\"type\":\"address\"}],\"name\":\"updateTssAndConnectorAddresses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60806040523480156200001157600080fd5b506040516200232d3803806200232d8339818101604052810190620000379190620002c8565b6040518060400160405280600481526020017f5a657461000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5a455441000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000bb92919062000201565b508060049080519060200190620000d492919062000201565b505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806200013f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000177576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620003c7565b8280546200020f9062000343565b90600052602060002090601f0160209004810192826200023357600085556200027f565b82601f106200024e57805160ff19168380011785556200027f565b828001600101855582156200027f579182015b828111156200027e57825182559160200191906001019062000261565b5b5090506200028e919062000292565b5090565b5b80821115620002ad57600081600090555060010162000293565b5090565b600081519050620002c281620003ad565b92915050565b60008060408385031215620002e257620002e1620003a8565b5b6000620002f285828601620002b1565b92505060206200030585828601620002b1565b9150509250929050565b60006200031c8262000323565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060028204905060018216806200035c57607f821691505b6020821081141562000373576200037262000379565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b620003b8816200030f565b8114620003c457600080fd5b50565b611f5680620003d76000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806342966c68116100ad57806395d89b411161007157806395d89b41146102f6578063a457c2d714610314578063a9059cbb14610344578063bff9662a14610374578063dd62ed3e1461039257610121565b806342966c68146102665780635b1125911461028257806370a08231146102a0578063779e3b63146102d057806379cc6790146102da57610121565b80631e458bee116100f45780631e458bee146101ae57806323b872dd146101ca578063313ce567146101fa578063328a01d014610218578063395093511461023657610121565b806306fdde0314610126578063095ea7b31461014457806315d57fd41461017457806318160ddd14610190575b600080fd5b61012e6103c2565b60405161013b91906118cf565b60405180910390f35b61015e60048036038101906101599190611606565b610454565b60405161016b91906118b4565b60405180910390f35b61018e60048036038101906101899190611573565b610477565b005b610198610689565b6040516101a59190611a31565b60405180910390f35b6101c860048036038101906101c39190611646565b610693565b005b6101e460048036038101906101df91906115b3565b610783565b6040516101f191906118b4565b60405180910390f35b6102026107b2565b60405161020f9190611a4c565b60405180910390f35b6102206107bb565b60405161022d9190611899565b60405180910390f35b610250600480360381019061024b9190611606565b6107e1565b60405161025d91906118b4565b60405180910390f35b610280600480360381019061027b9190611699565b610818565b005b61028a61082c565b6040516102979190611899565b60405180910390f35b6102ba60048036038101906102b59190611546565b610852565b6040516102c79190611a31565b60405180910390f35b6102d861089a565b005b6102f460048036038101906102ef9190611606565b610a1a565b005b6102fe610b08565b60405161030b91906118cf565b60405180910390f35b61032e60048036038101906103299190611606565b610b9a565b60405161033b91906118b4565b60405180910390f35b61035e60048036038101906103599190611606565b610c11565b60405161036b91906118b4565b60405180910390f35b61037c610c34565b6040516103899190611899565b60405180910390f35b6103ac60048036038101906103a79190611573565b610c5a565b6040516103b99190611a31565b60405180910390f35b6060600380546103d190611b6b565b80601f01602080910402602001604051908101604052809291908181526020018280546103fd90611b6b565b801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b5050505050905090565b60008061045f610ce1565b905061046c818585610ce9565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156105235750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561056557336040517fcdfcef9700000000000000000000000000000000000000000000000000000000815260040161055c9190611899565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806105cc5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15610603576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600254905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461072557336040517f3fe32fba00000000000000000000000000000000000000000000000000000000815260040161071c9190611899565b60405180910390fd5b61072f8383610eb4565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb846040516107769190611a31565b60405180910390a3505050565b60008061078e610ce1565b905061079b85828561100b565b6107a6858585611097565b60019150509392505050565b60006012905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806107ec610ce1565b905061080d8185856107fe8589610c5a565b6108089190611a83565b610ce9565b600191505092915050565b610829610823610ce1565b8261130f565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461092c57336040517fe700765e0000000000000000000000000000000000000000000000000000000081526004016109239190611899565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156109b5576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aac57336040517f3fe32fba000000000000000000000000000000000000000000000000000000008152600401610aa39190611899565b60405180910390fd5b610ab682826114dd565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b182604051610afc9190611a31565b60405180910390a25050565b606060048054610b1790611b6b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4390611b6b565b8015610b905780601f10610b6557610100808354040283529160200191610b90565b820191906000526020600020905b815481529060010190602001808311610b7357829003601f168201915b5050505050905090565b600080610ba5610ce1565b90506000610bb38286610c5a565b905083811015610bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bef906119f1565b60405180910390fd5b610c058286868403610ce9565b60019250505092915050565b600080610c1c610ce1565b9050610c29818585611097565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d50906119d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc090611931565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ea79190611a31565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1b90611a11565b60405180910390fd5b610f30600083836114fd565b8060026000828254610f429190611a83565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ff39190611a31565b60405180910390a361100760008383611502565b5050565b60006110178484610c5a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110915781811015611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a90611951565b60405180910390fd5b6110908484848403610ce9565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fe906119b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116e906118f1565b60405180910390fd5b6111828383836114fd565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff90611971565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112f69190611a31565b60405180910390a3611309848484611502565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561137f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137690611991565b60405180910390fd5b61138b826000836114fd565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611411576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140890611911565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114c49190611a31565b60405180910390a36114d883600084611502565b505050565b6114ef826114e9610ce1565b8361100b565b6114f9828261130f565b5050565b505050565b505050565b60008135905061151681611edb565b92915050565b60008135905061152b81611ef2565b92915050565b60008135905061154081611f09565b92915050565b60006020828403121561155c5761155b611bfb565b5b600061156a84828501611507565b91505092915050565b6000806040838503121561158a57611589611bfb565b5b600061159885828601611507565b92505060206115a985828601611507565b9150509250929050565b6000806000606084860312156115cc576115cb611bfb565b5b60006115da86828701611507565b93505060206115eb86828701611507565b92505060406115fc86828701611531565b9150509250925092565b6000806040838503121561161d5761161c611bfb565b5b600061162b85828601611507565b925050602061163c85828601611531565b9150509250929050565b60008060006060848603121561165f5761165e611bfb565b5b600061166d86828701611507565b935050602061167e86828701611531565b925050604061168f8682870161151c565b9150509250925092565b6000602082840312156116af576116ae611bfb565b5b60006116bd84828501611531565b91505092915050565b6116cf81611ad9565b82525050565b6116de81611aeb565b82525050565b60006116ef82611a67565b6116f98185611a72565b9350611709818560208601611b38565b61171281611c00565b840191505092915050565b600061172a602383611a72565b915061173582611c11565b604082019050919050565b600061174d602283611a72565b915061175882611c60565b604082019050919050565b6000611770602283611a72565b915061177b82611caf565b604082019050919050565b6000611793601d83611a72565b915061179e82611cfe565b602082019050919050565b60006117b6602683611a72565b91506117c182611d27565b604082019050919050565b60006117d9602183611a72565b91506117e482611d76565b604082019050919050565b60006117fc602583611a72565b915061180782611dc5565b604082019050919050565b600061181f602483611a72565b915061182a82611e14565b604082019050919050565b6000611842602583611a72565b915061184d82611e63565b604082019050919050565b6000611865601f83611a72565b915061187082611eb2565b602082019050919050565b61188481611b21565b82525050565b61189381611b2b565b82525050565b60006020820190506118ae60008301846116c6565b92915050565b60006020820190506118c960008301846116d5565b92915050565b600060208201905081810360008301526118e981846116e4565b905092915050565b6000602082019050818103600083015261190a8161171d565b9050919050565b6000602082019050818103600083015261192a81611740565b9050919050565b6000602082019050818103600083015261194a81611763565b9050919050565b6000602082019050818103600083015261196a81611786565b9050919050565b6000602082019050818103600083015261198a816117a9565b9050919050565b600060208201905081810360008301526119aa816117cc565b9050919050565b600060208201905081810360008301526119ca816117ef565b9050919050565b600060208201905081810360008301526119ea81611812565b9050919050565b60006020820190508181036000830152611a0a81611835565b9050919050565b60006020820190508181036000830152611a2a81611858565b9050919050565b6000602082019050611a46600083018461187b565b92915050565b6000602082019050611a61600083018461188a565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611a8e82611b21565b9150611a9983611b21565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611ace57611acd611b9d565b5b828201905092915050565b6000611ae482611b01565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611b56578082015181840152602081019050611b3b565b83811115611b65576000848401525b50505050565b60006002820490506001821680611b8357607f821691505b60208210811415611b9757611b96611bcc565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b611ee481611ad9565b8114611eef57600080fd5b50565b611efb81611af7565b8114611f0657600080fd5b50565b611f1281611b21565b8114611f1d57600080fd5b5056fea2646970667358221220e6c31d1e8e5d7d9467dfc1dacee3e76de948e1c1ed1770d8f43d63115d42d9f064736f6c63430008070033", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddressUpdater_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotConnector\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTss\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssOrUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssUpdater\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaTransferError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"burnee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"Burnt\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newConnectorAddress\",\"type\":\"address\"}],\"name\":\"ConnectorAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"mintee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"Minted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssUpdaterAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdaterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burnFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"connectorAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"subtractedValue\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"addedValue\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"mintee\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"mint\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceTssAddressUpdater\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddressUpdater\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"connectorAddress_\",\"type\":\"address\"}],\"name\":\"updateTssAndConnectorAddresses\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60806040523480156200001157600080fd5b5060405162002423380380620024238339818101604052810190620000379190620002c8565b6040518060400160405280600481526020017f5a657461000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5a455441000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000bb92919062000201565b508060049080519060200190620000d492919062000201565b505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806200013f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000177576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620003c7565b8280546200020f9062000343565b90600052602060002090601f0160209004810192826200023357600085556200027f565b82601f106200024e57805160ff19168380011785556200027f565b828001600101855582156200027f579182015b828111156200027e57825182559160200191906001019062000261565b5b5090506200028e919062000292565b5090565b5b80821115620002ad57600081600090555060010162000293565b5090565b600081519050620002c281620003ad565b92915050565b60008060408385031215620002e257620002e1620003a8565b5b6000620002f285828601620002b1565b92505060206200030585828601620002b1565b9150509250929050565b60006200031c8262000323565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060028204905060018216806200035c57607f821691505b6020821081141562000373576200037262000379565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b620003b8816200030f565b8114620003c457600080fd5b50565b61204c80620003d76000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806342966c68116100ad57806395d89b411161007157806395d89b41146102f6578063a457c2d714610314578063a9059cbb14610344578063bff9662a14610374578063dd62ed3e1461039257610121565b806342966c68146102665780635b1125911461028257806370a08231146102a0578063779e3b63146102d057806379cc6790146102da57610121565b80631e458bee116100f45780631e458bee146101ae57806323b872dd146101ca578063313ce567146101fa578063328a01d014610218578063395093511461023657610121565b806306fdde0314610126578063095ea7b31461014457806315d57fd41461017457806318160ddd14610190575b600080fd5b61012e6103c2565b60405161013b91906119c5565b60405180910390f35b61015e600480360381019061015991906116d3565b610454565b60405161016b91906119aa565b60405180910390f35b61018e60048036038101906101899190611640565b610477565b005b6101986106fb565b6040516101a59190611b27565b60405180910390f35b6101c860048036038101906101c39190611713565b610705565b005b6101e460048036038101906101df9190611680565b6107f5565b6040516101f191906119aa565b60405180910390f35b610202610824565b60405161020f9190611b42565b60405180910390f35b61022061082d565b60405161022d9190611966565b60405180910390f35b610250600480360381019061024b91906116d3565b610853565b60405161025d91906119aa565b60405180910390f35b610280600480360381019061027b9190611766565b61088a565b005b61028a61089e565b6040516102979190611966565b60405180910390f35b6102ba60048036038101906102b59190611613565b6108c4565b6040516102c79190611b27565b60405180910390f35b6102d861090c565b005b6102f460048036038101906102ef91906116d3565b610ae7565b005b6102fe610bd5565b60405161030b91906119c5565b60405180910390f35b61032e600480360381019061032991906116d3565b610c67565b60405161033b91906119aa565b60405180910390f35b61035e600480360381019061035991906116d3565b610cde565b60405161036b91906119aa565b60405180910390f35b61037c610d01565b6040516103899190611966565b60405180910390f35b6103ac60048036038101906103a79190611640565b610d27565b6040516103b99190611b27565b60405180910390f35b6060600380546103d190611c61565b80601f01602080910402602001604051908101604052809291908181526020018280546103fd90611c61565b801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b5050505050905090565b60008061045f610dae565b905061046c818585610db6565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156105235750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561056557336040517fcdfcef9700000000000000000000000000000000000000000000000000000000815260040161055c9190611966565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806105cc5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15610603576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff33836040516106b6929190611981565b60405180910390a17f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c33826040516106ef929190611981565b60405180910390a15050565b6000600254905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461079757336040517f3fe32fba00000000000000000000000000000000000000000000000000000000815260040161078e9190611966565b60405180910390fd5b6107a18383610f81565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb846040516107e89190611b27565b60405180910390a3505050565b600080610800610dae565b905061080d8582856110d8565b610818858585611164565b60019150509392505050565b60006012905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008061085e610dae565b905061087f8185856108708589610d27565b61087a9190611b79565b610db6565b600191505092915050565b61089b610895610dae565b826113dc565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099e57336040517fe700765e0000000000000000000000000000000000000000000000000000000081526004016109959190611966565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a27576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610add929190611981565b60405180910390a1565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b7957336040517f3fe32fba000000000000000000000000000000000000000000000000000000008152600401610b709190611966565b60405180910390fd5b610b8382826115aa565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b182604051610bc99190611b27565b60405180910390a25050565b606060048054610be490611c61565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1090611c61565b8015610c5d5780601f10610c3257610100808354040283529160200191610c5d565b820191906000526020600020905b815481529060010190602001808311610c4057829003601f168201915b5050505050905090565b600080610c72610dae565b90506000610c808286610d27565b905083811015610cc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbc90611ae7565b60405180910390fd5b610cd28286868403610db6565b60019250505092915050565b600080610ce9610dae565b9050610cf6818585611164565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1d90611ac7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d90611a27565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f749190611b27565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890611b07565b60405180910390fd5b610ffd600083836115ca565b806002600082825461100f9190611b79565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110c09190611b27565b60405180910390a36110d4600083836115cf565b5050565b60006110e48484610d27565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461115e5781811015611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114790611a47565b60405180910390fd5b61115d8484848403610db6565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb90611aa7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123b906119e7565b60405180910390fd5b61124f8383836115ca565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc90611a67565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113c39190611b27565b60405180910390a36113d68484846115cf565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561144c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144390611a87565b60405180910390fd5b611458826000836115ca565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d590611a07565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115919190611b27565b60405180910390a36115a5836000846115cf565b505050565b6115bc826115b6610dae565b836110d8565b6115c682826113dc565b5050565b505050565b505050565b6000813590506115e381611fd1565b92915050565b6000813590506115f881611fe8565b92915050565b60008135905061160d81611fff565b92915050565b60006020828403121561162957611628611cf1565b5b6000611637848285016115d4565b91505092915050565b6000806040838503121561165757611656611cf1565b5b6000611665858286016115d4565b9250506020611676858286016115d4565b9150509250929050565b60008060006060848603121561169957611698611cf1565b5b60006116a7868287016115d4565b93505060206116b8868287016115d4565b92505060406116c9868287016115fe565b9150509250925092565b600080604083850312156116ea576116e9611cf1565b5b60006116f8858286016115d4565b9250506020611709858286016115fe565b9150509250929050565b60008060006060848603121561172c5761172b611cf1565b5b600061173a868287016115d4565b935050602061174b868287016115fe565b925050604061175c868287016115e9565b9150509250925092565b60006020828403121561177c5761177b611cf1565b5b600061178a848285016115fe565b91505092915050565b61179c81611bcf565b82525050565b6117ab81611be1565b82525050565b60006117bc82611b5d565b6117c68185611b68565b93506117d6818560208601611c2e565b6117df81611cf6565b840191505092915050565b60006117f7602383611b68565b915061180282611d07565b604082019050919050565b600061181a602283611b68565b915061182582611d56565b604082019050919050565b600061183d602283611b68565b915061184882611da5565b604082019050919050565b6000611860601d83611b68565b915061186b82611df4565b602082019050919050565b6000611883602683611b68565b915061188e82611e1d565b604082019050919050565b60006118a6602183611b68565b91506118b182611e6c565b604082019050919050565b60006118c9602583611b68565b91506118d482611ebb565b604082019050919050565b60006118ec602483611b68565b91506118f782611f0a565b604082019050919050565b600061190f602583611b68565b915061191a82611f59565b604082019050919050565b6000611932601f83611b68565b915061193d82611fa8565b602082019050919050565b61195181611c17565b82525050565b61196081611c21565b82525050565b600060208201905061197b6000830184611793565b92915050565b60006040820190506119966000830185611793565b6119a36020830184611793565b9392505050565b60006020820190506119bf60008301846117a2565b92915050565b600060208201905081810360008301526119df81846117b1565b905092915050565b60006020820190508181036000830152611a00816117ea565b9050919050565b60006020820190508181036000830152611a208161180d565b9050919050565b60006020820190508181036000830152611a4081611830565b9050919050565b60006020820190508181036000830152611a6081611853565b9050919050565b60006020820190508181036000830152611a8081611876565b9050919050565b60006020820190508181036000830152611aa081611899565b9050919050565b60006020820190508181036000830152611ac0816118bc565b9050919050565b60006020820190508181036000830152611ae0816118df565b9050919050565b60006020820190508181036000830152611b0081611902565b9050919050565b60006020820190508181036000830152611b2081611925565b9050919050565b6000602082019050611b3c6000830184611948565b92915050565b6000602082019050611b576000830184611957565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611b8482611c17565b9150611b8f83611c17565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611bc457611bc3611c93565b5b828201905092915050565b6000611bda82611bf7565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611c4c578082015181840152602081019050611c31565b83811115611c5b576000848401525b50505050565b60006002820490506001821680611c7957607f821691505b60208210811415611c8d57611c8c611cc2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b611fda81611bcf565b8114611fe557600080fd5b50565b611ff181611bed565b8114611ffc57600080fd5b50565b61200881611c17565b811461201357600080fd5b5056fea2646970667358221220bd1393fae79c8d0bb84c13332f8c58d8b5424cb9fb90b304c7162b49e7360c6f64736f6c63430008070033", } // ZetaNonEthABI is the input ABI used to generate the binding from. @@ -990,6 +990,141 @@ func (_ZetaNonEth *ZetaNonEthFilterer) ParseBurnt(log types.Log) (*ZetaNonEthBur return event, nil } +// ZetaNonEthConnectorAddressUpdatedIterator is returned from FilterConnectorAddressUpdated and is used to iterate over the raw logs and unpacked data for ConnectorAddressUpdated events raised by the ZetaNonEth contract. +type ZetaNonEthConnectorAddressUpdatedIterator struct { + Event *ZetaNonEthConnectorAddressUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaNonEthConnectorAddressUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthConnectorAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthConnectorAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaNonEthConnectorAddressUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaNonEthConnectorAddressUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaNonEthConnectorAddressUpdated represents a ConnectorAddressUpdated event raised by the ZetaNonEth contract. +type ZetaNonEthConnectorAddressUpdated struct { + CallerAddress common.Address + NewConnectorAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterConnectorAddressUpdated is a free log retrieval operation binding the contract event 0x1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c. +// +// Solidity: event ConnectorAddressUpdated(address callerAddress, address newConnectorAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) FilterConnectorAddressUpdated(opts *bind.FilterOpts) (*ZetaNonEthConnectorAddressUpdatedIterator, error) { + + logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "ConnectorAddressUpdated") + if err != nil { + return nil, err + } + return &ZetaNonEthConnectorAddressUpdatedIterator{contract: _ZetaNonEth.contract, event: "ConnectorAddressUpdated", logs: logs, sub: sub}, nil +} + +// WatchConnectorAddressUpdated is a free log subscription operation binding the contract event 0x1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c. +// +// Solidity: event ConnectorAddressUpdated(address callerAddress, address newConnectorAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) WatchConnectorAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaNonEthConnectorAddressUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "ConnectorAddressUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaNonEthConnectorAddressUpdated) + if err := _ZetaNonEth.contract.UnpackLog(event, "ConnectorAddressUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseConnectorAddressUpdated is a log parse operation binding the contract event 0x1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c. +// +// Solidity: event ConnectorAddressUpdated(address callerAddress, address newConnectorAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) ParseConnectorAddressUpdated(log types.Log) (*ZetaNonEthConnectorAddressUpdated, error) { + event := new(ZetaNonEthConnectorAddressUpdated) + if err := _ZetaNonEth.contract.UnpackLog(event, "ConnectorAddressUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ZetaNonEthMintedIterator is returned from FilterMinted and is used to iterate over the raw logs and unpacked data for Minted events raised by the ZetaNonEth contract. type ZetaNonEthMintedIterator struct { Event *ZetaNonEthMinted // Event containing the contract specifics and raw log @@ -1146,6 +1281,276 @@ func (_ZetaNonEth *ZetaNonEthFilterer) ParseMinted(log types.Log) (*ZetaNonEthMi return event, nil } +// ZetaNonEthTSSAddressUpdatedIterator is returned from FilterTSSAddressUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdated events raised by the ZetaNonEth contract. +type ZetaNonEthTSSAddressUpdatedIterator struct { + Event *ZetaNonEthTSSAddressUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaNonEthTSSAddressUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthTSSAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthTSSAddressUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaNonEthTSSAddressUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaNonEthTSSAddressUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaNonEthTSSAddressUpdated represents a TSSAddressUpdated event raised by the ZetaNonEth contract. +type ZetaNonEthTSSAddressUpdated struct { + CallerAddress common.Address + NewTssAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTSSAddressUpdated is a free log retrieval operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. +// +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) FilterTSSAddressUpdated(opts *bind.FilterOpts) (*ZetaNonEthTSSAddressUpdatedIterator, error) { + + logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "TSSAddressUpdated") + if err != nil { + return nil, err + } + return &ZetaNonEthTSSAddressUpdatedIterator{contract: _ZetaNonEth.contract, event: "TSSAddressUpdated", logs: logs, sub: sub}, nil +} + +// WatchTSSAddressUpdated is a free log subscription operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. +// +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) WatchTSSAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaNonEthTSSAddressUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "TSSAddressUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaNonEthTSSAddressUpdated) + if err := _ZetaNonEth.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTSSAddressUpdated is a log parse operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. +// +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) ParseTSSAddressUpdated(log types.Log) (*ZetaNonEthTSSAddressUpdated, error) { + event := new(ZetaNonEthTSSAddressUpdated) + if err := _ZetaNonEth.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// ZetaNonEthTSSAddressUpdaterUpdatedIterator is returned from FilterTSSAddressUpdaterUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdaterUpdated events raised by the ZetaNonEth contract. +type ZetaNonEthTSSAddressUpdaterUpdatedIterator struct { + Event *ZetaNonEthTSSAddressUpdaterUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaNonEthTSSAddressUpdaterUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthTSSAddressUpdaterUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaNonEthTSSAddressUpdaterUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaNonEthTSSAddressUpdaterUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaNonEthTSSAddressUpdaterUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaNonEthTSSAddressUpdaterUpdated represents a TSSAddressUpdaterUpdated event raised by the ZetaNonEth contract. +type ZetaNonEthTSSAddressUpdaterUpdated struct { + CallerAddress common.Address + NewTssUpdaterAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTSSAddressUpdaterUpdated is a free log retrieval operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) FilterTSSAddressUpdaterUpdated(opts *bind.FilterOpts) (*ZetaNonEthTSSAddressUpdaterUpdatedIterator, error) { + + logs, sub, err := _ZetaNonEth.contract.FilterLogs(opts, "TSSAddressUpdaterUpdated") + if err != nil { + return nil, err + } + return &ZetaNonEthTSSAddressUpdaterUpdatedIterator{contract: _ZetaNonEth.contract, event: "TSSAddressUpdaterUpdated", logs: logs, sub: sub}, nil +} + +// WatchTSSAddressUpdaterUpdated is a free log subscription operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) WatchTSSAddressUpdaterUpdated(opts *bind.WatchOpts, sink chan<- *ZetaNonEthTSSAddressUpdaterUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaNonEth.contract.WatchLogs(opts, "TSSAddressUpdaterUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaNonEthTSSAddressUpdaterUpdated) + if err := _ZetaNonEth.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTSSAddressUpdaterUpdated is a log parse operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaNonEth *ZetaNonEthFilterer) ParseTSSAddressUpdaterUpdated(log types.Log) (*ZetaNonEthTSSAddressUpdaterUpdated, error) { + event := new(ZetaNonEthTSSAddressUpdaterUpdated) + if err := _ZetaNonEth.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ZetaNonEthTransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the ZetaNonEth contract. type ZetaNonEthTransferIterator struct { Event *ZetaNonEthTransfer // Event containing the contract specifics and raw log diff --git a/pkg/contracts/evm/zetaconnector.base.sol/zetaconnectorbase.go b/pkg/contracts/evm/zetaconnector.base.sol/zetaconnectorbase.go index c7f7bc48..f3046872 100644 --- a/pkg/contracts/evm/zetaconnector.base.sol/zetaconnectorbase.go +++ b/pkg/contracts/evm/zetaconnector.base.sol/zetaconnectorbase.go @@ -41,8 +41,8 @@ type ZetaInterfacesSendInput struct { // ZetaConnectorBaseMetaData contains all meta data concerning the ZetaConnectorBase contract. var ZetaConnectorBaseMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddressUpdater_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotPauser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTss\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssOrUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceedsMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaTransferError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"updaterAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"PauserAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sourceTxOriginAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"name\":\"ZetaSent\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceTssAddressUpdater\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.SendInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddressUpdater\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"name\":\"updatePauserAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"}],\"name\":\"updateTssAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a06040523480156200001157600080fd5b50604051620012c3380380620012c383398181016040528101906200003791906200027c565b60008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000b95750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000f15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001295750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000161576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000341565b600081519050620002768162000327565b92915050565b6000806000806080858703121562000299576200029862000322565b5b6000620002a98782880162000265565b9450506020620002bc8782880162000265565b9350506040620002cf8782880162000265565b9250506060620002e28782880162000265565b91505092959194509250565b6000620002fb8262000302565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200033281620002ee565b81146200033e57600080fd5b50565b60805160601c610f636200036060003960006102160152610f636000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636128480f1161008c5780639122c344116100665780639122c344146101a2578063942a5e16146101be578063ec026901146101da578063f7fb869b146101f6576100cf565b80636128480f14610172578063779e3b631461018e5780638456cb5914610198576100cf565b806321e093b1146100d457806329dd214d146100f2578063328a01d01461010e5780633f4ba83a1461012c5780635b112591146101365780635c975abb14610154575b600080fd5b6100dc610214565b6040516100e99190610d76565b60405180910390f35b61010c60048036038101906101079190610bfa565b610238565b005b610116610242565b6040516101239190610d76565b60405180910390f35b610134610268565b005b61013e610304565b60405161014b9190610d76565b60405180910390f35b61015c61032a565b6040516101699190610dba565b60405180910390f35b61018c60048036038101906101879190610aeb565b610340565b005b6101966104b6565b005b6101a0610636565b005b6101bc60048036038101906101b79190610aeb565b6106d2565b005b6101d860048036038101906101d39190610b18565b6108a4565b005b6101f460048036038101906101ef9190610cc9565b6108af565b005b6101fe6108b2565b60405161020b9190610d76565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b5050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102fa57336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016102f19190610d76565b60405180910390fd5b6103026108d8565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103d257336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016103c99190610d76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610439576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d039733826040516104ab929190610d91565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461054857336040517fe700765e00000000000000000000000000000000000000000000000000000000815260040161053f9190610d76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105d1576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106c857336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016106bf9190610d76565b60405180910390fd5b6106d061093a565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561077e5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156107c057336040517fcdfcef970000000000000000000000000000000000000000000000000000000081526004016107b79190610d76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610827576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610899929190610d91565b60405180910390a150565b505050505050505050565b50565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108e061099c565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6109236109e5565b6040516109309190610d76565b60405180910390a1565b6109426109ed565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586109856109e5565b6040516109929190610d76565b60405180910390a1565b6109a461032a565b6109e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109da90610dd5565b60405180910390fd5b565b600033905090565b6109f561032a565b15610a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2c90610df5565b60405180910390fd5b565b600081359050610a4681610ee8565b92915050565b600081359050610a5b81610eff565b92915050565b60008083601f840112610a7757610a76610e7d565b5b8235905067ffffffffffffffff811115610a9457610a93610e78565b5b602083019150836001820283011115610ab057610aaf610e87565b5b9250929050565b600060c08284031215610acd57610acc610e82565b5b81905092915050565b600081359050610ae581610f16565b92915050565b600060208284031215610b0157610b00610e91565b5b6000610b0f84828501610a37565b91505092915050565b600080600080600080600080600060e08a8c031215610b3a57610b39610e91565b5b6000610b488c828d01610a37565b9950506020610b598c828d01610ad6565b98505060408a013567ffffffffffffffff811115610b7a57610b79610e8c565b5b610b868c828d01610a61565b97509750506060610b998c828d01610ad6565b9550506080610baa8c828d01610ad6565b94505060a08a013567ffffffffffffffff811115610bcb57610bca610e8c565b5b610bd78c828d01610a61565b935093505060c0610bea8c828d01610a4c565b9150509295985092959850929598565b60008060008060008060008060c0898b031215610c1a57610c19610e91565b5b600089013567ffffffffffffffff811115610c3857610c37610e8c565b5b610c448b828c01610a61565b98509850506020610c578b828c01610ad6565b9650506040610c688b828c01610a37565b9550506060610c798b828c01610ad6565b945050608089013567ffffffffffffffff811115610c9a57610c99610e8c565b5b610ca68b828c01610a61565b935093505060a0610cb98b828c01610a4c565b9150509295985092959890939650565b600060208284031215610cdf57610cde610e91565b5b600082013567ffffffffffffffff811115610cfd57610cfc610e8c565b5b610d0984828501610ab7565b91505092915050565b610d1b81610e26565b82525050565b610d2a81610e38565b82525050565b6000610d3d601483610e15565b9150610d4882610e96565b602082019050919050565b6000610d60601083610e15565b9150610d6b82610ebf565b602082019050919050565b6000602082019050610d8b6000830184610d12565b92915050565b6000604082019050610da66000830185610d12565b610db36020830184610d12565b9392505050565b6000602082019050610dcf6000830184610d21565b92915050565b60006020820190508181036000830152610dee81610d30565b9050919050565b60006020820190508181036000830152610e0e81610d53565b9050919050565b600082825260208201905092915050565b6000610e3182610e4e565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b610ef181610e26565b8114610efc57600080fd5b50565b610f0881610e44565b8114610f1357600080fd5b50565b610f1f81610e6e565b8114610f2a57600080fd5b5056fea2646970667358221220edc61135d1f12b7a435fc47ff359e2af4895e4c9526a3c1884344fcc790d316a64736f6c63430008070033", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddressUpdater_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotPauser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTss\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssOrUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceedsMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaTransferError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"PauserAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssUpdaterAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdaterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sourceTxOriginAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"name\":\"ZetaSent\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceTssAddressUpdater\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.SendInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddressUpdater\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"name\":\"updatePauserAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"}],\"name\":\"updateTssAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60a06040523480156200001157600080fd5b506040516200131e3803806200131e83398181016040528101906200003791906200027c565b60008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000b95750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000f15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001295750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000161576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000341565b600081519050620002768162000327565b92915050565b6000806000806080858703121562000299576200029862000322565b5b6000620002a98782880162000265565b9450506020620002bc8782880162000265565b9350506040620002cf8782880162000265565b9250506060620002e28782880162000265565b91505092959194509250565b6000620002fb8262000302565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200033281620002ee565b81146200033e57600080fd5b50565b60805160601c610fbe6200036060003960006102160152610fbe6000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636128480f1161008c5780639122c344116100665780639122c344146101a2578063942a5e16146101be578063ec026901146101da578063f7fb869b146101f6576100cf565b80636128480f14610172578063779e3b631461018e5780638456cb5914610198576100cf565b806321e093b1146100d457806329dd214d146100f2578063328a01d01461010e5780633f4ba83a1461012c5780635b112591146101365780635c975abb14610154575b600080fd5b6100dc610214565b6040516100e99190610dd1565b60405180910390f35b61010c60048036038101906101079190610c55565b610238565b005b610116610242565b6040516101239190610dd1565b60405180910390f35b610134610268565b005b61013e610304565b60405161014b9190610dd1565b60405180910390f35b61015c61032a565b6040516101699190610e15565b60405180910390f35b61018c60048036038101906101879190610b46565b610340565b005b6101966104b6565b005b6101a0610691565b005b6101bc60048036038101906101b79190610b46565b61072d565b005b6101d860048036038101906101d39190610b73565b6108ff565b005b6101f460048036038101906101ef9190610d24565b61090a565b005b6101fe61090d565b60405161020b9190610dd1565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b5050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102fa57336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016102f19190610dd1565b60405180910390fd5b610302610933565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103d257336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016103c99190610dd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610439576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d039733826040516104ab929190610dec565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461054857336040517fe700765e00000000000000000000000000000000000000000000000000000000815260040161053f9190610dd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105d1576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610687929190610dec565b60405180910390a1565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461072357336040517f4677a0d300000000000000000000000000000000000000000000000000000000815260040161071a9190610dd1565b60405180910390fd5b61072b610995565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156107d95750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561081b57336040517fcdfcef970000000000000000000000000000000000000000000000000000000081526004016108129190610dd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610882576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff33826040516108f4929190610dec565b60405180910390a150565b505050505050505050565b50565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61093b6109f7565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61097e610a40565b60405161098b9190610dd1565b60405180910390a1565b61099d610a48565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586109e0610a40565b6040516109ed9190610dd1565b60405180910390a1565b6109ff61032a565b610a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3590610e30565b60405180910390fd5b565b600033905090565b610a5061032a565b15610a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8790610e50565b60405180910390fd5b565b600081359050610aa181610f43565b92915050565b600081359050610ab681610f5a565b92915050565b60008083601f840112610ad257610ad1610ed8565b5b8235905067ffffffffffffffff811115610aef57610aee610ed3565b5b602083019150836001820283011115610b0b57610b0a610ee2565b5b9250929050565b600060c08284031215610b2857610b27610edd565b5b81905092915050565b600081359050610b4081610f71565b92915050565b600060208284031215610b5c57610b5b610eec565b5b6000610b6a84828501610a92565b91505092915050565b600080600080600080600080600060e08a8c031215610b9557610b94610eec565b5b6000610ba38c828d01610a92565b9950506020610bb48c828d01610b31565b98505060408a013567ffffffffffffffff811115610bd557610bd4610ee7565b5b610be18c828d01610abc565b97509750506060610bf48c828d01610b31565b9550506080610c058c828d01610b31565b94505060a08a013567ffffffffffffffff811115610c2657610c25610ee7565b5b610c328c828d01610abc565b935093505060c0610c458c828d01610aa7565b9150509295985092959850929598565b60008060008060008060008060c0898b031215610c7557610c74610eec565b5b600089013567ffffffffffffffff811115610c9357610c92610ee7565b5b610c9f8b828c01610abc565b98509850506020610cb28b828c01610b31565b9650506040610cc38b828c01610a92565b9550506060610cd48b828c01610b31565b945050608089013567ffffffffffffffff811115610cf557610cf4610ee7565b5b610d018b828c01610abc565b935093505060a0610d148b828c01610aa7565b9150509295985092959890939650565b600060208284031215610d3a57610d39610eec565b5b600082013567ffffffffffffffff811115610d5857610d57610ee7565b5b610d6484828501610b12565b91505092915050565b610d7681610e81565b82525050565b610d8581610e93565b82525050565b6000610d98601483610e70565b9150610da382610ef1565b602082019050919050565b6000610dbb601083610e70565b9150610dc682610f1a565b602082019050919050565b6000602082019050610de66000830184610d6d565b92915050565b6000604082019050610e016000830185610d6d565b610e0e6020830184610d6d565b9392505050565b6000602082019050610e2a6000830184610d7c565b92915050565b60006020820190508181036000830152610e4981610d8b565b9050919050565b60006020820190508181036000830152610e6981610dae565b9050919050565b600082825260208201905092915050565b6000610e8c82610ea9565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b610f4c81610e81565b8114610f5757600080fd5b50565b610f6381610e9f565b8114610f6e57600080fd5b50565b610f7a81610ec9565b8114610f8557600080fd5b5056fea26469706673582212208fd8c8de0fa8c6d7ce42d081250a53e2ae3a7e5119c9670a0fb1d03e1c81c2c264736f6c63430008070033", } // ZetaConnectorBaseABI is the input ABI used to generate the binding from. @@ -738,14 +738,14 @@ func (it *ZetaConnectorBasePauserAddressUpdatedIterator) Close() error { // ZetaConnectorBasePauserAddressUpdated represents a PauserAddressUpdated event raised by the ZetaConnectorBase contract. type ZetaConnectorBasePauserAddressUpdated struct { - UpdaterAddress common.Address - NewTssAddress common.Address - Raw types.Log // Blockchain specific contextual infos + CallerAddress common.Address + NewTssAddress common.Address + Raw types.Log // Blockchain specific contextual infos } // FilterPauserAddressUpdated is a free log retrieval operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. // -// Solidity: event PauserAddressUpdated(address updaterAddress, address newTssAddress) +// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterPauserAddressUpdated(opts *bind.FilterOpts) (*ZetaConnectorBasePauserAddressUpdatedIterator, error) { logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "PauserAddressUpdated") @@ -757,7 +757,7 @@ func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterPauserAddressUpdated( // WatchPauserAddressUpdated is a free log subscription operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. // -// Solidity: event PauserAddressUpdated(address updaterAddress, address newTssAddress) +// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchPauserAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBasePauserAddressUpdated) (event.Subscription, error) { logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "PauserAddressUpdated") @@ -794,7 +794,7 @@ func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchPauserAddressUpdated(o // ParsePauserAddressUpdated is a log parse operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. // -// Solidity: event PauserAddressUpdated(address updaterAddress, address newTssAddress) +// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParsePauserAddressUpdated(log types.Log) (*ZetaConnectorBasePauserAddressUpdated, error) { event := new(ZetaConnectorBasePauserAddressUpdated) if err := _ZetaConnectorBase.contract.UnpackLog(event, "PauserAddressUpdated", log); err != nil { @@ -873,14 +873,14 @@ func (it *ZetaConnectorBaseTSSAddressUpdatedIterator) Close() error { // ZetaConnectorBaseTSSAddressUpdated represents a TSSAddressUpdated event raised by the ZetaConnectorBase contract. type ZetaConnectorBaseTSSAddressUpdated struct { - ZetaTxSenderAddress common.Address - NewTssAddress common.Address - Raw types.Log // Blockchain specific contextual infos + CallerAddress common.Address + NewTssAddress common.Address + Raw types.Log // Blockchain specific contextual infos } // FilterTSSAddressUpdated is a free log retrieval operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. // -// Solidity: event TSSAddressUpdated(address zetaTxSenderAddress, address newTssAddress) +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterTSSAddressUpdated(opts *bind.FilterOpts) (*ZetaConnectorBaseTSSAddressUpdatedIterator, error) { logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "TSSAddressUpdated") @@ -892,7 +892,7 @@ func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterTSSAddressUpdated(opt // WatchTSSAddressUpdated is a free log subscription operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. // -// Solidity: event TSSAddressUpdated(address zetaTxSenderAddress, address newTssAddress) +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchTSSAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBaseTSSAddressUpdated) (event.Subscription, error) { logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "TSSAddressUpdated") @@ -929,7 +929,7 @@ func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchTSSAddressUpdated(opts // ParseTSSAddressUpdated is a log parse operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. // -// Solidity: event TSSAddressUpdated(address zetaTxSenderAddress, address newTssAddress) +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParseTSSAddressUpdated(log types.Log) (*ZetaConnectorBaseTSSAddressUpdated, error) { event := new(ZetaConnectorBaseTSSAddressUpdated) if err := _ZetaConnectorBase.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { @@ -939,6 +939,141 @@ func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParseTSSAddressUpdated(log return event, nil } +// ZetaConnectorBaseTSSAddressUpdaterUpdatedIterator is returned from FilterTSSAddressUpdaterUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdaterUpdated events raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseTSSAddressUpdaterUpdatedIterator struct { + Event *ZetaConnectorBaseTSSAddressUpdaterUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorBaseTSSAddressUpdaterUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBaseTSSAddressUpdaterUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorBaseTSSAddressUpdaterUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorBaseTSSAddressUpdaterUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorBaseTSSAddressUpdaterUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorBaseTSSAddressUpdaterUpdated represents a TSSAddressUpdaterUpdated event raised by the ZetaConnectorBase contract. +type ZetaConnectorBaseTSSAddressUpdaterUpdated struct { + CallerAddress common.Address + NewTssUpdaterAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTSSAddressUpdaterUpdated is a free log retrieval operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) FilterTSSAddressUpdaterUpdated(opts *bind.FilterOpts) (*ZetaConnectorBaseTSSAddressUpdaterUpdatedIterator, error) { + + logs, sub, err := _ZetaConnectorBase.contract.FilterLogs(opts, "TSSAddressUpdaterUpdated") + if err != nil { + return nil, err + } + return &ZetaConnectorBaseTSSAddressUpdaterUpdatedIterator{contract: _ZetaConnectorBase.contract, event: "TSSAddressUpdaterUpdated", logs: logs, sub: sub}, nil +} + +// WatchTSSAddressUpdaterUpdated is a free log subscription operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) WatchTSSAddressUpdaterUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorBaseTSSAddressUpdaterUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorBase.contract.WatchLogs(opts, "TSSAddressUpdaterUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorBaseTSSAddressUpdaterUpdated) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTSSAddressUpdaterUpdated is a log parse operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaConnectorBase *ZetaConnectorBaseFilterer) ParseTSSAddressUpdaterUpdated(log types.Log) (*ZetaConnectorBaseTSSAddressUpdaterUpdated, error) { + event := new(ZetaConnectorBaseTSSAddressUpdaterUpdated) + if err := _ZetaConnectorBase.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ZetaConnectorBaseUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ZetaConnectorBase contract. type ZetaConnectorBaseUnpausedIterator struct { Event *ZetaConnectorBaseUnpaused // Event containing the contract specifics and raw log diff --git a/pkg/contracts/evm/zetaconnector.eth.sol/zetaconnectoreth.go b/pkg/contracts/evm/zetaconnector.eth.sol/zetaconnectoreth.go index 69918682..5ee96d02 100644 --- a/pkg/contracts/evm/zetaconnector.eth.sol/zetaconnectoreth.go +++ b/pkg/contracts/evm/zetaconnector.eth.sol/zetaconnectoreth.go @@ -41,8 +41,8 @@ type ZetaInterfacesSendInput struct { // ZetaConnectorEthMetaData contains all meta data concerning the ZetaConnectorEth contract. var ZetaConnectorEthMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddressUpdater_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotPauser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTss\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssOrUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceedsMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaTransferError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"updaterAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"PauserAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sourceTxOriginAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"name\":\"ZetaSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getLockedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceTssAddressUpdater\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.SendInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddressUpdater\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"name\":\"updatePauserAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"}],\"name\":\"updateTssAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a06040523480156200001157600080fd5b506040516200208b3803806200208b833981810160405281019062000037919062000284565b8383838360008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000bd5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000f55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806200012d5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000165576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050505062000349565b6000815190506200027e816200032f565b92915050565b60008060008060808587031215620002a157620002a06200032a565b5b6000620002b1878288016200026d565b9450506020620002c4878288016200026d565b9350506040620002d7878288016200026d565b9250506060620002ea878288016200026d565b91505092959194509250565b600062000303826200030a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200033a81620002f6565b81146200034657600080fd5b50565b60805160601c611d07620003846000396000818161024f01528181610275015281816103b701528181610d3a0152610fbd0152611d076000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636128480f1161008c5780639122c344116100665780639122c344146101db578063942a5e16146101f7578063ec02690114610213578063f7fb869b1461022f576100ea565b80636128480f146101ab578063779e3b63146101c75780638456cb59146101d1576100ea565b8063328a01d0116100c8578063328a01d0146101475780633f4ba83a146101655780635b1125911461016f5780635c975abb1461018d576100ea565b806321e093b1146100ef578063252bc8861461010d57806329dd214d1461012b575b600080fd5b6100f761024d565b6040516101049190611828565b60405180910390f35b610115610271565b6040516101229190611a95565b60405180910390f35b610145600480360381019061014091906114df565b610321565b005b61014f61063a565b60405161015c9190611828565b60405180910390f35b61016d610660565b005b6101776106fc565b6040516101849190611828565b60405180910390f35b610195610722565b6040516101a291906119ad565b60405180910390f35b6101c560048036038101906101c091906113a3565b610738565b005b6101cf6108ae565b005b6101d9610a2e565b005b6101f560048036038101906101f091906113a3565b610aca565b005b610211600480360381019061020c91906113d0565b610c9c565b005b61022d600480360381019061022891906115ae565b610fb1565b005b610237611140565b6040516102449190611828565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016102cc9190611828565b60206040518083038186803b1580156102e457600080fd5b505afa1580156102f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031c91906115f7565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b357336040517fff70ace20000000000000000000000000000000000000000000000000000000081526004016103aa9190611828565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87876040518363ffffffff1660e01b815260040161041092919061191f565b602060405180830381600087803b15801561042a57600080fd5b505af115801561043e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046291906114b2565b90508061049b576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008484905011156105d7578573ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018a81526020018973ffffffffffffffffffffffffffffffffffffffff16815260200188815260200187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016105a49190611a51565b600060405180830381600087803b1580156105be57600080fd5b505af11580156105d2573d6000803e3d6000fd5b505050505b818673ffffffffffffffffffffffffffffffffffffffff16887ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988c8c8a8a8a6040516106279594939291906119c8565b60405180910390a4505050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f257336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016106e99190611828565b60405180910390fd5b6106fa611166565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107ca57336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016107c19190611828565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610831576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d039733826040516108a3929190611843565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461094057336040517fe700765e0000000000000000000000000000000000000000000000000000000081526004016109379190611828565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156109c9576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ac057336040517f4677a0d3000000000000000000000000000000000000000000000000000000008152600401610ab79190611828565b60405180910390fd5b610ac86111c8565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610b765750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610bb857336040517fcdfcef97000000000000000000000000000000000000000000000000000000008152600401610baf9190611828565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c1f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610c91929190611843565b60405180910390a150565b610ca461122a565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d3657336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610d2d9190611828565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8b876040518363ffffffff1660e01b8152600401610d9392919061191f565b602060405180830381600087803b158015610dad57600080fd5b505af1158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de591906114b2565b905080610e1e576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848490501115610f60578973ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c81526020018b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200189815260200188815260200187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b8152600401610f2d9190611a73565b600060405180830381600087803b158015610f4757600080fd5b505af1158015610f5b573d6000803e3d6000fd5b505050505b81867f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888c8c8c8c8b8b8b604051610f9d9796959493929190611948565b60405180910390a350505050505050505050565b610fb961122a565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd333085608001356040518463ffffffff1660e01b815260040161101c9392919061186c565b602060405180830381600087803b15801561103657600080fd5b505af115801561104a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106e91906114b2565b9050806110a7576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4328580602001906110f59190611ab0565b8760800135886040013589806060019061110f9190611ab0565b8b8060a0019061111f9190611ab0565b604051611134999897969594939291906118a3565b60405180910390a35050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61116e611274565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6111b16112bd565b6040516111be9190611828565b60405180910390a1565b6111d061122a565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586112136112bd565b6040516112209190611828565b60405180910390a1565b611232610722565b15611272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126990611a31565b60405180910390fd5b565b61127c610722565b6112bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b290611a11565b60405180910390fd5b565b600033905090565b6000813590506112d481611c75565b92915050565b6000815190506112e981611c8c565b92915050565b6000813590506112fe81611ca3565b92915050565b60008083601f84011261131a57611319611bea565b5b8235905067ffffffffffffffff81111561133757611336611be5565b5b60208301915083600182028301111561135357611352611bfe565b5b9250929050565b600060c082840312156113705761136f611bf4565b5b81905092915050565b60008135905061138881611cba565b92915050565b60008151905061139d81611cba565b92915050565b6000602082840312156113b9576113b8611c0d565b5b60006113c7848285016112c5565b91505092915050565b600080600080600080600080600060e08a8c0312156113f2576113f1611c0d565b5b60006114008c828d016112c5565b99505060206114118c828d01611379565b98505060408a013567ffffffffffffffff81111561143257611431611c08565b5b61143e8c828d01611304565b975097505060606114518c828d01611379565b95505060806114628c828d01611379565b94505060a08a013567ffffffffffffffff81111561148357611482611c08565b5b61148f8c828d01611304565b935093505060c06114a28c828d016112ef565b9150509295985092959850929598565b6000602082840312156114c8576114c7611c0d565b5b60006114d6848285016112da565b91505092915050565b60008060008060008060008060c0898b0312156114ff576114fe611c0d565b5b600089013567ffffffffffffffff81111561151d5761151c611c08565b5b6115298b828c01611304565b9850985050602061153c8b828c01611379565b965050604061154d8b828c016112c5565b955050606061155e8b828c01611379565b945050608089013567ffffffffffffffff81111561157f5761157e611c08565b5b61158b8b828c01611304565b935093505060a061159e8b828c016112ef565b9150509295985092959890939650565b6000602082840312156115c4576115c3611c0d565b5b600082013567ffffffffffffffff8111156115e2576115e1611c08565b5b6115ee8482850161135a565b91505092915050565b60006020828403121561160d5761160c611c0d565b5b600061161b8482850161138e565b91505092915050565b61162d81611b51565b82525050565b61163c81611b51565b82525050565b61164b81611b63565b82525050565b600061165d8385611b2f565b935061166a838584611ba3565b61167383611c12565b840190509392505050565b600061168982611b13565b6116938185611b1e565b93506116a3818560208601611bb2565b6116ac81611c12565b840191505092915050565b60006116c4601483611b40565b91506116cf82611c23565b602082019050919050565b60006116e7601083611b40565b91506116f282611c4c565b602082019050919050565b600060a083016000830151848203600086015261171a828261167e565b915050602083015161172f602086018261180a565b5060408301516117426040860182611624565b506060830151611755606086018261180a565b506080830151848203608086015261176d828261167e565b9150508091505092915050565b600060c0830160008301516117926000860182611624565b5060208301516117a5602086018261180a565b50604083015184820360408601526117bd828261167e565b91505060608301516117d2606086018261180a565b5060808301516117e5608086018261180a565b5060a083015184820360a08601526117fd828261167e565b9150508091505092915050565b61181381611b99565b82525050565b61182281611b99565b82525050565b600060208201905061183d6000830184611633565b92915050565b60006040820190506118586000830185611633565b6118656020830184611633565b9392505050565b60006060820190506118816000830186611633565b61188e6020830185611633565b61189b6040830184611819565b949350505050565b600060c0820190506118b8600083018c611633565b81810360208301526118cb818a8c611651565b90506118da6040830189611819565b6118e76060830188611819565b81810360808301526118fa818688611651565b905081810360a083015261190f818486611651565b90509a9950505050505050505050565b60006040820190506119346000830185611633565b6119416020830184611819565b9392505050565b600060a08201905061195d600083018a611633565b61196a6020830189611819565b818103604083015261197d818789611651565b905061198c6060830186611819565b818103608083015261199f818486611651565b905098975050505050505050565b60006020820190506119c26000830184611642565b92915050565b600060608201905081810360008301526119e3818789611651565b90506119f26020830186611819565b8181036040830152611a05818486611651565b90509695505050505050565b60006020820190508181036000830152611a2a816116b7565b9050919050565b60006020820190508181036000830152611a4a816116da565b9050919050565b60006020820190508181036000830152611a6b81846116fd565b905092915050565b60006020820190508181036000830152611a8d818461177a565b905092915050565b6000602082019050611aaa6000830184611819565b92915050565b60008083356001602003843603038112611acd57611acc611bf9565b5b80840192508235915067ffffffffffffffff821115611aef57611aee611bef565b5b602083019250600182023603831315611b0b57611b0a611c03565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611b5c82611b79565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611bd0578082015181840152602081019050611bb5565b83811115611bdf576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b611c7e81611b51565b8114611c8957600080fd5b50565b611c9581611b63565b8114611ca057600080fd5b50565b611cac81611b6f565b8114611cb757600080fd5b50565b611cc381611b99565b8114611cce57600080fd5b5056fea26469706673582212204212370b667f98941ae9f4db5ec4402967fd7a411891babfcc828517bfa25a2464736f6c63430008070033", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaToken_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddressUpdater_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotPauser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTss\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssOrUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceedsMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaTransferError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"PauserAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssUpdaterAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdaterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sourceTxOriginAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"name\":\"ZetaSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getLockedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceTssAddressUpdater\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.SendInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddressUpdater\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"name\":\"updatePauserAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"}],\"name\":\"updateTssAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60a06040523480156200001157600080fd5b50604051620020e6380380620020e6833981810160405281019062000037919062000284565b8383838360008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000bd5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000f55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806200012d5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000165576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050505062000349565b6000815190506200027e816200032f565b92915050565b60008060008060808587031215620002a157620002a06200032a565b5b6000620002b1878288016200026d565b9450506020620002c4878288016200026d565b9350506040620002d7878288016200026d565b9250506060620002ea878288016200026d565b91505092959194509250565b600062000303826200030a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200033a81620002f6565b81146200034657600080fd5b50565b60805160601c611d62620003846000396000818161024f01528181610275015281816103b701528181610d9501526110180152611d626000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636128480f1161008c5780639122c344116100665780639122c344146101db578063942a5e16146101f7578063ec02690114610213578063f7fb869b1461022f576100ea565b80636128480f146101ab578063779e3b63146101c75780638456cb59146101d1576100ea565b8063328a01d0116100c8578063328a01d0146101475780633f4ba83a146101655780635b1125911461016f5780635c975abb1461018d576100ea565b806321e093b1146100ef578063252bc8861461010d57806329dd214d1461012b575b600080fd5b6100f761024d565b6040516101049190611883565b60405180910390f35b610115610271565b6040516101229190611af0565b60405180910390f35b6101456004803603810190610140919061153a565b610321565b005b61014f61063a565b60405161015c9190611883565b60405180910390f35b61016d610660565b005b6101776106fc565b6040516101849190611883565b60405180910390f35b610195610722565b6040516101a29190611a08565b60405180910390f35b6101c560048036038101906101c091906113fe565b610738565b005b6101cf6108ae565b005b6101d9610a89565b005b6101f560048036038101906101f091906113fe565b610b25565b005b610211600480360381019061020c919061142b565b610cf7565b005b61022d60048036038101906102289190611609565b61100c565b005b61023761119b565b6040516102449190611883565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016102cc9190611883565b60206040518083038186803b1580156102e457600080fd5b505afa1580156102f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031c9190611652565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b357336040517fff70ace20000000000000000000000000000000000000000000000000000000081526004016103aa9190611883565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87876040518363ffffffff1660e01b815260040161041092919061197a565b602060405180830381600087803b15801561042a57600080fd5b505af115801561043e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610462919061150d565b90508061049b576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008484905011156105d7578573ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018a81526020018973ffffffffffffffffffffffffffffffffffffffff16815260200188815260200187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016105a49190611aac565b600060405180830381600087803b1580156105be57600080fd5b505af11580156105d2573d6000803e3d6000fd5b505050505b818673ffffffffffffffffffffffffffffffffffffffff16887ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988c8c8a8a8a604051610627959493929190611a23565b60405180910390a4505050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f257336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016106e99190611883565b60405180910390fd5b6106fa6111c1565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107ca57336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016107c19190611883565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610831576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d039733826040516108a392919061189e565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461094057336040517fe700765e0000000000000000000000000000000000000000000000000000000081526004016109379190611883565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156109c9576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610a7f92919061189e565b60405180910390a1565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b1b57336040517f4677a0d3000000000000000000000000000000000000000000000000000000008152600401610b129190611883565b60405180910390fd5b610b23611223565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610bd15750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610c1357336040517fcdfcef97000000000000000000000000000000000000000000000000000000008152600401610c0a9190611883565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c7a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610cec92919061189e565b60405180910390a150565b610cff611285565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d9157336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610d889190611883565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8b876040518363ffffffff1660e01b8152600401610dee92919061197a565b602060405180830381600087803b158015610e0857600080fd5b505af1158015610e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e40919061150d565b905080610e79576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848490501115610fbb578973ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c81526020018b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200189815260200188815260200187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b8152600401610f889190611ace565b600060405180830381600087803b158015610fa257600080fd5b505af1158015610fb6573d6000803e3d6000fd5b505050505b81867f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888c8c8c8c8b8b8b604051610ff897969594939291906119a3565b60405180910390a350505050505050505050565b611014611285565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd333085608001356040518463ffffffff1660e01b8152600401611077939291906118c7565b602060405180830381600087803b15801561109157600080fd5b505af11580156110a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c9919061150d565b905080611102576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4328580602001906111509190611b0b565b8760800135886040013589806060019061116a9190611b0b565b8b8060a0019061117a9190611b0b565b60405161118f999897969594939291906118fe565b60405180910390a35050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111c96112cf565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61120c611318565b6040516112199190611883565b60405180910390a1565b61122b611285565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861126e611318565b60405161127b9190611883565b60405180910390a1565b61128d610722565b156112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c490611a8c565b60405180910390fd5b565b6112d7610722565b611316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130d90611a6c565b60405180910390fd5b565b600033905090565b60008135905061132f81611cd0565b92915050565b60008151905061134481611ce7565b92915050565b60008135905061135981611cfe565b92915050565b60008083601f84011261137557611374611c45565b5b8235905067ffffffffffffffff81111561139257611391611c40565b5b6020830191508360018202830111156113ae576113ad611c59565b5b9250929050565b600060c082840312156113cb576113ca611c4f565b5b81905092915050565b6000813590506113e381611d15565b92915050565b6000815190506113f881611d15565b92915050565b60006020828403121561141457611413611c68565b5b600061142284828501611320565b91505092915050565b600080600080600080600080600060e08a8c03121561144d5761144c611c68565b5b600061145b8c828d01611320565b995050602061146c8c828d016113d4565b98505060408a013567ffffffffffffffff81111561148d5761148c611c63565b5b6114998c828d0161135f565b975097505060606114ac8c828d016113d4565b95505060806114bd8c828d016113d4565b94505060a08a013567ffffffffffffffff8111156114de576114dd611c63565b5b6114ea8c828d0161135f565b935093505060c06114fd8c828d0161134a565b9150509295985092959850929598565b60006020828403121561152357611522611c68565b5b600061153184828501611335565b91505092915050565b60008060008060008060008060c0898b03121561155a57611559611c68565b5b600089013567ffffffffffffffff81111561157857611577611c63565b5b6115848b828c0161135f565b985098505060206115978b828c016113d4565b96505060406115a88b828c01611320565b95505060606115b98b828c016113d4565b945050608089013567ffffffffffffffff8111156115da576115d9611c63565b5b6115e68b828c0161135f565b935093505060a06115f98b828c0161134a565b9150509295985092959890939650565b60006020828403121561161f5761161e611c68565b5b600082013567ffffffffffffffff81111561163d5761163c611c63565b5b611649848285016113b5565b91505092915050565b60006020828403121561166857611667611c68565b5b6000611676848285016113e9565b91505092915050565b61168881611bac565b82525050565b61169781611bac565b82525050565b6116a681611bbe565b82525050565b60006116b88385611b8a565b93506116c5838584611bfe565b6116ce83611c6d565b840190509392505050565b60006116e482611b6e565b6116ee8185611b79565b93506116fe818560208601611c0d565b61170781611c6d565b840191505092915050565b600061171f601483611b9b565b915061172a82611c7e565b602082019050919050565b6000611742601083611b9b565b915061174d82611ca7565b602082019050919050565b600060a083016000830151848203600086015261177582826116d9565b915050602083015161178a6020860182611865565b50604083015161179d604086018261167f565b5060608301516117b06060860182611865565b50608083015184820360808601526117c882826116d9565b9150508091505092915050565b600060c0830160008301516117ed600086018261167f565b5060208301516118006020860182611865565b506040830151848203604086015261181882826116d9565b915050606083015161182d6060860182611865565b5060808301516118406080860182611865565b5060a083015184820360a086015261185882826116d9565b9150508091505092915050565b61186e81611bf4565b82525050565b61187d81611bf4565b82525050565b6000602082019050611898600083018461168e565b92915050565b60006040820190506118b3600083018561168e565b6118c0602083018461168e565b9392505050565b60006060820190506118dc600083018661168e565b6118e9602083018561168e565b6118f66040830184611874565b949350505050565b600060c082019050611913600083018c61168e565b8181036020830152611926818a8c6116ac565b90506119356040830189611874565b6119426060830188611874565b81810360808301526119558186886116ac565b905081810360a083015261196a8184866116ac565b90509a9950505050505050505050565b600060408201905061198f600083018561168e565b61199c6020830184611874565b9392505050565b600060a0820190506119b8600083018a61168e565b6119c56020830189611874565b81810360408301526119d88187896116ac565b90506119e76060830186611874565b81810360808301526119fa8184866116ac565b905098975050505050505050565b6000602082019050611a1d600083018461169d565b92915050565b60006060820190508181036000830152611a3e8187896116ac565b9050611a4d6020830186611874565b8181036040830152611a608184866116ac565b90509695505050505050565b60006020820190508181036000830152611a8581611712565b9050919050565b60006020820190508181036000830152611aa581611735565b9050919050565b60006020820190508181036000830152611ac68184611758565b905092915050565b60006020820190508181036000830152611ae881846117d5565b905092915050565b6000602082019050611b056000830184611874565b92915050565b60008083356001602003843603038112611b2857611b27611c54565b5b80840192508235915067ffffffffffffffff821115611b4a57611b49611c4a565b5b602083019250600182023603831315611b6657611b65611c5e565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611bb782611bd4565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611c2b578082015181840152602081019050611c10565b83811115611c3a576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b611cd981611bac565b8114611ce457600080fd5b50565b611cf081611bbe565b8114611cfb57600080fd5b50565b611d0781611bca565b8114611d1257600080fd5b50565b611d1e81611bf4565b8114611d2957600080fd5b5056fea2646970667358221220c386ec06beb54bf2f1fa9d6ebdcbce1a2c994b9dc5c90038fe0d0a4b8174e1ea64736f6c63430008070033", } // ZetaConnectorEthABI is the input ABI used to generate the binding from. @@ -769,14 +769,14 @@ func (it *ZetaConnectorEthPauserAddressUpdatedIterator) Close() error { // ZetaConnectorEthPauserAddressUpdated represents a PauserAddressUpdated event raised by the ZetaConnectorEth contract. type ZetaConnectorEthPauserAddressUpdated struct { - UpdaterAddress common.Address - NewTssAddress common.Address - Raw types.Log // Blockchain specific contextual infos + CallerAddress common.Address + NewTssAddress common.Address + Raw types.Log // Blockchain specific contextual infos } // FilterPauserAddressUpdated is a free log retrieval operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. // -// Solidity: event PauserAddressUpdated(address updaterAddress, address newTssAddress) +// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) func (_ZetaConnectorEth *ZetaConnectorEthFilterer) FilterPauserAddressUpdated(opts *bind.FilterOpts) (*ZetaConnectorEthPauserAddressUpdatedIterator, error) { logs, sub, err := _ZetaConnectorEth.contract.FilterLogs(opts, "PauserAddressUpdated") @@ -788,7 +788,7 @@ func (_ZetaConnectorEth *ZetaConnectorEthFilterer) FilterPauserAddressUpdated(op // WatchPauserAddressUpdated is a free log subscription operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. // -// Solidity: event PauserAddressUpdated(address updaterAddress, address newTssAddress) +// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) func (_ZetaConnectorEth *ZetaConnectorEthFilterer) WatchPauserAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorEthPauserAddressUpdated) (event.Subscription, error) { logs, sub, err := _ZetaConnectorEth.contract.WatchLogs(opts, "PauserAddressUpdated") @@ -825,7 +825,7 @@ func (_ZetaConnectorEth *ZetaConnectorEthFilterer) WatchPauserAddressUpdated(opt // ParsePauserAddressUpdated is a log parse operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. // -// Solidity: event PauserAddressUpdated(address updaterAddress, address newTssAddress) +// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) func (_ZetaConnectorEth *ZetaConnectorEthFilterer) ParsePauserAddressUpdated(log types.Log) (*ZetaConnectorEthPauserAddressUpdated, error) { event := new(ZetaConnectorEthPauserAddressUpdated) if err := _ZetaConnectorEth.contract.UnpackLog(event, "PauserAddressUpdated", log); err != nil { @@ -904,14 +904,14 @@ func (it *ZetaConnectorEthTSSAddressUpdatedIterator) Close() error { // ZetaConnectorEthTSSAddressUpdated represents a TSSAddressUpdated event raised by the ZetaConnectorEth contract. type ZetaConnectorEthTSSAddressUpdated struct { - ZetaTxSenderAddress common.Address - NewTssAddress common.Address - Raw types.Log // Blockchain specific contextual infos + CallerAddress common.Address + NewTssAddress common.Address + Raw types.Log // Blockchain specific contextual infos } // FilterTSSAddressUpdated is a free log retrieval operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. // -// Solidity: event TSSAddressUpdated(address zetaTxSenderAddress, address newTssAddress) +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) func (_ZetaConnectorEth *ZetaConnectorEthFilterer) FilterTSSAddressUpdated(opts *bind.FilterOpts) (*ZetaConnectorEthTSSAddressUpdatedIterator, error) { logs, sub, err := _ZetaConnectorEth.contract.FilterLogs(opts, "TSSAddressUpdated") @@ -923,7 +923,7 @@ func (_ZetaConnectorEth *ZetaConnectorEthFilterer) FilterTSSAddressUpdated(opts // WatchTSSAddressUpdated is a free log subscription operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. // -// Solidity: event TSSAddressUpdated(address zetaTxSenderAddress, address newTssAddress) +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) func (_ZetaConnectorEth *ZetaConnectorEthFilterer) WatchTSSAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorEthTSSAddressUpdated) (event.Subscription, error) { logs, sub, err := _ZetaConnectorEth.contract.WatchLogs(opts, "TSSAddressUpdated") @@ -960,7 +960,7 @@ func (_ZetaConnectorEth *ZetaConnectorEthFilterer) WatchTSSAddressUpdated(opts * // ParseTSSAddressUpdated is a log parse operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. // -// Solidity: event TSSAddressUpdated(address zetaTxSenderAddress, address newTssAddress) +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) func (_ZetaConnectorEth *ZetaConnectorEthFilterer) ParseTSSAddressUpdated(log types.Log) (*ZetaConnectorEthTSSAddressUpdated, error) { event := new(ZetaConnectorEthTSSAddressUpdated) if err := _ZetaConnectorEth.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { @@ -970,6 +970,141 @@ func (_ZetaConnectorEth *ZetaConnectorEthFilterer) ParseTSSAddressUpdated(log ty return event, nil } +// ZetaConnectorEthTSSAddressUpdaterUpdatedIterator is returned from FilterTSSAddressUpdaterUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdaterUpdated events raised by the ZetaConnectorEth contract. +type ZetaConnectorEthTSSAddressUpdaterUpdatedIterator struct { + Event *ZetaConnectorEthTSSAddressUpdaterUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorEthTSSAddressUpdaterUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorEthTSSAddressUpdaterUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorEthTSSAddressUpdaterUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorEthTSSAddressUpdaterUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorEthTSSAddressUpdaterUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorEthTSSAddressUpdaterUpdated represents a TSSAddressUpdaterUpdated event raised by the ZetaConnectorEth contract. +type ZetaConnectorEthTSSAddressUpdaterUpdated struct { + CallerAddress common.Address + NewTssUpdaterAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTSSAddressUpdaterUpdated is a free log retrieval operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) FilterTSSAddressUpdaterUpdated(opts *bind.FilterOpts) (*ZetaConnectorEthTSSAddressUpdaterUpdatedIterator, error) { + + logs, sub, err := _ZetaConnectorEth.contract.FilterLogs(opts, "TSSAddressUpdaterUpdated") + if err != nil { + return nil, err + } + return &ZetaConnectorEthTSSAddressUpdaterUpdatedIterator{contract: _ZetaConnectorEth.contract, event: "TSSAddressUpdaterUpdated", logs: logs, sub: sub}, nil +} + +// WatchTSSAddressUpdaterUpdated is a free log subscription operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) WatchTSSAddressUpdaterUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorEthTSSAddressUpdaterUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorEth.contract.WatchLogs(opts, "TSSAddressUpdaterUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorEthTSSAddressUpdaterUpdated) + if err := _ZetaConnectorEth.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTSSAddressUpdaterUpdated is a log parse operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaConnectorEth *ZetaConnectorEthFilterer) ParseTSSAddressUpdaterUpdated(log types.Log) (*ZetaConnectorEthTSSAddressUpdaterUpdated, error) { + event := new(ZetaConnectorEthTSSAddressUpdaterUpdated) + if err := _ZetaConnectorEth.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ZetaConnectorEthUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ZetaConnectorEth contract. type ZetaConnectorEthUnpausedIterator struct { Event *ZetaConnectorEthUnpaused // Event containing the contract specifics and raw log diff --git a/pkg/contracts/evm/zetaconnector.non-eth.sol/zetaconnectornoneth.go b/pkg/contracts/evm/zetaconnector.non-eth.sol/zetaconnectornoneth.go index 0957444c..3ef421c9 100644 --- a/pkg/contracts/evm/zetaconnector.non-eth.sol/zetaconnectornoneth.go +++ b/pkg/contracts/evm/zetaconnector.non-eth.sol/zetaconnectornoneth.go @@ -41,8 +41,8 @@ type ZetaInterfacesSendInput struct { // ZetaConnectorNonEthMetaData contains all meta data concerning the ZetaConnectorNonEth contract. var ZetaConnectorNonEthMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaTokenAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddressUpdater_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotPauser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTss\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssOrUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceedsMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaTransferError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"updaterAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"PauserAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sourceTxOriginAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"name\":\"ZetaSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getLockedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceTssAddressUpdater\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.SendInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxSupply_\",\"type\":\"uint256\"}],\"name\":\"setMaxSupply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddressUpdater\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"name\":\"updatePauserAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"}],\"name\":\"updateTssAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60a06040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003553480156200003557600080fd5b50604051620022e7380380620022e783398181016040528101906200005b9190620002a8565b8383838360008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000e15750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620001195750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001515750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000189576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050506200036d565b600081519050620002a28162000353565b92915050565b60008060008060808587031215620002c557620002c46200034e565b5b6000620002d58782880162000291565b9450506020620002e88782880162000291565b9350506040620002fb8782880162000291565b92505060606200030e8782880162000291565b91505092959194509250565b600062000327826200032e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200035e816200031a565b81146200036a57600080fd5b50565b60805160601c611f31620003b66000396000818161029f015281816102c501528181610408015281816104f601528181610ebe01528181610fac01526111db0152611f316000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80636f8b44b011610097578063942a5e1611610066578063942a5e1614610229578063d5abeb0114610245578063ec02690114610263578063f7fb869b1461027f57610100565b80636f8b44b0146101dd578063779e3b63146101f95780638456cb59146102035780639122c3441461020d57610100565b80633f4ba83a116100d35780633f4ba83a1461017b5780635b112591146101855780635c975abb146101a35780636128480f146101c157610100565b806321e093b114610105578063252bc8861461012357806329dd214d14610141578063328a01d01461015d575b600080fd5b61010d61029d565b60405161011a91906119e4565b60405180910390f35b61012b6102c1565b6040516101389190611c51565b60405180910390f35b61015b6004803603810190610156919061165f565b610371565b005b610165610721565b60405161017291906119e4565b60405180910390f35b610183610747565b005b61018d6107e3565b60405161019a91906119e4565b60405180910390f35b6101ab610809565b6040516101b89190611b69565b60405180910390f35b6101db60048036038101906101d69190611550565b61081f565b005b6101f760048036038101906101f29190611777565b610995565b005b610201610a31565b005b61020b610bb1565b005b61022760048036038101906102229190611550565b610c4d565b005b610243600480360381019061023e919061157d565b610e1f565b005b61024d6111cb565b60405161025a9190611c51565b60405180910390f35b61027d6004803603810190610278919061172e565b6111d1565b005b610287611302565b60405161029491906119e4565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161031c91906119e4565b60206040518083038186803b15801561033457600080fd5b505afa158015610348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036c91906117a4565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461040357336040517fff70ace20000000000000000000000000000000000000000000000000000000081526004016103fa91906119e4565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561046c57600080fd5b505afa158015610480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a491906117a4565b856104af9190611d0d565b11156104f4576003546040517f3d3dbc830000000000000000000000000000000000000000000000000000000081526004016104eb9190611c51565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8686846040518463ffffffff1660e01b815260040161055193929190611acd565b600060405180830381600087803b15801561056b57600080fd5b505af115801561057f573d6000803e3d6000fd5b5050505060008383905011156106bf578473ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018981526020018873ffffffffffffffffffffffffffffffffffffffff16815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b815260040161068c9190611c0d565b600060405180830381600087803b1580156106a657600080fd5b505af11580156106ba573d6000803e3d6000fd5b505050505b808573ffffffffffffffffffffffffffffffffffffffff16877ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988b8b89898960405161070f959493929190611b84565b60405180910390a45050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d957336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016107d091906119e4565b60405180910390fd5b6107e1611328565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b157336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016108a891906119e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610918576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397338260405161098a9291906119ff565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a2757336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610a1e91906119e4565b60405180910390fd5b8060038190555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ac357336040517fe700765e000000000000000000000000000000000000000000000000000000008152600401610aba91906119e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610b4c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c4357336040517f4677a0d3000000000000000000000000000000000000000000000000000000008152600401610c3a91906119e4565b60405180910390fd5b610c4b61138a565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610cf95750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610d3b57336040517fcdfcef97000000000000000000000000000000000000000000000000000000008152600401610d3291906119e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610da2576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610e149291906119ff565b60405180910390a150565b610e276113ec565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eb957336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610eb091906119e4565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2257600080fd5b505afa158015610f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5a91906117a4565b85610f659190611d0d565b1115610faa576003546040517f3d3dbc83000000000000000000000000000000000000000000000000000000008152600401610fa19190611c51565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8a86846040518463ffffffff1660e01b815260040161100793929190611acd565b600060405180830381600087803b15801561102157600080fd5b505af1158015611035573d6000803e3d6000fd5b50505050600083839050111561117b578873ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200188815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016111489190611c2f565b600060405180830381600087803b15801561116257600080fd5b505af1158015611176573d6000803e3d6000fd5b505050505b80857f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888b8b8b8b8a8a8a6040516111b89796959493929190611b04565b60405180910390a3505050505050505050565b60035481565b6111d96113ec565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc67903383608001356040518363ffffffff1660e01b8152600401611238929190611aa4565b600060405180830381600087803b15801561125257600080fd5b505af1158015611266573d6000803e3d6000fd5b5050505080600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4328480602001906112b89190611c6c565b866080013587604001358880606001906112d29190611c6c565b8a8060a001906112e29190611c6c565b6040516112f799989796959493929190611a28565b60405180910390a350565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611330611436565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61137361147f565b60405161138091906119e4565b60405180910390a1565b6113926113ec565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113d561147f565b6040516113e291906119e4565b60405180910390a1565b6113f4610809565b15611434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142b90611bed565b60405180910390fd5b565b61143e610809565b61147d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147490611bcd565b60405180910390fd5b565b600033905090565b60008135905061149681611eb6565b92915050565b6000813590506114ab81611ecd565b92915050565b60008083601f8401126114c7576114c6611e2b565b5b8235905067ffffffffffffffff8111156114e4576114e3611e26565b5b602083019150836001820283011115611500576114ff611e3f565b5b9250929050565b600060c0828403121561151d5761151c611e35565b5b81905092915050565b60008135905061153581611ee4565b92915050565b60008151905061154a81611ee4565b92915050565b60006020828403121561156657611565611e4e565b5b600061157484828501611487565b91505092915050565b600080600080600080600080600060e08a8c03121561159f5761159e611e4e565b5b60006115ad8c828d01611487565b99505060206115be8c828d01611526565b98505060408a013567ffffffffffffffff8111156115df576115de611e49565b5b6115eb8c828d016114b1565b975097505060606115fe8c828d01611526565b955050608061160f8c828d01611526565b94505060a08a013567ffffffffffffffff8111156116305761162f611e49565b5b61163c8c828d016114b1565b935093505060c061164f8c828d0161149c565b9150509295985092959850929598565b60008060008060008060008060c0898b03121561167f5761167e611e4e565b5b600089013567ffffffffffffffff81111561169d5761169c611e49565b5b6116a98b828c016114b1565b985098505060206116bc8b828c01611526565b96505060406116cd8b828c01611487565b95505060606116de8b828c01611526565b945050608089013567ffffffffffffffff8111156116ff576116fe611e49565b5b61170b8b828c016114b1565b935093505060a061171e8b828c0161149c565b9150509295985092959890939650565b60006020828403121561174457611743611e4e565b5b600082013567ffffffffffffffff81111561176257611761611e49565b5b61176e84828501611507565b91505092915050565b60006020828403121561178d5761178c611e4e565b5b600061179b84828501611526565b91505092915050565b6000602082840312156117ba576117b9611e4e565b5b60006117c88482850161153b565b91505092915050565b6117da81611d63565b82525050565b6117e981611d63565b82525050565b6117f881611d75565b82525050565b61180781611d81565b82525050565b60006118198385611ceb565b9350611826838584611db5565b61182f83611e53565b840190509392505050565b600061184582611ccf565b61184f8185611cda565b935061185f818560208601611dc4565b61186881611e53565b840191505092915050565b6000611880601483611cfc565b915061188b82611e64565b602082019050919050565b60006118a3601083611cfc565b91506118ae82611e8d565b602082019050919050565b600060a08301600083015184820360008601526118d6828261183a565b91505060208301516118eb60208601826119c6565b5060408301516118fe60408601826117d1565b50606083015161191160608601826119c6565b5060808301518482036080860152611929828261183a565b9150508091505092915050565b600060c08301600083015161194e60008601826117d1565b50602083015161196160208601826119c6565b5060408301518482036040860152611979828261183a565b915050606083015161198e60608601826119c6565b5060808301516119a160808601826119c6565b5060a083015184820360a08601526119b9828261183a565b9150508091505092915050565b6119cf81611dab565b82525050565b6119de81611dab565b82525050565b60006020820190506119f960008301846117e0565b92915050565b6000604082019050611a1460008301856117e0565b611a2160208301846117e0565b9392505050565b600060c082019050611a3d600083018c6117e0565b8181036020830152611a50818a8c61180d565b9050611a5f60408301896119d5565b611a6c60608301886119d5565b8181036080830152611a7f81868861180d565b905081810360a0830152611a9481848661180d565b90509a9950505050505050505050565b6000604082019050611ab960008301856117e0565b611ac660208301846119d5565b9392505050565b6000606082019050611ae260008301866117e0565b611aef60208301856119d5565b611afc60408301846117fe565b949350505050565b600060a082019050611b19600083018a6117e0565b611b2660208301896119d5565b8181036040830152611b3981878961180d565b9050611b4860608301866119d5565b8181036080830152611b5b81848661180d565b905098975050505050505050565b6000602082019050611b7e60008301846117ef565b92915050565b60006060820190508181036000830152611b9f81878961180d565b9050611bae60208301866119d5565b8181036040830152611bc181848661180d565b90509695505050505050565b60006020820190508181036000830152611be681611873565b9050919050565b60006020820190508181036000830152611c0681611896565b9050919050565b60006020820190508181036000830152611c2781846118b9565b905092915050565b60006020820190508181036000830152611c498184611936565b905092915050565b6000602082019050611c6660008301846119d5565b92915050565b60008083356001602003843603038112611c8957611c88611e3a565b5b80840192508235915067ffffffffffffffff821115611cab57611caa611e30565b5b602083019250600182023603831315611cc757611cc6611e44565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611d1882611dab565b9150611d2383611dab565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611d5857611d57611df7565b5b828201905092915050565b6000611d6e82611d8b565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611de2578082015181840152602081019050611dc7565b83811115611df1576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b611ebf81611d63565b8114611eca57600080fd5b50565b611ed681611d81565b8114611ee157600080fd5b50565b611eed81611dab565b8114611ef857600080fd5b5056fea2646970667358221220c11d22456151e214afa4dba7f444fab940bb567cc77b10c43f8e26b0c63df50264736f6c63430008070033", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaTokenAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tssAddressUpdater_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotPauser\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTss\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssOrUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"CallerIsNotTssUpdater\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxSupply\",\"type\":\"uint256\"}],\"name\":\"ExceedsMaxSupply\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZetaTransferError\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMaxSupply\",\"type\":\"uint256\"}],\"name\":\"MaxSupplyUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"PauserAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"callerAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newTssUpdaterAddress\",\"type\":\"address\"}],\"name\":\"TSSAddressUpdaterUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReceived\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"ZetaReverted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sourceTxOriginAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"name\":\"ZetaSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"getLockedAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"zetaTxSenderAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"zetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onReceive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"sourceChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"remainingZetaValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"internalSendHash\",\"type\":\"bytes32\"}],\"name\":\"onRevert\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pauserAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceTssAddressUpdater\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.SendInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxSupply_\",\"type\":\"uint256\"}],\"name\":\"setMaxSupply\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tssAddressUpdater\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"unpause\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"pauserAddress_\",\"type\":\"address\"}],\"name\":\"updatePauserAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tssAddress_\",\"type\":\"address\"}],\"name\":\"updateTssAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"zetaToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60a06040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003553480156200003557600080fd5b506040516200237b3803806200237b83398181016040528101906200005b9190620002a8565b8383838360008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000e15750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620001195750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001515750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000189576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050506200036d565b600081519050620002a28162000353565b92915050565b60008060008060808587031215620002c557620002c46200034e565b5b6000620002d58782880162000291565b9450506020620002e88782880162000291565b9350506040620002fb8782880162000291565b92505060606200030e8782880162000291565b91505092959194509250565b600062000327826200032e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200035e816200031a565b81146200036a57600080fd5b50565b60805160601c611fc5620003b66000396000818161029f015281816102c501528181610408015281816104f601528181610f5201528181611040015261126f0152611fc56000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80636f8b44b011610097578063942a5e1611610066578063942a5e1614610229578063d5abeb0114610245578063ec02690114610263578063f7fb869b1461027f57610100565b80636f8b44b0146101dd578063779e3b63146101f95780638456cb59146102035780639122c3441461020d57610100565b80633f4ba83a116100d35780633f4ba83a1461017b5780635b112591146101855780635c975abb146101a35780636128480f146101c157610100565b806321e093b114610105578063252bc8861461012357806329dd214d14610141578063328a01d01461015d575b600080fd5b61010d61029d565b60405161011a9190611a78565b60405180910390f35b61012b6102c1565b6040516101389190611ce5565b60405180910390f35b61015b600480360381019061015691906116f3565b610371565b005b610165610721565b6040516101729190611a78565b60405180910390f35b610183610747565b005b61018d6107e3565b60405161019a9190611a78565b60405180910390f35b6101ab610809565b6040516101b89190611bfd565b60405180910390f35b6101db60048036038101906101d691906115e4565b61081f565b005b6101f760048036038101906101f2919061180b565b610995565b005b610201610a6a565b005b61020b610c45565b005b610227600480360381019061022291906115e4565b610ce1565b005b610243600480360381019061023e9190611611565b610eb3565b005b61024d61125f565b60405161025a9190611ce5565b60405180910390f35b61027d600480360381019061027891906117c2565b611265565b005b610287611396565b6040516102949190611a78565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161031c9190611a78565b60206040518083038186803b15801561033457600080fd5b505afa158015610348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036c9190611838565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461040357336040517fff70ace20000000000000000000000000000000000000000000000000000000081526004016103fa9190611a78565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561046c57600080fd5b505afa158015610480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a49190611838565b856104af9190611da1565b11156104f4576003546040517f3d3dbc830000000000000000000000000000000000000000000000000000000081526004016104eb9190611ce5565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8686846040518463ffffffff1660e01b815260040161055193929190611b61565b600060405180830381600087803b15801561056b57600080fd5b505af115801561057f573d6000803e3d6000fd5b5050505060008383905011156106bf578473ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018981526020018873ffffffffffffffffffffffffffffffffffffffff16815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b815260040161068c9190611ca1565b600060405180830381600087803b1580156106a657600080fd5b505af11580156106ba573d6000803e3d6000fd5b505050505b808573ffffffffffffffffffffffffffffffffffffffff16877ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988b8b89898960405161070f959493929190611c18565b60405180910390a45050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d957336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016107d09190611a78565b60405180910390fd5b6107e16113bc565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b157336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016108a89190611a78565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610918576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397338260405161098a929190611a93565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a2757336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610a1e9190611a78565b60405180910390fd5b806003819055507f26843c619c87f9021bcc4ec5143177198076d9da3c13ce1bb2e941644c69d42e3382604051610a5f929190611b38565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610afc57336040517fe700765e000000000000000000000000000000000000000000000000000000008152600401610af39190611a78565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610b85576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610c3b929190611a93565b60405180910390a1565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cd757336040517f4677a0d3000000000000000000000000000000000000000000000000000000008152600401610cce9190611a78565b60405180910390fd5b610cdf61141e565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610d8d5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610dcf57336040517fcdfcef97000000000000000000000000000000000000000000000000000000008152600401610dc69190611a78565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e36576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610ea8929190611a93565b60405180910390a150565b610ebb611480565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f4d57336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610f449190611a78565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fb657600080fd5b505afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee9190611838565b85610ff99190611da1565b111561103e576003546040517f3d3dbc830000000000000000000000000000000000000000000000000000000081526004016110359190611ce5565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8a86846040518463ffffffff1660e01b815260040161109b93929190611b61565b600060405180830381600087803b1580156110b557600080fd5b505af11580156110c9573d6000803e3d6000fd5b50505050600083839050111561120f578873ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200188815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016111dc9190611cc3565b600060405180830381600087803b1580156111f657600080fd5b505af115801561120a573d6000803e3d6000fd5b505050505b80857f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888b8b8b8b8a8a8a60405161124c9796959493929190611b98565b60405180910390a3505050505050505050565b60035481565b61126d611480565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc67903383608001356040518363ffffffff1660e01b81526004016112cc929190611b38565b600060405180830381600087803b1580156112e657600080fd5b505af11580156112fa573d6000803e3d6000fd5b5050505080600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e43284806020019061134c9190611d00565b866080013587604001358880606001906113669190611d00565b8a8060a001906113769190611d00565b60405161138b99989796959493929190611abc565b60405180910390a350565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113c46114ca565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611407611513565b6040516114149190611a78565b60405180910390a1565b611426611480565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611469611513565b6040516114769190611a78565b60405180910390a1565b611488610809565b156114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf90611c81565b60405180910390fd5b565b6114d2610809565b611511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150890611c61565b60405180910390fd5b565b600033905090565b60008135905061152a81611f4a565b92915050565b60008135905061153f81611f61565b92915050565b60008083601f84011261155b5761155a611ebf565b5b8235905067ffffffffffffffff81111561157857611577611eba565b5b60208301915083600182028301111561159457611593611ed3565b5b9250929050565b600060c082840312156115b1576115b0611ec9565b5b81905092915050565b6000813590506115c981611f78565b92915050565b6000815190506115de81611f78565b92915050565b6000602082840312156115fa576115f9611ee2565b5b60006116088482850161151b565b91505092915050565b600080600080600080600080600060e08a8c03121561163357611632611ee2565b5b60006116418c828d0161151b565b99505060206116528c828d016115ba565b98505060408a013567ffffffffffffffff81111561167357611672611edd565b5b61167f8c828d01611545565b975097505060606116928c828d016115ba565b95505060806116a38c828d016115ba565b94505060a08a013567ffffffffffffffff8111156116c4576116c3611edd565b5b6116d08c828d01611545565b935093505060c06116e38c828d01611530565b9150509295985092959850929598565b60008060008060008060008060c0898b03121561171357611712611ee2565b5b600089013567ffffffffffffffff81111561173157611730611edd565b5b61173d8b828c01611545565b985098505060206117508b828c016115ba565b96505060406117618b828c0161151b565b95505060606117728b828c016115ba565b945050608089013567ffffffffffffffff81111561179357611792611edd565b5b61179f8b828c01611545565b935093505060a06117b28b828c01611530565b9150509295985092959890939650565b6000602082840312156117d8576117d7611ee2565b5b600082013567ffffffffffffffff8111156117f6576117f5611edd565b5b6118028482850161159b565b91505092915050565b60006020828403121561182157611820611ee2565b5b600061182f848285016115ba565b91505092915050565b60006020828403121561184e5761184d611ee2565b5b600061185c848285016115cf565b91505092915050565b61186e81611df7565b82525050565b61187d81611df7565b82525050565b61188c81611e09565b82525050565b61189b81611e15565b82525050565b60006118ad8385611d7f565b93506118ba838584611e49565b6118c383611ee7565b840190509392505050565b60006118d982611d63565b6118e38185611d6e565b93506118f3818560208601611e58565b6118fc81611ee7565b840191505092915050565b6000611914601483611d90565b915061191f82611ef8565b602082019050919050565b6000611937601083611d90565b915061194282611f21565b602082019050919050565b600060a083016000830151848203600086015261196a82826118ce565b915050602083015161197f6020860182611a5a565b5060408301516119926040860182611865565b5060608301516119a56060860182611a5a565b50608083015184820360808601526119bd82826118ce565b9150508091505092915050565b600060c0830160008301516119e26000860182611865565b5060208301516119f56020860182611a5a565b5060408301518482036040860152611a0d82826118ce565b9150506060830151611a226060860182611a5a565b506080830151611a356080860182611a5a565b5060a083015184820360a0860152611a4d82826118ce565b9150508091505092915050565b611a6381611e3f565b82525050565b611a7281611e3f565b82525050565b6000602082019050611a8d6000830184611874565b92915050565b6000604082019050611aa86000830185611874565b611ab56020830184611874565b9392505050565b600060c082019050611ad1600083018c611874565b8181036020830152611ae4818a8c6118a1565b9050611af36040830189611a69565b611b006060830188611a69565b8181036080830152611b138186886118a1565b905081810360a0830152611b288184866118a1565b90509a9950505050505050505050565b6000604082019050611b4d6000830185611874565b611b5a6020830184611a69565b9392505050565b6000606082019050611b766000830186611874565b611b836020830185611a69565b611b906040830184611892565b949350505050565b600060a082019050611bad600083018a611874565b611bba6020830189611a69565b8181036040830152611bcd8187896118a1565b9050611bdc6060830186611a69565b8181036080830152611bef8184866118a1565b905098975050505050505050565b6000602082019050611c126000830184611883565b92915050565b60006060820190508181036000830152611c338187896118a1565b9050611c426020830186611a69565b8181036040830152611c558184866118a1565b90509695505050505050565b60006020820190508181036000830152611c7a81611907565b9050919050565b60006020820190508181036000830152611c9a8161192a565b9050919050565b60006020820190508181036000830152611cbb818461194d565b905092915050565b60006020820190508181036000830152611cdd81846119ca565b905092915050565b6000602082019050611cfa6000830184611a69565b92915050565b60008083356001602003843603038112611d1d57611d1c611ece565b5b80840192508235915067ffffffffffffffff821115611d3f57611d3e611ec4565b5b602083019250600182023603831315611d5b57611d5a611ed8565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611dac82611e3f565b9150611db783611e3f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dec57611deb611e8b565b5b828201905092915050565b6000611e0282611e1f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611e76578082015181840152602081019050611e5b565b83811115611e85576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b611f5381611df7565b8114611f5e57600080fd5b50565b611f6a81611e15565b8114611f7557600080fd5b50565b611f8181611e3f565b8114611f8c57600080fd5b5056fea2646970667358221220af09dec3099b33c22fceeb145766f8056225d0604e40f061de22f5e64b79e8b564736f6c63430008070033", } // ZetaConnectorNonEthABI is the input ABI used to generate the binding from. @@ -618,6 +618,141 @@ func (_ZetaConnectorNonEth *ZetaConnectorNonEthTransactorSession) UpdateTssAddre return _ZetaConnectorNonEth.Contract.UpdateTssAddress(&_ZetaConnectorNonEth.TransactOpts, tssAddress_) } +// ZetaConnectorNonEthMaxSupplyUpdatedIterator is returned from FilterMaxSupplyUpdated and is used to iterate over the raw logs and unpacked data for MaxSupplyUpdated events raised by the ZetaConnectorNonEth contract. +type ZetaConnectorNonEthMaxSupplyUpdatedIterator struct { + Event *ZetaConnectorNonEthMaxSupplyUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonEthMaxSupplyUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonEthMaxSupplyUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonEthMaxSupplyUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonEthMaxSupplyUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonEthMaxSupplyUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonEthMaxSupplyUpdated represents a MaxSupplyUpdated event raised by the ZetaConnectorNonEth contract. +type ZetaConnectorNonEthMaxSupplyUpdated struct { + CallerAddress common.Address + NewMaxSupply *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterMaxSupplyUpdated is a free log retrieval operation binding the contract event 0x26843c619c87f9021bcc4ec5143177198076d9da3c13ce1bb2e941644c69d42e. +// +// Solidity: event MaxSupplyUpdated(address callerAddress, uint256 newMaxSupply) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterMaxSupplyUpdated(opts *bind.FilterOpts) (*ZetaConnectorNonEthMaxSupplyUpdatedIterator, error) { + + logs, sub, err := _ZetaConnectorNonEth.contract.FilterLogs(opts, "MaxSupplyUpdated") + if err != nil { + return nil, err + } + return &ZetaConnectorNonEthMaxSupplyUpdatedIterator{contract: _ZetaConnectorNonEth.contract, event: "MaxSupplyUpdated", logs: logs, sub: sub}, nil +} + +// WatchMaxSupplyUpdated is a free log subscription operation binding the contract event 0x26843c619c87f9021bcc4ec5143177198076d9da3c13ce1bb2e941644c69d42e. +// +// Solidity: event MaxSupplyUpdated(address callerAddress, uint256 newMaxSupply) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchMaxSupplyUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonEthMaxSupplyUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonEth.contract.WatchLogs(opts, "MaxSupplyUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonEthMaxSupplyUpdated) + if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "MaxSupplyUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseMaxSupplyUpdated is a log parse operation binding the contract event 0x26843c619c87f9021bcc4ec5143177198076d9da3c13ce1bb2e941644c69d42e. +// +// Solidity: event MaxSupplyUpdated(address callerAddress, uint256 newMaxSupply) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParseMaxSupplyUpdated(log types.Log) (*ZetaConnectorNonEthMaxSupplyUpdated, error) { + event := new(ZetaConnectorNonEthMaxSupplyUpdated) + if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "MaxSupplyUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ZetaConnectorNonEthPausedIterator is returned from FilterPaused and is used to iterate over the raw logs and unpacked data for Paused events raised by the ZetaConnectorNonEth contract. type ZetaConnectorNonEthPausedIterator struct { Event *ZetaConnectorNonEthPaused // Event containing the contract specifics and raw log @@ -821,14 +956,14 @@ func (it *ZetaConnectorNonEthPauserAddressUpdatedIterator) Close() error { // ZetaConnectorNonEthPauserAddressUpdated represents a PauserAddressUpdated event raised by the ZetaConnectorNonEth contract. type ZetaConnectorNonEthPauserAddressUpdated struct { - UpdaterAddress common.Address - NewTssAddress common.Address - Raw types.Log // Blockchain specific contextual infos + CallerAddress common.Address + NewTssAddress common.Address + Raw types.Log // Blockchain specific contextual infos } // FilterPauserAddressUpdated is a free log retrieval operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. // -// Solidity: event PauserAddressUpdated(address updaterAddress, address newTssAddress) +// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterPauserAddressUpdated(opts *bind.FilterOpts) (*ZetaConnectorNonEthPauserAddressUpdatedIterator, error) { logs, sub, err := _ZetaConnectorNonEth.contract.FilterLogs(opts, "PauserAddressUpdated") @@ -840,7 +975,7 @@ func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterPauserAddressUpda // WatchPauserAddressUpdated is a free log subscription operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. // -// Solidity: event PauserAddressUpdated(address updaterAddress, address newTssAddress) +// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchPauserAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonEthPauserAddressUpdated) (event.Subscription, error) { logs, sub, err := _ZetaConnectorNonEth.contract.WatchLogs(opts, "PauserAddressUpdated") @@ -877,7 +1012,7 @@ func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchPauserAddressUpdat // ParsePauserAddressUpdated is a log parse operation binding the contract event 0xd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397. // -// Solidity: event PauserAddressUpdated(address updaterAddress, address newTssAddress) +// Solidity: event PauserAddressUpdated(address callerAddress, address newTssAddress) func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParsePauserAddressUpdated(log types.Log) (*ZetaConnectorNonEthPauserAddressUpdated, error) { event := new(ZetaConnectorNonEthPauserAddressUpdated) if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "PauserAddressUpdated", log); err != nil { @@ -956,14 +1091,14 @@ func (it *ZetaConnectorNonEthTSSAddressUpdatedIterator) Close() error { // ZetaConnectorNonEthTSSAddressUpdated represents a TSSAddressUpdated event raised by the ZetaConnectorNonEth contract. type ZetaConnectorNonEthTSSAddressUpdated struct { - ZetaTxSenderAddress common.Address - NewTssAddress common.Address - Raw types.Log // Blockchain specific contextual infos + CallerAddress common.Address + NewTssAddress common.Address + Raw types.Log // Blockchain specific contextual infos } // FilterTSSAddressUpdated is a free log retrieval operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. // -// Solidity: event TSSAddressUpdated(address zetaTxSenderAddress, address newTssAddress) +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterTSSAddressUpdated(opts *bind.FilterOpts) (*ZetaConnectorNonEthTSSAddressUpdatedIterator, error) { logs, sub, err := _ZetaConnectorNonEth.contract.FilterLogs(opts, "TSSAddressUpdated") @@ -975,7 +1110,7 @@ func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterTSSAddressUpdated // WatchTSSAddressUpdated is a free log subscription operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. // -// Solidity: event TSSAddressUpdated(address zetaTxSenderAddress, address newTssAddress) +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchTSSAddressUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonEthTSSAddressUpdated) (event.Subscription, error) { logs, sub, err := _ZetaConnectorNonEth.contract.WatchLogs(opts, "TSSAddressUpdated") @@ -1012,7 +1147,7 @@ func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchTSSAddressUpdated( // ParseTSSAddressUpdated is a log parse operation binding the contract event 0xe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff. // -// Solidity: event TSSAddressUpdated(address zetaTxSenderAddress, address newTssAddress) +// Solidity: event TSSAddressUpdated(address callerAddress, address newTssAddress) func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParseTSSAddressUpdated(log types.Log) (*ZetaConnectorNonEthTSSAddressUpdated, error) { event := new(ZetaConnectorNonEthTSSAddressUpdated) if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "TSSAddressUpdated", log); err != nil { @@ -1022,6 +1157,141 @@ func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParseTSSAddressUpdated( return event, nil } +// ZetaConnectorNonEthTSSAddressUpdaterUpdatedIterator is returned from FilterTSSAddressUpdaterUpdated and is used to iterate over the raw logs and unpacked data for TSSAddressUpdaterUpdated events raised by the ZetaConnectorNonEth contract. +type ZetaConnectorNonEthTSSAddressUpdaterUpdatedIterator struct { + Event *ZetaConnectorNonEthTSSAddressUpdaterUpdated // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *ZetaConnectorNonEthTSSAddressUpdaterUpdatedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonEthTSSAddressUpdaterUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(ZetaConnectorNonEthTSSAddressUpdaterUpdated) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *ZetaConnectorNonEthTSSAddressUpdaterUpdatedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *ZetaConnectorNonEthTSSAddressUpdaterUpdatedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// ZetaConnectorNonEthTSSAddressUpdaterUpdated represents a TSSAddressUpdaterUpdated event raised by the ZetaConnectorNonEth contract. +type ZetaConnectorNonEthTSSAddressUpdaterUpdated struct { + CallerAddress common.Address + NewTssUpdaterAddress common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTSSAddressUpdaterUpdated is a free log retrieval operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) FilterTSSAddressUpdaterUpdated(opts *bind.FilterOpts) (*ZetaConnectorNonEthTSSAddressUpdaterUpdatedIterator, error) { + + logs, sub, err := _ZetaConnectorNonEth.contract.FilterLogs(opts, "TSSAddressUpdaterUpdated") + if err != nil { + return nil, err + } + return &ZetaConnectorNonEthTSSAddressUpdaterUpdatedIterator{contract: _ZetaConnectorNonEth.contract, event: "TSSAddressUpdaterUpdated", logs: logs, sub: sub}, nil +} + +// WatchTSSAddressUpdaterUpdated is a free log subscription operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) WatchTSSAddressUpdaterUpdated(opts *bind.WatchOpts, sink chan<- *ZetaConnectorNonEthTSSAddressUpdaterUpdated) (event.Subscription, error) { + + logs, sub, err := _ZetaConnectorNonEth.contract.WatchLogs(opts, "TSSAddressUpdaterUpdated") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(ZetaConnectorNonEthTSSAddressUpdaterUpdated) + if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTSSAddressUpdaterUpdated is a log parse operation binding the contract event 0x5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd0. +// +// Solidity: event TSSAddressUpdaterUpdated(address callerAddress, address newTssUpdaterAddress) +func (_ZetaConnectorNonEth *ZetaConnectorNonEthFilterer) ParseTSSAddressUpdaterUpdated(log types.Log) (*ZetaConnectorNonEthTSSAddressUpdaterUpdated, error) { + event := new(ZetaConnectorNonEthTSSAddressUpdaterUpdated) + if err := _ZetaConnectorNonEth.contract.UnpackLog(event, "TSSAddressUpdaterUpdated", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + // ZetaConnectorNonEthUnpausedIterator is returned from FilterUnpaused and is used to iterate over the raw logs and unpacked data for Unpaused events raised by the ZetaConnectorNonEth contract. type ZetaConnectorNonEthUnpausedIterator struct { Event *ZetaConnectorNonEthUnpaused // Event containing the contract specifics and raw log diff --git a/pkg/contracts/zevm/interfaces/iwzeta.sol/iweth9.go b/pkg/contracts/zevm/interfaces/iwzeta.sol/iweth9.go new file mode 100644 index 00000000..c152269a --- /dev/null +++ b/pkg/contracts/zevm/interfaces/iwzeta.sol/iweth9.go @@ -0,0 +1,977 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package iwzeta + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// IWETH9MetaData contains all meta data concerning the IWETH9 contract. +var IWETH9MetaData = &bind.MetaData{ + ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", +} + +// IWETH9ABI is the input ABI used to generate the binding from. +// Deprecated: Use IWETH9MetaData.ABI instead. +var IWETH9ABI = IWETH9MetaData.ABI + +// IWETH9 is an auto generated Go binding around an Ethereum contract. +type IWETH9 struct { + IWETH9Caller // Read-only binding to the contract + IWETH9Transactor // Write-only binding to the contract + IWETH9Filterer // Log filterer for contract events +} + +// IWETH9Caller is an auto generated read-only Go binding around an Ethereum contract. +type IWETH9Caller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWETH9Transactor is an auto generated write-only Go binding around an Ethereum contract. +type IWETH9Transactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWETH9Filterer is an auto generated log filtering Go binding around an Ethereum contract events. +type IWETH9Filterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// IWETH9Session is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type IWETH9Session struct { + Contract *IWETH9 // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IWETH9CallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type IWETH9CallerSession struct { + Contract *IWETH9Caller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// IWETH9TransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type IWETH9TransactorSession struct { + Contract *IWETH9Transactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// IWETH9Raw is an auto generated low-level Go binding around an Ethereum contract. +type IWETH9Raw struct { + Contract *IWETH9 // Generic contract binding to access the raw methods on +} + +// IWETH9CallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type IWETH9CallerRaw struct { + Contract *IWETH9Caller // Generic read-only contract binding to access the raw methods on +} + +// IWETH9TransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type IWETH9TransactorRaw struct { + Contract *IWETH9Transactor // Generic write-only contract binding to access the raw methods on +} + +// NewIWETH9 creates a new instance of IWETH9, bound to a specific deployed contract. +func NewIWETH9(address common.Address, backend bind.ContractBackend) (*IWETH9, error) { + contract, err := bindIWETH9(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &IWETH9{IWETH9Caller: IWETH9Caller{contract: contract}, IWETH9Transactor: IWETH9Transactor{contract: contract}, IWETH9Filterer: IWETH9Filterer{contract: contract}}, nil +} + +// NewIWETH9Caller creates a new read-only instance of IWETH9, bound to a specific deployed contract. +func NewIWETH9Caller(address common.Address, caller bind.ContractCaller) (*IWETH9Caller, error) { + contract, err := bindIWETH9(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &IWETH9Caller{contract: contract}, nil +} + +// NewIWETH9Transactor creates a new write-only instance of IWETH9, bound to a specific deployed contract. +func NewIWETH9Transactor(address common.Address, transactor bind.ContractTransactor) (*IWETH9Transactor, error) { + contract, err := bindIWETH9(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &IWETH9Transactor{contract: contract}, nil +} + +// NewIWETH9Filterer creates a new log filterer instance of IWETH9, bound to a specific deployed contract. +func NewIWETH9Filterer(address common.Address, filterer bind.ContractFilterer) (*IWETH9Filterer, error) { + contract, err := bindIWETH9(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &IWETH9Filterer{contract: contract}, nil +} + +// bindIWETH9 binds a generic wrapper to an already deployed contract. +func bindIWETH9(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := IWETH9MetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IWETH9 *IWETH9Raw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IWETH9.Contract.IWETH9Caller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IWETH9 *IWETH9Raw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWETH9.Contract.IWETH9Transactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IWETH9 *IWETH9Raw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IWETH9.Contract.IWETH9Transactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_IWETH9 *IWETH9CallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _IWETH9.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_IWETH9 *IWETH9TransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWETH9.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_IWETH9 *IWETH9TransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _IWETH9.Contract.contract.Transact(opts, method, params...) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IWETH9 *IWETH9Caller) Allowance(opts *bind.CallOpts, owner common.Address, spender common.Address) (*big.Int, error) { + var out []interface{} + err := _IWETH9.contract.Call(opts, &out, "allowance", owner, spender) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IWETH9 *IWETH9Session) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IWETH9.Contract.Allowance(&_IWETH9.CallOpts, owner, spender) +} + +// Allowance is a free data retrieval call binding the contract method 0xdd62ed3e. +// +// Solidity: function allowance(address owner, address spender) view returns(uint256) +func (_IWETH9 *IWETH9CallerSession) Allowance(owner common.Address, spender common.Address) (*big.Int, error) { + return _IWETH9.Contract.Allowance(&_IWETH9.CallOpts, owner, spender) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_IWETH9 *IWETH9Caller) BalanceOf(opts *bind.CallOpts, owner common.Address) (*big.Int, error) { + var out []interface{} + err := _IWETH9.contract.Call(opts, &out, "balanceOf", owner) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_IWETH9 *IWETH9Session) BalanceOf(owner common.Address) (*big.Int, error) { + return _IWETH9.Contract.BalanceOf(&_IWETH9.CallOpts, owner) +} + +// BalanceOf is a free data retrieval call binding the contract method 0x70a08231. +// +// Solidity: function balanceOf(address owner) view returns(uint256) +func (_IWETH9 *IWETH9CallerSession) BalanceOf(owner common.Address) (*big.Int, error) { + return _IWETH9.Contract.BalanceOf(&_IWETH9.CallOpts, owner) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IWETH9 *IWETH9Caller) TotalSupply(opts *bind.CallOpts) (*big.Int, error) { + var out []interface{} + err := _IWETH9.contract.Call(opts, &out, "totalSupply") + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IWETH9 *IWETH9Session) TotalSupply() (*big.Int, error) { + return _IWETH9.Contract.TotalSupply(&_IWETH9.CallOpts) +} + +// TotalSupply is a free data retrieval call binding the contract method 0x18160ddd. +// +// Solidity: function totalSupply() view returns(uint256) +func (_IWETH9 *IWETH9CallerSession) TotalSupply() (*big.Int, error) { + return _IWETH9.Contract.TotalSupply(&_IWETH9.CallOpts) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9Transactor) Approve(opts *bind.TransactOpts, spender common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.contract.Transact(opts, "approve", spender, wad) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9Session) Approve(spender common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.Approve(&_IWETH9.TransactOpts, spender, wad) +} + +// Approve is a paid mutator transaction binding the contract method 0x095ea7b3. +// +// Solidity: function approve(address spender, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9TransactorSession) Approve(spender common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.Approve(&_IWETH9.TransactOpts, spender, wad) +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_IWETH9 *IWETH9Transactor) Deposit(opts *bind.TransactOpts) (*types.Transaction, error) { + return _IWETH9.contract.Transact(opts, "deposit") +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_IWETH9 *IWETH9Session) Deposit() (*types.Transaction, error) { + return _IWETH9.Contract.Deposit(&_IWETH9.TransactOpts) +} + +// Deposit is a paid mutator transaction binding the contract method 0xd0e30db0. +// +// Solidity: function deposit() payable returns() +func (_IWETH9 *IWETH9TransactorSession) Deposit() (*types.Transaction, error) { + return _IWETH9.Contract.Deposit(&_IWETH9.TransactOpts) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9Transactor) Transfer(opts *bind.TransactOpts, to common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.contract.Transact(opts, "transfer", to, wad) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9Session) Transfer(to common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.Transfer(&_IWETH9.TransactOpts, to, wad) +} + +// Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. +// +// Solidity: function transfer(address to, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9TransactorSession) Transfer(to common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.Transfer(&_IWETH9.TransactOpts, to, wad) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9Transactor) TransferFrom(opts *bind.TransactOpts, from common.Address, to common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.contract.Transact(opts, "transferFrom", from, to, wad) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9Session) TransferFrom(from common.Address, to common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.TransferFrom(&_IWETH9.TransactOpts, from, to, wad) +} + +// TransferFrom is a paid mutator transaction binding the contract method 0x23b872dd. +// +// Solidity: function transferFrom(address from, address to, uint256 wad) returns(bool) +func (_IWETH9 *IWETH9TransactorSession) TransferFrom(from common.Address, to common.Address, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.TransferFrom(&_IWETH9.TransactOpts, from, to, wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_IWETH9 *IWETH9Transactor) Withdraw(opts *bind.TransactOpts, wad *big.Int) (*types.Transaction, error) { + return _IWETH9.contract.Transact(opts, "withdraw", wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_IWETH9 *IWETH9Session) Withdraw(wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.Withdraw(&_IWETH9.TransactOpts, wad) +} + +// Withdraw is a paid mutator transaction binding the contract method 0x2e1a7d4d. +// +// Solidity: function withdraw(uint256 wad) returns() +func (_IWETH9 *IWETH9TransactorSession) Withdraw(wad *big.Int) (*types.Transaction, error) { + return _IWETH9.Contract.Withdraw(&_IWETH9.TransactOpts, wad) +} + +// IWETH9ApprovalIterator is returned from FilterApproval and is used to iterate over the raw logs and unpacked data for Approval events raised by the IWETH9 contract. +type IWETH9ApprovalIterator struct { + Event *IWETH9Approval // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IWETH9ApprovalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IWETH9Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IWETH9Approval) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IWETH9ApprovalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IWETH9ApprovalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IWETH9Approval represents a Approval event raised by the IWETH9 contract. +type IWETH9Approval struct { + Owner common.Address + Spender common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterApproval is a free log retrieval operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IWETH9 *IWETH9Filterer) FilterApproval(opts *bind.FilterOpts, owner []common.Address, spender []common.Address) (*IWETH9ApprovalIterator, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IWETH9.contract.FilterLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return &IWETH9ApprovalIterator{contract: _IWETH9.contract, event: "Approval", logs: logs, sub: sub}, nil +} + +// WatchApproval is a free log subscription operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IWETH9 *IWETH9Filterer) WatchApproval(opts *bind.WatchOpts, sink chan<- *IWETH9Approval, owner []common.Address, spender []common.Address) (event.Subscription, error) { + + var ownerRule []interface{} + for _, ownerItem := range owner { + ownerRule = append(ownerRule, ownerItem) + } + var spenderRule []interface{} + for _, spenderItem := range spender { + spenderRule = append(spenderRule, spenderItem) + } + + logs, sub, err := _IWETH9.contract.WatchLogs(opts, "Approval", ownerRule, spenderRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IWETH9Approval) + if err := _IWETH9.contract.UnpackLog(event, "Approval", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseApproval is a log parse operation binding the contract event 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925. +// +// Solidity: event Approval(address indexed owner, address indexed spender, uint256 value) +func (_IWETH9 *IWETH9Filterer) ParseApproval(log types.Log) (*IWETH9Approval, error) { + event := new(IWETH9Approval) + if err := _IWETH9.contract.UnpackLog(event, "Approval", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IWETH9DepositIterator is returned from FilterDeposit and is used to iterate over the raw logs and unpacked data for Deposit events raised by the IWETH9 contract. +type IWETH9DepositIterator struct { + Event *IWETH9Deposit // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IWETH9DepositIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IWETH9Deposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IWETH9Deposit) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IWETH9DepositIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IWETH9DepositIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IWETH9Deposit represents a Deposit event raised by the IWETH9 contract. +type IWETH9Deposit struct { + Dst common.Address + Wad *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterDeposit is a free log retrieval operation binding the contract event 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c. +// +// Solidity: event Deposit(address indexed dst, uint256 wad) +func (_IWETH9 *IWETH9Filterer) FilterDeposit(opts *bind.FilterOpts, dst []common.Address) (*IWETH9DepositIterator, error) { + + var dstRule []interface{} + for _, dstItem := range dst { + dstRule = append(dstRule, dstItem) + } + + logs, sub, err := _IWETH9.contract.FilterLogs(opts, "Deposit", dstRule) + if err != nil { + return nil, err + } + return &IWETH9DepositIterator{contract: _IWETH9.contract, event: "Deposit", logs: logs, sub: sub}, nil +} + +// WatchDeposit is a free log subscription operation binding the contract event 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c. +// +// Solidity: event Deposit(address indexed dst, uint256 wad) +func (_IWETH9 *IWETH9Filterer) WatchDeposit(opts *bind.WatchOpts, sink chan<- *IWETH9Deposit, dst []common.Address) (event.Subscription, error) { + + var dstRule []interface{} + for _, dstItem := range dst { + dstRule = append(dstRule, dstItem) + } + + logs, sub, err := _IWETH9.contract.WatchLogs(opts, "Deposit", dstRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IWETH9Deposit) + if err := _IWETH9.contract.UnpackLog(event, "Deposit", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseDeposit is a log parse operation binding the contract event 0xe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c. +// +// Solidity: event Deposit(address indexed dst, uint256 wad) +func (_IWETH9 *IWETH9Filterer) ParseDeposit(log types.Log) (*IWETH9Deposit, error) { + event := new(IWETH9Deposit) + if err := _IWETH9.contract.UnpackLog(event, "Deposit", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IWETH9TransferIterator is returned from FilterTransfer and is used to iterate over the raw logs and unpacked data for Transfer events raised by the IWETH9 contract. +type IWETH9TransferIterator struct { + Event *IWETH9Transfer // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IWETH9TransferIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IWETH9Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IWETH9Transfer) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IWETH9TransferIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IWETH9TransferIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IWETH9Transfer represents a Transfer event raised by the IWETH9 contract. +type IWETH9Transfer struct { + From common.Address + To common.Address + Value *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTransfer is a free log retrieval operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IWETH9 *IWETH9Filterer) FilterTransfer(opts *bind.FilterOpts, from []common.Address, to []common.Address) (*IWETH9TransferIterator, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IWETH9.contract.FilterLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return &IWETH9TransferIterator{contract: _IWETH9.contract, event: "Transfer", logs: logs, sub: sub}, nil +} + +// WatchTransfer is a free log subscription operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IWETH9 *IWETH9Filterer) WatchTransfer(opts *bind.WatchOpts, sink chan<- *IWETH9Transfer, from []common.Address, to []common.Address) (event.Subscription, error) { + + var fromRule []interface{} + for _, fromItem := range from { + fromRule = append(fromRule, fromItem) + } + var toRule []interface{} + for _, toItem := range to { + toRule = append(toRule, toItem) + } + + logs, sub, err := _IWETH9.contract.WatchLogs(opts, "Transfer", fromRule, toRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IWETH9Transfer) + if err := _IWETH9.contract.UnpackLog(event, "Transfer", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTransfer is a log parse operation binding the contract event 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef. +// +// Solidity: event Transfer(address indexed from, address indexed to, uint256 value) +func (_IWETH9 *IWETH9Filterer) ParseTransfer(log types.Log) (*IWETH9Transfer, error) { + event := new(IWETH9Transfer) + if err := _IWETH9.contract.UnpackLog(event, "Transfer", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// IWETH9WithdrawalIterator is returned from FilterWithdrawal and is used to iterate over the raw logs and unpacked data for Withdrawal events raised by the IWETH9 contract. +type IWETH9WithdrawalIterator struct { + Event *IWETH9Withdrawal // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *IWETH9WithdrawalIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(IWETH9Withdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(IWETH9Withdrawal) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *IWETH9WithdrawalIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *IWETH9WithdrawalIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// IWETH9Withdrawal represents a Withdrawal event raised by the IWETH9 contract. +type IWETH9Withdrawal struct { + Src common.Address + Wad *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterWithdrawal is a free log retrieval operation binding the contract event 0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65. +// +// Solidity: event Withdrawal(address indexed src, uint256 wad) +func (_IWETH9 *IWETH9Filterer) FilterWithdrawal(opts *bind.FilterOpts, src []common.Address) (*IWETH9WithdrawalIterator, error) { + + var srcRule []interface{} + for _, srcItem := range src { + srcRule = append(srcRule, srcItem) + } + + logs, sub, err := _IWETH9.contract.FilterLogs(opts, "Withdrawal", srcRule) + if err != nil { + return nil, err + } + return &IWETH9WithdrawalIterator{contract: _IWETH9.contract, event: "Withdrawal", logs: logs, sub: sub}, nil +} + +// WatchWithdrawal is a free log subscription operation binding the contract event 0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65. +// +// Solidity: event Withdrawal(address indexed src, uint256 wad) +func (_IWETH9 *IWETH9Filterer) WatchWithdrawal(opts *bind.WatchOpts, sink chan<- *IWETH9Withdrawal, src []common.Address) (event.Subscription, error) { + + var srcRule []interface{} + for _, srcItem := range src { + srcRule = append(srcRule, srcItem) + } + + logs, sub, err := _IWETH9.contract.WatchLogs(opts, "Withdrawal", srcRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(IWETH9Withdrawal) + if err := _IWETH9.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseWithdrawal is a log parse operation binding the contract event 0x7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65. +// +// Solidity: event Withdrawal(address indexed src, uint256 wad) +func (_IWETH9 *IWETH9Filterer) ParseWithdrawal(log types.Log) (*IWETH9Withdrawal, error) { + event := new(IWETH9Withdrawal) + if err := _IWETH9.contract.UnpackLog(event, "Withdrawal", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/contracts/zevm/testing/systemcontractmock.sol/systemcontracterrors.go b/pkg/contracts/zevm/testing/systemcontractmock.sol/systemcontracterrors.go new file mode 100644 index 00000000..9dabc5e8 --- /dev/null +++ b/pkg/contracts/zevm/testing/systemcontractmock.sol/systemcontracterrors.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package systemcontractmock + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// SystemContractErrorsMetaData contains all meta data concerning the SystemContractErrors contract. +var SystemContractErrorsMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantBeIdenticalAddresses\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTarget\",\"type\":\"error\"}]", +} + +// SystemContractErrorsABI is the input ABI used to generate the binding from. +// Deprecated: Use SystemContractErrorsMetaData.ABI instead. +var SystemContractErrorsABI = SystemContractErrorsMetaData.ABI + +// SystemContractErrors is an auto generated Go binding around an Ethereum contract. +type SystemContractErrors struct { + SystemContractErrorsCaller // Read-only binding to the contract + SystemContractErrorsTransactor // Write-only binding to the contract + SystemContractErrorsFilterer // Log filterer for contract events +} + +// SystemContractErrorsCaller is an auto generated read-only Go binding around an Ethereum contract. +type SystemContractErrorsCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractErrorsTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SystemContractErrorsTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractErrorsFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SystemContractErrorsFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractErrorsSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SystemContractErrorsSession struct { + Contract *SystemContractErrors // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SystemContractErrorsCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SystemContractErrorsCallerSession struct { + Contract *SystemContractErrorsCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SystemContractErrorsTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SystemContractErrorsTransactorSession struct { + Contract *SystemContractErrorsTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SystemContractErrorsRaw is an auto generated low-level Go binding around an Ethereum contract. +type SystemContractErrorsRaw struct { + Contract *SystemContractErrors // Generic contract binding to access the raw methods on +} + +// SystemContractErrorsCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SystemContractErrorsCallerRaw struct { + Contract *SystemContractErrorsCaller // Generic read-only contract binding to access the raw methods on +} + +// SystemContractErrorsTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SystemContractErrorsTransactorRaw struct { + Contract *SystemContractErrorsTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSystemContractErrors creates a new instance of SystemContractErrors, bound to a specific deployed contract. +func NewSystemContractErrors(address common.Address, backend bind.ContractBackend) (*SystemContractErrors, error) { + contract, err := bindSystemContractErrors(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SystemContractErrors{SystemContractErrorsCaller: SystemContractErrorsCaller{contract: contract}, SystemContractErrorsTransactor: SystemContractErrorsTransactor{contract: contract}, SystemContractErrorsFilterer: SystemContractErrorsFilterer{contract: contract}}, nil +} + +// NewSystemContractErrorsCaller creates a new read-only instance of SystemContractErrors, bound to a specific deployed contract. +func NewSystemContractErrorsCaller(address common.Address, caller bind.ContractCaller) (*SystemContractErrorsCaller, error) { + contract, err := bindSystemContractErrors(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SystemContractErrorsCaller{contract: contract}, nil +} + +// NewSystemContractErrorsTransactor creates a new write-only instance of SystemContractErrors, bound to a specific deployed contract. +func NewSystemContractErrorsTransactor(address common.Address, transactor bind.ContractTransactor) (*SystemContractErrorsTransactor, error) { + contract, err := bindSystemContractErrors(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SystemContractErrorsTransactor{contract: contract}, nil +} + +// NewSystemContractErrorsFilterer creates a new log filterer instance of SystemContractErrors, bound to a specific deployed contract. +func NewSystemContractErrorsFilterer(address common.Address, filterer bind.ContractFilterer) (*SystemContractErrorsFilterer, error) { + contract, err := bindSystemContractErrors(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SystemContractErrorsFilterer{contract: contract}, nil +} + +// bindSystemContractErrors binds a generic wrapper to an already deployed contract. +func bindSystemContractErrors(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SystemContractErrorsMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SystemContractErrors *SystemContractErrorsRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SystemContractErrors.Contract.SystemContractErrorsCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SystemContractErrors *SystemContractErrorsRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SystemContractErrors.Contract.SystemContractErrorsTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SystemContractErrors *SystemContractErrorsRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SystemContractErrors.Contract.SystemContractErrorsTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SystemContractErrors *SystemContractErrorsCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SystemContractErrors.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SystemContractErrors *SystemContractErrorsTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SystemContractErrors.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SystemContractErrors *SystemContractErrorsTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SystemContractErrors.Contract.contract.Transact(opts, method, params...) +} diff --git a/pkg/contracts/zevm/testing/systemcontractmock.sol/systemcontractmock.go b/pkg/contracts/zevm/testing/systemcontractmock.sol/systemcontractmock.go new file mode 100644 index 00000000..884e14e6 --- /dev/null +++ b/pkg/contracts/zevm/testing/systemcontractmock.sol/systemcontractmock.go @@ -0,0 +1,1176 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package systemcontractmock + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// SystemContractMockMetaData contains all meta data concerning the SystemContractMock contract. +var SystemContractMockMetaData = &bind.MetaData{ + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wzeta_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapv2Factory_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"uniswapv2Router02_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantBeIdenticalAddresses\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"CantBeZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidTarget\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"SetGasCoin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"SetGasPrice\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"SetGasZetaPool\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"SetWZeta\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"SystemContractDeployed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"gasCoinZRC20ByChainId\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"gasPriceByChainId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"gasZetaPoolByChainId\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"}],\"name\":\"onCrossChainCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"zrc20\",\"type\":\"address\"}],\"name\":\"setGasCoinZRC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"chainID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"price\",\"type\":\"uint256\"}],\"name\":\"setGasPrice\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"setWZETAContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapv2FactoryAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"uniswapv2PairFor\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"uniswapv2Router02Address\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wZetaContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60806040523480156200001157600080fd5b50604051620010d7380380620010d7833981810160405281019062000037919062000146565b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac560405160405180910390a1505050620001f5565b6000815190506200014081620001db565b92915050565b600080600060608486031215620001625762000161620001d6565b5b600062000172868287016200012f565b935050602062000185868287016200012f565b925050604062000198868287016200012f565b9150509250925092565b6000620001af82620001b6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001e681620001a2565b8114620001f257600080fd5b50565b610ed280620002056000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806397770dff1161007157806397770dff14610166578063a7cb050714610182578063c63585cc1461019e578063d7fd7afb146101ce578063d936a012146101fe578063ee2815ba1461021c576100a9565b80630be15547146100ae5780633c669d55146100de578063513a9c05146100fa578063569541b91461012a578063842da36d14610148575b600080fd5b6100c860048036038101906100c3919061094d565b610238565b6040516100d59190610bce565b60405180910390f35b6100f860048036038101906100f39190610898565b61026b565b005b610114600480360381019061010f919061094d565b6103b8565b6040516101219190610bce565b60405180910390f35b6101326103eb565b60405161013f9190610bce565b60405180910390f35b610150610411565b60405161015d9190610bce565b60405180910390f35b610180600480360381019061017b9190610818565b610437565b005b61019c600480360381019061019791906109ba565b6104d4565b005b6101b860048036038101906101b39190610845565b610528565b6040516101c59190610bce565b60405180910390f35b6101e860048036038101906101e3919061094d565b61059a565b6040516101f59190610c67565b60405180910390f35b6102066105b2565b6040516102139190610bce565b60405180910390f35b6102366004803603810190610231919061097a565b6105d8565b005b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060405180606001604052806040518060200160405280600081525081526020013373ffffffffffffffffffffffffffffffffffffffff1681526020014681525090508473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87866040518363ffffffff1660e01b81526004016102ea929190610be9565b602060405180830381600087803b15801561030457600080fd5b505af1158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190610920565b508573ffffffffffffffffffffffffffffffffffffffff1663de43156e82878787876040518663ffffffff1660e01b815260040161037e959493929190610c12565b600060405180830381600087803b15801561039857600080fd5b505af11580156103ac573d6000803e3d6000fd5b50505050505050505050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516104c99190610bce565b60405180910390a150565b80600080848152602001908152602001600020819055507f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d828260405161051c929190610cab565b60405180910390a15050565b60008060006105378585610667565b9150915085828260405160200161054f929190610b60565b60405160208183030381529060405280519060200120604051602001610576929190610b8c565b6040516020818303038152906040528051906020012060001c925050509392505050565b60006020528060005260406000206000915090505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d828260405161065b929190610c82565b60405180910390a15050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156106d0576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161061070a57828461070d565b83835b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561077c576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60008135905061079281610e57565b92915050565b6000815190506107a781610e6e565b92915050565b60008083601f8401126107c3576107c2610dd3565b5b8235905067ffffffffffffffff8111156107e0576107df610dce565b5b6020830191508360018202830111156107fc576107fb610dd8565b5b9250929050565b60008135905061081281610e85565b92915050565b60006020828403121561082e5761082d610de2565b5b600061083c84828501610783565b91505092915050565b60008060006060848603121561085e5761085d610de2565b5b600061086c86828701610783565b935050602061087d86828701610783565b925050604061088e86828701610783565b9150509250925092565b6000806000806000608086880312156108b4576108b3610de2565b5b60006108c288828901610783565b95505060206108d388828901610783565b94505060406108e488828901610803565b935050606086013567ffffffffffffffff81111561090557610904610ddd565b5b610911888289016107ad565b92509250509295509295909350565b60006020828403121561093657610935610de2565b5b600061094484828501610798565b91505092915050565b60006020828403121561096357610962610de2565b5b600061097184828501610803565b91505092915050565b6000806040838503121561099157610990610de2565b5b600061099f85828601610803565b92505060206109b085828601610783565b9150509250929050565b600080604083850312156109d1576109d0610de2565b5b60006109df85828601610803565b92505060206109f085828601610803565b9150509250929050565b610a0381610d0c565b82525050565b610a1281610d0c565b82525050565b610a29610a2482610d0c565b610da0565b82525050565b610a40610a3b82610d2a565b610db2565b82525050565b6000610a528385610cf0565b9350610a5f838584610d5e565b610a6883610de7565b840190509392505050565b6000610a7e82610cd4565b610a888185610cdf565b9350610a98818560208601610d6d565b610aa181610de7565b840191505092915050565b6000610ab9602083610d01565b9150610ac482610e05565b602082019050919050565b6000610adc600183610d01565b9150610ae782610e2e565b600182019050919050565b60006060830160008301518482036000860152610b0f8282610a73565b9150506020830151610b2460208601826109fa565b506040830151610b376040860182610b42565b508091505092915050565b610b4b81610d54565b82525050565b610b5a81610d54565b82525050565b6000610b6c8285610a18565b601482019150610b7c8284610a18565b6014820191508190509392505050565b6000610b9782610acf565b9150610ba38285610a18565b601482019150610bb38284610a2f565b602082019150610bc282610aac565b91508190509392505050565b6000602082019050610be36000830184610a09565b92915050565b6000604082019050610bfe6000830185610a09565b610c0b6020830184610b51565b9392505050565b60006080820190508181036000830152610c2c8188610af2565b9050610c3b6020830187610a09565b610c486040830186610b51565b8181036060830152610c5b818486610a46565b90509695505050505050565b6000602082019050610c7c6000830184610b51565b92915050565b6000604082019050610c976000830185610b51565b610ca46020830184610a09565b9392505050565b6000604082019050610cc06000830185610b51565b610ccd6020830184610b51565b9392505050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000610d1782610d34565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610d8b578082015181840152602081019050610d70565b83811115610d9a576000848401525b50505050565b6000610dab82610dbc565b9050919050565b6000819050919050565b6000610dc782610df8565b9050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f600082015250565b7fff00000000000000000000000000000000000000000000000000000000000000600082015250565b610e6081610d0c565b8114610e6b57600080fd5b50565b610e7781610d1e565b8114610e8257600080fd5b50565b610e8e81610d54565b8114610e9957600080fd5b5056fea26469706673582212203fa9d55135c7f24f7b5da3516688ef5fb78d92d28a850d2fe6d6fc3799422af364736f6c63430008070033", +} + +// SystemContractMockABI is the input ABI used to generate the binding from. +// Deprecated: Use SystemContractMockMetaData.ABI instead. +var SystemContractMockABI = SystemContractMockMetaData.ABI + +// SystemContractMockBin is the compiled bytecode used for deploying new contracts. +// Deprecated: Use SystemContractMockMetaData.Bin instead. +var SystemContractMockBin = SystemContractMockMetaData.Bin + +// DeploySystemContractMock deploys a new Ethereum contract, binding an instance of SystemContractMock to it. +func DeploySystemContractMock(auth *bind.TransactOpts, backend bind.ContractBackend, wzeta_ common.Address, uniswapv2Factory_ common.Address, uniswapv2Router02_ common.Address) (common.Address, *types.Transaction, *SystemContractMock, error) { + parsed, err := SystemContractMockMetaData.GetAbi() + if err != nil { + return common.Address{}, nil, nil, err + } + if parsed == nil { + return common.Address{}, nil, nil, errors.New("GetABI returned nil") + } + + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(SystemContractMockBin), backend, wzeta_, uniswapv2Factory_, uniswapv2Router02_) + if err != nil { + return common.Address{}, nil, nil, err + } + return address, tx, &SystemContractMock{SystemContractMockCaller: SystemContractMockCaller{contract: contract}, SystemContractMockTransactor: SystemContractMockTransactor{contract: contract}, SystemContractMockFilterer: SystemContractMockFilterer{contract: contract}}, nil +} + +// SystemContractMock is an auto generated Go binding around an Ethereum contract. +type SystemContractMock struct { + SystemContractMockCaller // Read-only binding to the contract + SystemContractMockTransactor // Write-only binding to the contract + SystemContractMockFilterer // Log filterer for contract events +} + +// SystemContractMockCaller is an auto generated read-only Go binding around an Ethereum contract. +type SystemContractMockCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractMockTransactor is an auto generated write-only Go binding around an Ethereum contract. +type SystemContractMockTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractMockFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type SystemContractMockFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// SystemContractMockSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type SystemContractMockSession struct { + Contract *SystemContractMock // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SystemContractMockCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type SystemContractMockCallerSession struct { + Contract *SystemContractMockCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// SystemContractMockTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type SystemContractMockTransactorSession struct { + Contract *SystemContractMockTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// SystemContractMockRaw is an auto generated low-level Go binding around an Ethereum contract. +type SystemContractMockRaw struct { + Contract *SystemContractMock // Generic contract binding to access the raw methods on +} + +// SystemContractMockCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type SystemContractMockCallerRaw struct { + Contract *SystemContractMockCaller // Generic read-only contract binding to access the raw methods on +} + +// SystemContractMockTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type SystemContractMockTransactorRaw struct { + Contract *SystemContractMockTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewSystemContractMock creates a new instance of SystemContractMock, bound to a specific deployed contract. +func NewSystemContractMock(address common.Address, backend bind.ContractBackend) (*SystemContractMock, error) { + contract, err := bindSystemContractMock(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &SystemContractMock{SystemContractMockCaller: SystemContractMockCaller{contract: contract}, SystemContractMockTransactor: SystemContractMockTransactor{contract: contract}, SystemContractMockFilterer: SystemContractMockFilterer{contract: contract}}, nil +} + +// NewSystemContractMockCaller creates a new read-only instance of SystemContractMock, bound to a specific deployed contract. +func NewSystemContractMockCaller(address common.Address, caller bind.ContractCaller) (*SystemContractMockCaller, error) { + contract, err := bindSystemContractMock(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &SystemContractMockCaller{contract: contract}, nil +} + +// NewSystemContractMockTransactor creates a new write-only instance of SystemContractMock, bound to a specific deployed contract. +func NewSystemContractMockTransactor(address common.Address, transactor bind.ContractTransactor) (*SystemContractMockTransactor, error) { + contract, err := bindSystemContractMock(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &SystemContractMockTransactor{contract: contract}, nil +} + +// NewSystemContractMockFilterer creates a new log filterer instance of SystemContractMock, bound to a specific deployed contract. +func NewSystemContractMockFilterer(address common.Address, filterer bind.ContractFilterer) (*SystemContractMockFilterer, error) { + contract, err := bindSystemContractMock(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &SystemContractMockFilterer{contract: contract}, nil +} + +// bindSystemContractMock binds a generic wrapper to an already deployed contract. +func bindSystemContractMock(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := SystemContractMockMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SystemContractMock *SystemContractMockRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SystemContractMock.Contract.SystemContractMockCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SystemContractMock *SystemContractMockRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SystemContractMock.Contract.SystemContractMockTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SystemContractMock *SystemContractMockRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SystemContractMock.Contract.SystemContractMockTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_SystemContractMock *SystemContractMockCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _SystemContractMock.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_SystemContractMock *SystemContractMockTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _SystemContractMock.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_SystemContractMock *SystemContractMockTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _SystemContractMock.Contract.contract.Transact(opts, method, params...) +} + +// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. +// +// Solidity: function gasCoinZRC20ByChainId(uint256 ) view returns(address) +func (_SystemContractMock *SystemContractMockCaller) GasCoinZRC20ByChainId(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _SystemContractMock.contract.Call(opts, &out, "gasCoinZRC20ByChainId", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. +// +// Solidity: function gasCoinZRC20ByChainId(uint256 ) view returns(address) +func (_SystemContractMock *SystemContractMockSession) GasCoinZRC20ByChainId(arg0 *big.Int) (common.Address, error) { + return _SystemContractMock.Contract.GasCoinZRC20ByChainId(&_SystemContractMock.CallOpts, arg0) +} + +// GasCoinZRC20ByChainId is a free data retrieval call binding the contract method 0x0be15547. +// +// Solidity: function gasCoinZRC20ByChainId(uint256 ) view returns(address) +func (_SystemContractMock *SystemContractMockCallerSession) GasCoinZRC20ByChainId(arg0 *big.Int) (common.Address, error) { + return _SystemContractMock.Contract.GasCoinZRC20ByChainId(&_SystemContractMock.CallOpts, arg0) +} + +// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. +// +// Solidity: function gasPriceByChainId(uint256 ) view returns(uint256) +func (_SystemContractMock *SystemContractMockCaller) GasPriceByChainId(opts *bind.CallOpts, arg0 *big.Int) (*big.Int, error) { + var out []interface{} + err := _SystemContractMock.contract.Call(opts, &out, "gasPriceByChainId", arg0) + + if err != nil { + return *new(*big.Int), err + } + + out0 := *abi.ConvertType(out[0], new(*big.Int)).(**big.Int) + + return out0, err + +} + +// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. +// +// Solidity: function gasPriceByChainId(uint256 ) view returns(uint256) +func (_SystemContractMock *SystemContractMockSession) GasPriceByChainId(arg0 *big.Int) (*big.Int, error) { + return _SystemContractMock.Contract.GasPriceByChainId(&_SystemContractMock.CallOpts, arg0) +} + +// GasPriceByChainId is a free data retrieval call binding the contract method 0xd7fd7afb. +// +// Solidity: function gasPriceByChainId(uint256 ) view returns(uint256) +func (_SystemContractMock *SystemContractMockCallerSession) GasPriceByChainId(arg0 *big.Int) (*big.Int, error) { + return _SystemContractMock.Contract.GasPriceByChainId(&_SystemContractMock.CallOpts, arg0) +} + +// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. +// +// Solidity: function gasZetaPoolByChainId(uint256 ) view returns(address) +func (_SystemContractMock *SystemContractMockCaller) GasZetaPoolByChainId(opts *bind.CallOpts, arg0 *big.Int) (common.Address, error) { + var out []interface{} + err := _SystemContractMock.contract.Call(opts, &out, "gasZetaPoolByChainId", arg0) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. +// +// Solidity: function gasZetaPoolByChainId(uint256 ) view returns(address) +func (_SystemContractMock *SystemContractMockSession) GasZetaPoolByChainId(arg0 *big.Int) (common.Address, error) { + return _SystemContractMock.Contract.GasZetaPoolByChainId(&_SystemContractMock.CallOpts, arg0) +} + +// GasZetaPoolByChainId is a free data retrieval call binding the contract method 0x513a9c05. +// +// Solidity: function gasZetaPoolByChainId(uint256 ) view returns(address) +func (_SystemContractMock *SystemContractMockCallerSession) GasZetaPoolByChainId(arg0 *big.Int) (common.Address, error) { + return _SystemContractMock.Contract.GasZetaPoolByChainId(&_SystemContractMock.CallOpts, arg0) +} + +// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. +// +// Solidity: function uniswapv2FactoryAddress() view returns(address) +func (_SystemContractMock *SystemContractMockCaller) Uniswapv2FactoryAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SystemContractMock.contract.Call(opts, &out, "uniswapv2FactoryAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. +// +// Solidity: function uniswapv2FactoryAddress() view returns(address) +func (_SystemContractMock *SystemContractMockSession) Uniswapv2FactoryAddress() (common.Address, error) { + return _SystemContractMock.Contract.Uniswapv2FactoryAddress(&_SystemContractMock.CallOpts) +} + +// Uniswapv2FactoryAddress is a free data retrieval call binding the contract method 0xd936a012. +// +// Solidity: function uniswapv2FactoryAddress() view returns(address) +func (_SystemContractMock *SystemContractMockCallerSession) Uniswapv2FactoryAddress() (common.Address, error) { + return _SystemContractMock.Contract.Uniswapv2FactoryAddress(&_SystemContractMock.CallOpts) +} + +// Uniswapv2PairFor is a free data retrieval call binding the contract method 0xc63585cc. +// +// Solidity: function uniswapv2PairFor(address factory, address tokenA, address tokenB) pure returns(address pair) +func (_SystemContractMock *SystemContractMockCaller) Uniswapv2PairFor(opts *bind.CallOpts, factory common.Address, tokenA common.Address, tokenB common.Address) (common.Address, error) { + var out []interface{} + err := _SystemContractMock.contract.Call(opts, &out, "uniswapv2PairFor", factory, tokenA, tokenB) + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Uniswapv2PairFor is a free data retrieval call binding the contract method 0xc63585cc. +// +// Solidity: function uniswapv2PairFor(address factory, address tokenA, address tokenB) pure returns(address pair) +func (_SystemContractMock *SystemContractMockSession) Uniswapv2PairFor(factory common.Address, tokenA common.Address, tokenB common.Address) (common.Address, error) { + return _SystemContractMock.Contract.Uniswapv2PairFor(&_SystemContractMock.CallOpts, factory, tokenA, tokenB) +} + +// Uniswapv2PairFor is a free data retrieval call binding the contract method 0xc63585cc. +// +// Solidity: function uniswapv2PairFor(address factory, address tokenA, address tokenB) pure returns(address pair) +func (_SystemContractMock *SystemContractMockCallerSession) Uniswapv2PairFor(factory common.Address, tokenA common.Address, tokenB common.Address) (common.Address, error) { + return _SystemContractMock.Contract.Uniswapv2PairFor(&_SystemContractMock.CallOpts, factory, tokenA, tokenB) +} + +// Uniswapv2Router02Address is a free data retrieval call binding the contract method 0x842da36d. +// +// Solidity: function uniswapv2Router02Address() view returns(address) +func (_SystemContractMock *SystemContractMockCaller) Uniswapv2Router02Address(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SystemContractMock.contract.Call(opts, &out, "uniswapv2Router02Address") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// Uniswapv2Router02Address is a free data retrieval call binding the contract method 0x842da36d. +// +// Solidity: function uniswapv2Router02Address() view returns(address) +func (_SystemContractMock *SystemContractMockSession) Uniswapv2Router02Address() (common.Address, error) { + return _SystemContractMock.Contract.Uniswapv2Router02Address(&_SystemContractMock.CallOpts) +} + +// Uniswapv2Router02Address is a free data retrieval call binding the contract method 0x842da36d. +// +// Solidity: function uniswapv2Router02Address() view returns(address) +func (_SystemContractMock *SystemContractMockCallerSession) Uniswapv2Router02Address() (common.Address, error) { + return _SystemContractMock.Contract.Uniswapv2Router02Address(&_SystemContractMock.CallOpts) +} + +// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. +// +// Solidity: function wZetaContractAddress() view returns(address) +func (_SystemContractMock *SystemContractMockCaller) WZetaContractAddress(opts *bind.CallOpts) (common.Address, error) { + var out []interface{} + err := _SystemContractMock.contract.Call(opts, &out, "wZetaContractAddress") + + if err != nil { + return *new(common.Address), err + } + + out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) + + return out0, err + +} + +// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. +// +// Solidity: function wZetaContractAddress() view returns(address) +func (_SystemContractMock *SystemContractMockSession) WZetaContractAddress() (common.Address, error) { + return _SystemContractMock.Contract.WZetaContractAddress(&_SystemContractMock.CallOpts) +} + +// WZetaContractAddress is a free data retrieval call binding the contract method 0x569541b9. +// +// Solidity: function wZetaContractAddress() view returns(address) +func (_SystemContractMock *SystemContractMockCallerSession) WZetaContractAddress() (common.Address, error) { + return _SystemContractMock.Contract.WZetaContractAddress(&_SystemContractMock.CallOpts) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0x3c669d55. +// +// Solidity: function onCrossChainCall(address target, address zrc20, uint256 amount, bytes message) returns() +func (_SystemContractMock *SystemContractMockTransactor) OnCrossChainCall(opts *bind.TransactOpts, target common.Address, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _SystemContractMock.contract.Transact(opts, "onCrossChainCall", target, zrc20, amount, message) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0x3c669d55. +// +// Solidity: function onCrossChainCall(address target, address zrc20, uint256 amount, bytes message) returns() +func (_SystemContractMock *SystemContractMockSession) OnCrossChainCall(target common.Address, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _SystemContractMock.Contract.OnCrossChainCall(&_SystemContractMock.TransactOpts, target, zrc20, amount, message) +} + +// OnCrossChainCall is a paid mutator transaction binding the contract method 0x3c669d55. +// +// Solidity: function onCrossChainCall(address target, address zrc20, uint256 amount, bytes message) returns() +func (_SystemContractMock *SystemContractMockTransactorSession) OnCrossChainCall(target common.Address, zrc20 common.Address, amount *big.Int, message []byte) (*types.Transaction, error) { + return _SystemContractMock.Contract.OnCrossChainCall(&_SystemContractMock.TransactOpts, target, zrc20, amount, message) +} + +// SetGasCoinZRC20 is a paid mutator transaction binding the contract method 0xee2815ba. +// +// Solidity: function setGasCoinZRC20(uint256 chainID, address zrc20) returns() +func (_SystemContractMock *SystemContractMockTransactor) SetGasCoinZRC20(opts *bind.TransactOpts, chainID *big.Int, zrc20 common.Address) (*types.Transaction, error) { + return _SystemContractMock.contract.Transact(opts, "setGasCoinZRC20", chainID, zrc20) +} + +// SetGasCoinZRC20 is a paid mutator transaction binding the contract method 0xee2815ba. +// +// Solidity: function setGasCoinZRC20(uint256 chainID, address zrc20) returns() +func (_SystemContractMock *SystemContractMockSession) SetGasCoinZRC20(chainID *big.Int, zrc20 common.Address) (*types.Transaction, error) { + return _SystemContractMock.Contract.SetGasCoinZRC20(&_SystemContractMock.TransactOpts, chainID, zrc20) +} + +// SetGasCoinZRC20 is a paid mutator transaction binding the contract method 0xee2815ba. +// +// Solidity: function setGasCoinZRC20(uint256 chainID, address zrc20) returns() +func (_SystemContractMock *SystemContractMockTransactorSession) SetGasCoinZRC20(chainID *big.Int, zrc20 common.Address) (*types.Transaction, error) { + return _SystemContractMock.Contract.SetGasCoinZRC20(&_SystemContractMock.TransactOpts, chainID, zrc20) +} + +// SetGasPrice is a paid mutator transaction binding the contract method 0xa7cb0507. +// +// Solidity: function setGasPrice(uint256 chainID, uint256 price) returns() +func (_SystemContractMock *SystemContractMockTransactor) SetGasPrice(opts *bind.TransactOpts, chainID *big.Int, price *big.Int) (*types.Transaction, error) { + return _SystemContractMock.contract.Transact(opts, "setGasPrice", chainID, price) +} + +// SetGasPrice is a paid mutator transaction binding the contract method 0xa7cb0507. +// +// Solidity: function setGasPrice(uint256 chainID, uint256 price) returns() +func (_SystemContractMock *SystemContractMockSession) SetGasPrice(chainID *big.Int, price *big.Int) (*types.Transaction, error) { + return _SystemContractMock.Contract.SetGasPrice(&_SystemContractMock.TransactOpts, chainID, price) +} + +// SetGasPrice is a paid mutator transaction binding the contract method 0xa7cb0507. +// +// Solidity: function setGasPrice(uint256 chainID, uint256 price) returns() +func (_SystemContractMock *SystemContractMockTransactorSession) SetGasPrice(chainID *big.Int, price *big.Int) (*types.Transaction, error) { + return _SystemContractMock.Contract.SetGasPrice(&_SystemContractMock.TransactOpts, chainID, price) +} + +// SetWZETAContractAddress is a paid mutator transaction binding the contract method 0x97770dff. +// +// Solidity: function setWZETAContractAddress(address addr) returns() +func (_SystemContractMock *SystemContractMockTransactor) SetWZETAContractAddress(opts *bind.TransactOpts, addr common.Address) (*types.Transaction, error) { + return _SystemContractMock.contract.Transact(opts, "setWZETAContractAddress", addr) +} + +// SetWZETAContractAddress is a paid mutator transaction binding the contract method 0x97770dff. +// +// Solidity: function setWZETAContractAddress(address addr) returns() +func (_SystemContractMock *SystemContractMockSession) SetWZETAContractAddress(addr common.Address) (*types.Transaction, error) { + return _SystemContractMock.Contract.SetWZETAContractAddress(&_SystemContractMock.TransactOpts, addr) +} + +// SetWZETAContractAddress is a paid mutator transaction binding the contract method 0x97770dff. +// +// Solidity: function setWZETAContractAddress(address addr) returns() +func (_SystemContractMock *SystemContractMockTransactorSession) SetWZETAContractAddress(addr common.Address) (*types.Transaction, error) { + return _SystemContractMock.Contract.SetWZETAContractAddress(&_SystemContractMock.TransactOpts, addr) +} + +// SystemContractMockSetGasCoinIterator is returned from FilterSetGasCoin and is used to iterate over the raw logs and unpacked data for SetGasCoin events raised by the SystemContractMock contract. +type SystemContractMockSetGasCoinIterator struct { + Event *SystemContractMockSetGasCoin // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractMockSetGasCoinIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetGasCoin) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetGasCoin) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractMockSetGasCoinIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractMockSetGasCoinIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractMockSetGasCoin represents a SetGasCoin event raised by the SystemContractMock contract. +type SystemContractMockSetGasCoin struct { + Arg0 *big.Int + Arg1 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetGasCoin is a free log retrieval operation binding the contract event 0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d. +// +// Solidity: event SetGasCoin(uint256 arg0, address arg1) +func (_SystemContractMock *SystemContractMockFilterer) FilterSetGasCoin(opts *bind.FilterOpts) (*SystemContractMockSetGasCoinIterator, error) { + + logs, sub, err := _SystemContractMock.contract.FilterLogs(opts, "SetGasCoin") + if err != nil { + return nil, err + } + return &SystemContractMockSetGasCoinIterator{contract: _SystemContractMock.contract, event: "SetGasCoin", logs: logs, sub: sub}, nil +} + +// WatchSetGasCoin is a free log subscription operation binding the contract event 0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d. +// +// Solidity: event SetGasCoin(uint256 arg0, address arg1) +func (_SystemContractMock *SystemContractMockFilterer) WatchSetGasCoin(opts *bind.WatchOpts, sink chan<- *SystemContractMockSetGasCoin) (event.Subscription, error) { + + logs, sub, err := _SystemContractMock.contract.WatchLogs(opts, "SetGasCoin") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractMockSetGasCoin) + if err := _SystemContractMock.contract.UnpackLog(event, "SetGasCoin", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetGasCoin is a log parse operation binding the contract event 0xd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d. +// +// Solidity: event SetGasCoin(uint256 arg0, address arg1) +func (_SystemContractMock *SystemContractMockFilterer) ParseSetGasCoin(log types.Log) (*SystemContractMockSetGasCoin, error) { + event := new(SystemContractMockSetGasCoin) + if err := _SystemContractMock.contract.UnpackLog(event, "SetGasCoin", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SystemContractMockSetGasPriceIterator is returned from FilterSetGasPrice and is used to iterate over the raw logs and unpacked data for SetGasPrice events raised by the SystemContractMock contract. +type SystemContractMockSetGasPriceIterator struct { + Event *SystemContractMockSetGasPrice // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractMockSetGasPriceIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetGasPrice) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetGasPrice) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractMockSetGasPriceIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractMockSetGasPriceIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractMockSetGasPrice represents a SetGasPrice event raised by the SystemContractMock contract. +type SystemContractMockSetGasPrice struct { + Arg0 *big.Int + Arg1 *big.Int + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetGasPrice is a free log retrieval operation binding the contract event 0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d. +// +// Solidity: event SetGasPrice(uint256 arg0, uint256 arg1) +func (_SystemContractMock *SystemContractMockFilterer) FilterSetGasPrice(opts *bind.FilterOpts) (*SystemContractMockSetGasPriceIterator, error) { + + logs, sub, err := _SystemContractMock.contract.FilterLogs(opts, "SetGasPrice") + if err != nil { + return nil, err + } + return &SystemContractMockSetGasPriceIterator{contract: _SystemContractMock.contract, event: "SetGasPrice", logs: logs, sub: sub}, nil +} + +// WatchSetGasPrice is a free log subscription operation binding the contract event 0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d. +// +// Solidity: event SetGasPrice(uint256 arg0, uint256 arg1) +func (_SystemContractMock *SystemContractMockFilterer) WatchSetGasPrice(opts *bind.WatchOpts, sink chan<- *SystemContractMockSetGasPrice) (event.Subscription, error) { + + logs, sub, err := _SystemContractMock.contract.WatchLogs(opts, "SetGasPrice") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractMockSetGasPrice) + if err := _SystemContractMock.contract.UnpackLog(event, "SetGasPrice", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetGasPrice is a log parse operation binding the contract event 0x49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d. +// +// Solidity: event SetGasPrice(uint256 arg0, uint256 arg1) +func (_SystemContractMock *SystemContractMockFilterer) ParseSetGasPrice(log types.Log) (*SystemContractMockSetGasPrice, error) { + event := new(SystemContractMockSetGasPrice) + if err := _SystemContractMock.contract.UnpackLog(event, "SetGasPrice", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SystemContractMockSetGasZetaPoolIterator is returned from FilterSetGasZetaPool and is used to iterate over the raw logs and unpacked data for SetGasZetaPool events raised by the SystemContractMock contract. +type SystemContractMockSetGasZetaPoolIterator struct { + Event *SystemContractMockSetGasZetaPool // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractMockSetGasZetaPoolIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetGasZetaPool) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetGasZetaPool) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractMockSetGasZetaPoolIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractMockSetGasZetaPoolIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractMockSetGasZetaPool represents a SetGasZetaPool event raised by the SystemContractMock contract. +type SystemContractMockSetGasZetaPool struct { + Arg0 *big.Int + Arg1 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetGasZetaPool is a free log retrieval operation binding the contract event 0x0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e. +// +// Solidity: event SetGasZetaPool(uint256 arg0, address arg1) +func (_SystemContractMock *SystemContractMockFilterer) FilterSetGasZetaPool(opts *bind.FilterOpts) (*SystemContractMockSetGasZetaPoolIterator, error) { + + logs, sub, err := _SystemContractMock.contract.FilterLogs(opts, "SetGasZetaPool") + if err != nil { + return nil, err + } + return &SystemContractMockSetGasZetaPoolIterator{contract: _SystemContractMock.contract, event: "SetGasZetaPool", logs: logs, sub: sub}, nil +} + +// WatchSetGasZetaPool is a free log subscription operation binding the contract event 0x0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e. +// +// Solidity: event SetGasZetaPool(uint256 arg0, address arg1) +func (_SystemContractMock *SystemContractMockFilterer) WatchSetGasZetaPool(opts *bind.WatchOpts, sink chan<- *SystemContractMockSetGasZetaPool) (event.Subscription, error) { + + logs, sub, err := _SystemContractMock.contract.WatchLogs(opts, "SetGasZetaPool") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractMockSetGasZetaPool) + if err := _SystemContractMock.contract.UnpackLog(event, "SetGasZetaPool", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetGasZetaPool is a log parse operation binding the contract event 0x0ecec485166da6139b13bb7e033e9446e2d35348e80ebf1180d4afe2dba1704e. +// +// Solidity: event SetGasZetaPool(uint256 arg0, address arg1) +func (_SystemContractMock *SystemContractMockFilterer) ParseSetGasZetaPool(log types.Log) (*SystemContractMockSetGasZetaPool, error) { + event := new(SystemContractMockSetGasZetaPool) + if err := _SystemContractMock.contract.UnpackLog(event, "SetGasZetaPool", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SystemContractMockSetWZetaIterator is returned from FilterSetWZeta and is used to iterate over the raw logs and unpacked data for SetWZeta events raised by the SystemContractMock contract. +type SystemContractMockSetWZetaIterator struct { + Event *SystemContractMockSetWZeta // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractMockSetWZetaIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetWZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSetWZeta) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractMockSetWZetaIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractMockSetWZetaIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractMockSetWZeta represents a SetWZeta event raised by the SystemContractMock contract. +type SystemContractMockSetWZeta struct { + Arg0 common.Address + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSetWZeta is a free log retrieval operation binding the contract event 0xdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e. +// +// Solidity: event SetWZeta(address arg0) +func (_SystemContractMock *SystemContractMockFilterer) FilterSetWZeta(opts *bind.FilterOpts) (*SystemContractMockSetWZetaIterator, error) { + + logs, sub, err := _SystemContractMock.contract.FilterLogs(opts, "SetWZeta") + if err != nil { + return nil, err + } + return &SystemContractMockSetWZetaIterator{contract: _SystemContractMock.contract, event: "SetWZeta", logs: logs, sub: sub}, nil +} + +// WatchSetWZeta is a free log subscription operation binding the contract event 0xdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e. +// +// Solidity: event SetWZeta(address arg0) +func (_SystemContractMock *SystemContractMockFilterer) WatchSetWZeta(opts *bind.WatchOpts, sink chan<- *SystemContractMockSetWZeta) (event.Subscription, error) { + + logs, sub, err := _SystemContractMock.contract.WatchLogs(opts, "SetWZeta") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractMockSetWZeta) + if err := _SystemContractMock.contract.UnpackLog(event, "SetWZeta", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSetWZeta is a log parse operation binding the contract event 0xdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e. +// +// Solidity: event SetWZeta(address arg0) +func (_SystemContractMock *SystemContractMockFilterer) ParseSetWZeta(log types.Log) (*SystemContractMockSetWZeta, error) { + event := new(SystemContractMockSetWZeta) + if err := _SystemContractMock.contract.UnpackLog(event, "SetWZeta", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + +// SystemContractMockSystemContractDeployedIterator is returned from FilterSystemContractDeployed and is used to iterate over the raw logs and unpacked data for SystemContractDeployed events raised by the SystemContractMock contract. +type SystemContractMockSystemContractDeployedIterator struct { + Event *SystemContractMockSystemContractDeployed // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *SystemContractMockSystemContractDeployedIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSystemContractDeployed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(SystemContractMockSystemContractDeployed) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *SystemContractMockSystemContractDeployedIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *SystemContractMockSystemContractDeployedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// SystemContractMockSystemContractDeployed represents a SystemContractDeployed event raised by the SystemContractMock contract. +type SystemContractMockSystemContractDeployed struct { + Raw types.Log // Blockchain specific contextual infos +} + +// FilterSystemContractDeployed is a free log retrieval operation binding the contract event 0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5. +// +// Solidity: event SystemContractDeployed() +func (_SystemContractMock *SystemContractMockFilterer) FilterSystemContractDeployed(opts *bind.FilterOpts) (*SystemContractMockSystemContractDeployedIterator, error) { + + logs, sub, err := _SystemContractMock.contract.FilterLogs(opts, "SystemContractDeployed") + if err != nil { + return nil, err + } + return &SystemContractMockSystemContractDeployedIterator{contract: _SystemContractMock.contract, event: "SystemContractDeployed", logs: logs, sub: sub}, nil +} + +// WatchSystemContractDeployed is a free log subscription operation binding the contract event 0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5. +// +// Solidity: event SystemContractDeployed() +func (_SystemContractMock *SystemContractMockFilterer) WatchSystemContractDeployed(opts *bind.WatchOpts, sink chan<- *SystemContractMockSystemContractDeployed) (event.Subscription, error) { + + logs, sub, err := _SystemContractMock.contract.WatchLogs(opts, "SystemContractDeployed") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(SystemContractMockSystemContractDeployed) + if err := _SystemContractMock.contract.UnpackLog(event, "SystemContractDeployed", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseSystemContractDeployed is a log parse operation binding the contract event 0x80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac5. +// +// Solidity: event SystemContractDeployed() +func (_SystemContractMock *SystemContractMockFilterer) ParseSystemContractDeployed(log types.Log) (*SystemContractMockSystemContractDeployed, error) { + event := new(SystemContractMockSystemContractDeployed) + if err := _SystemContractMock.contract.UnpackLog(event, "SystemContractDeployed", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/pkg/contracts/zevm/connectorzevm.sol/wzeta.go b/pkg/contracts/zevm/zetaconnectorzevm.sol/wzeta.go similarity index 99% rename from pkg/contracts/zevm/connectorzevm.sol/wzeta.go rename to pkg/contracts/zevm/zetaconnectorzevm.sol/wzeta.go index 0dcbf7a1..49ae1bad 100644 --- a/pkg/contracts/zevm/connectorzevm.sol/wzeta.go +++ b/pkg/contracts/zevm/zetaconnectorzevm.sol/wzeta.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package connectorzevm +package zetaconnectorzevm import ( "errors" diff --git a/pkg/contracts/zevm/connectorzevm.sol/zetaconnectorzevm.go b/pkg/contracts/zevm/zetaconnectorzevm.sol/zetaconnectorzevm.go similarity index 98% rename from pkg/contracts/zevm/connectorzevm.sol/zetaconnectorzevm.go rename to pkg/contracts/zevm/zetaconnectorzevm.sol/zetaconnectorzevm.go index 46589211..7eda84c1 100644 --- a/pkg/contracts/zevm/connectorzevm.sol/zetaconnectorzevm.go +++ b/pkg/contracts/zevm/zetaconnectorzevm.sol/zetaconnectorzevm.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package connectorzevm +package zetaconnectorzevm import ( "errors" @@ -41,8 +41,8 @@ type ZetaInterfacesSendInput struct { // ZetaConnectorZEVMMetaData contains all meta data concerning the ZetaConnectorZEVM contract. var ZetaConnectorZEVMMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wzeta\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"FailedZetaSent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyWZETA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WZETATransferFailed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"wzeta_\",\"type\":\"address\"}],\"name\":\"SetWZETA\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sourceTxOriginAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"name\":\"ZetaSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.SendInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wzeta_\",\"type\":\"address\"}],\"name\":\"setWzetaAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wzeta\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", - Bin: "0x608060405234801561001057600080fd5b50604051610a51380380610a518339818101604052810190610032919061008d565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610108565b600081519050610087816100f1565b92915050565b6000602082840312156100a3576100a26100ec565b5b60006100b184828501610078565b91505092915050565b60006100c5826100cc565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6100fa816100ba565b811461010557600080fd5b50565b61093a806101176000396000f3fe6080604052600436106100425760003560e01c8062173d46146100d35780633ce4a5bc146100fe578063eb3bacbd14610129578063ec02690114610152576100ce565b366100ce5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146100cc576040517f6e6b6de700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156100df57600080fd5b506100e861017b565b6040516100f591906106e5565b60405180910390f35b34801561010a57600080fd5b5061011361019f565b60405161012091906106e5565b60405180910390f35b34801561013557600080fd5b50610150600480360381019061014b91906105bf565b6101b7565b005b34801561015e57600080fd5b5061017960048036038101906101749190610619565b6102aa565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610230576040517fea02b3f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7325870b05f8f3412c318a35fc6a74feca51ea15811ec7a257676ca4db9d41768160405161029f91906106e5565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd333084608001356040518463ffffffff1660e01b815260040161030b93929190610700565b602060405180830381600087803b15801561032557600080fd5b505af1158015610339573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035d91906105ec565b610393576040517fa8c6fd4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d82608001356040518263ffffffff1660e01b81526004016103f091906107b3565b600060405180830381600087803b15801561040a57600080fd5b505af115801561041e573d6000803e3d6000fd5b50505050600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168260800135604051610460906106d0565b60006040518083038185875af1925050503d806000811461049d576040519150601f19603f3d011682016040523d82523d6000602084013e6104a2565b606091505b50509050806104dd576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e43285806020019061052b91906107ce565b8760800135886040013589806060019061054591906107ce565b8b8060a0019061055591906107ce565b60405161056a99989796959493929190610737565b60405180910390a35050565b600081359050610585816108d6565b92915050565b60008151905061059a816108ed565b92915050565b600060c082840312156105b6576105b56108a9565b5b81905092915050565b6000602082840312156105d5576105d46108bd565b5b60006105e384828501610576565b91505092915050565b600060208284031215610602576106016108bd565b5b60006106108482850161058b565b91505092915050565b60006020828403121561062f5761062e6108bd565b5b600082013567ffffffffffffffff81111561064d5761064c6108b8565b5b610659848285016105a0565b91505092915050565b61066b8161084d565b82525050565b600061067d8385610831565b935061068a838584610895565b610693836108c2565b840190509392505050565b60006106ab600083610842565b91506106b6826108d3565b600082019050919050565b6106ca8161088b565b82525050565b60006106db8261069e565b9150819050919050565b60006020820190506106fa6000830184610662565b92915050565b60006060820190506107156000830186610662565b6107226020830185610662565b61072f60408301846106c1565b949350505050565b600060c08201905061074c600083018c610662565b818103602083015261075f818a8c610671565b905061076e60408301896106c1565b61077b60608301886106c1565b818103608083015261078e818688610671565b905081810360a08301526107a3818486610671565b90509a9950505050505050505050565b60006020820190506107c860008301846106c1565b92915050565b600080833560016020038436030381126107eb576107ea6108ae565b5b80840192508235915067ffffffffffffffff82111561080d5761080c6108a4565b5b602083019250600182023603831315610829576108286108b3565b5b509250929050565b600082825260208201905092915050565b600081905092915050565b60006108588261086b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b50565b6108df8161084d565b81146108ea57600080fd5b50565b6108f68161085f565b811461090157600080fd5b5056fea2646970667358221220de77795070b6e9d863f949e5ff84ae67c6e2c498e6ffb04996698d04fcebe44864736f6c63430008070033", + ABI: "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wzeta_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"FailedZetaSent\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyWZETA\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"WZETATransferFailed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"wzeta_\",\"type\":\"address\"}],\"name\":\"SetWZETA\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sourceTxOriginAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"zetaTxSenderAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"name\":\"ZetaSent\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"destinationChainId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"destinationAddress\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"destinationGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"zetaValueAndGas\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"zetaParams\",\"type\":\"bytes\"}],\"internalType\":\"structZetaInterfaces.SendInput\",\"name\":\"input\",\"type\":\"tuple\"}],\"name\":\"send\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"wzeta_\",\"type\":\"address\"}],\"name\":\"setWzetaAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wzeta\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}]", + Bin: "0x608060405234801561001057600080fd5b50604051610a51380380610a518339818101604052810190610032919061008d565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610108565b600081519050610087816100f1565b92915050565b6000602082840312156100a3576100a26100ec565b5b60006100b184828501610078565b91505092915050565b60006100c5826100cc565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6100fa816100ba565b811461010557600080fd5b50565b61093a806101176000396000f3fe6080604052600436106100425760003560e01c8062173d46146100d35780633ce4a5bc146100fe578063eb3bacbd14610129578063ec02690114610152576100ce565b366100ce5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146100cc576040517f6e6b6de700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156100df57600080fd5b506100e861017b565b6040516100f591906106e5565b60405180910390f35b34801561010a57600080fd5b5061011361019f565b60405161012091906106e5565b60405180910390f35b34801561013557600080fd5b50610150600480360381019061014b91906105bf565b6101b7565b005b34801561015e57600080fd5b5061017960048036038101906101749190610619565b6102aa565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610230576040517fea02b3f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7325870b05f8f3412c318a35fc6a74feca51ea15811ec7a257676ca4db9d41768160405161029f91906106e5565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd333084608001356040518463ffffffff1660e01b815260040161030b93929190610700565b602060405180830381600087803b15801561032557600080fd5b505af1158015610339573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035d91906105ec565b610393576040517fa8c6fd4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d82608001356040518263ffffffff1660e01b81526004016103f091906107b3565b600060405180830381600087803b15801561040a57600080fd5b505af115801561041e573d6000803e3d6000fd5b50505050600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168260800135604051610460906106d0565b60006040518083038185875af1925050503d806000811461049d576040519150601f19603f3d011682016040523d82523d6000602084013e6104a2565b606091505b50509050806104dd576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e43285806020019061052b91906107ce565b8760800135886040013589806060019061054591906107ce565b8b8060a0019061055591906107ce565b60405161056a99989796959493929190610737565b60405180910390a35050565b600081359050610585816108d6565b92915050565b60008151905061059a816108ed565b92915050565b600060c082840312156105b6576105b56108a9565b5b81905092915050565b6000602082840312156105d5576105d46108bd565b5b60006105e384828501610576565b91505092915050565b600060208284031215610602576106016108bd565b5b60006106108482850161058b565b91505092915050565b60006020828403121561062f5761062e6108bd565b5b600082013567ffffffffffffffff81111561064d5761064c6108b8565b5b610659848285016105a0565b91505092915050565b61066b8161084d565b82525050565b600061067d8385610831565b935061068a838584610895565b610693836108c2565b840190509392505050565b60006106ab600083610842565b91506106b6826108d3565b600082019050919050565b6106ca8161088b565b82525050565b60006106db8261069e565b9150819050919050565b60006020820190506106fa6000830184610662565b92915050565b60006060820190506107156000830186610662565b6107226020830185610662565b61072f60408301846106c1565b949350505050565b600060c08201905061074c600083018c610662565b818103602083015261075f818a8c610671565b905061076e60408301896106c1565b61077b60608301886106c1565b818103608083015261078e818688610671565b905081810360a08301526107a3818486610671565b90509a9950505050505050505050565b60006020820190506107c860008301846106c1565b92915050565b600080833560016020038436030381126107eb576107ea6108ae565b5b80840192508235915067ffffffffffffffff82111561080d5761080c6108a4565b5b602083019250600182023603831315610829576108286108b3565b5b509250929050565b600082825260208201905092915050565b600081905092915050565b60006108588261086b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b50565b6108df8161084d565b81146108ea57600080fd5b50565b6108f68161085f565b811461090157600080fd5b5056fea26469706673582212209cb0a71343946ce3fb0c8378bb2c769fc506ceab04e93e858de3b8c13a0e1deb64736f6c63430008070033", } // ZetaConnectorZEVMABI is the input ABI used to generate the binding from. @@ -54,7 +54,7 @@ var ZetaConnectorZEVMABI = ZetaConnectorZEVMMetaData.ABI var ZetaConnectorZEVMBin = ZetaConnectorZEVMMetaData.Bin // DeployZetaConnectorZEVM deploys a new Ethereum contract, binding an instance of ZetaConnectorZEVM to it. -func DeployZetaConnectorZEVM(auth *bind.TransactOpts, backend bind.ContractBackend, _wzeta common.Address) (common.Address, *types.Transaction, *ZetaConnectorZEVM, error) { +func DeployZetaConnectorZEVM(auth *bind.TransactOpts, backend bind.ContractBackend, wzeta_ common.Address) (common.Address, *types.Transaction, *ZetaConnectorZEVM, error) { parsed, err := ZetaConnectorZEVMMetaData.GetAbi() if err != nil { return common.Address{}, nil, nil, err @@ -63,7 +63,7 @@ func DeployZetaConnectorZEVM(auth *bind.TransactOpts, backend bind.ContractBacke return common.Address{}, nil, nil, errors.New("GetABI returned nil") } - address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorZEVMBin), backend, _wzeta) + address, tx, contract, err := bind.DeployContract(auth, *parsed, common.FromHex(ZetaConnectorZEVMBin), backend, wzeta_) if err != nil { return common.Address{}, nil, nil, err } diff --git a/pkg/contracts/zevm/connectorzevm.sol/zetainterfaces.go b/pkg/contracts/zevm/zetaconnectorzevm.sol/zetainterfaces.go similarity index 99% rename from pkg/contracts/zevm/connectorzevm.sol/zetainterfaces.go rename to pkg/contracts/zevm/zetaconnectorzevm.sol/zetainterfaces.go index 445277e8..8497e3ea 100644 --- a/pkg/contracts/zevm/connectorzevm.sol/zetainterfaces.go +++ b/pkg/contracts/zevm/zetaconnectorzevm.sol/zetainterfaces.go @@ -1,7 +1,7 @@ // Code generated - DO NOT EDIT. // This file is a generated binding and any manual changes will be lost. -package connectorzevm +package zetaconnectorzevm import ( "errors" diff --git a/pkg/contracts/zevm/zrc20.sol/zrc20.go b/pkg/contracts/zevm/zrc20.sol/zrc20.go index 7a08a1b1..3e6c8835 100644 --- a/pkg/contracts/zevm/zrc20.sol/zrc20.go +++ b/pkg/contracts/zevm/zrc20.sol/zrc20.go @@ -31,8 +31,8 @@ var ( // ZRC20MetaData contains all meta data concerning the ZRC20 contract. var ZRC20MetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"chainid_\",\"type\":\"uint256\"},{\"internalType\":\"enumCoinType\",\"name\":\"coinType_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"systemContractAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasFeeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowAllowance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasCoin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasPrice\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"from\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"UpdatedGasLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"UpdatedProtocolFlatFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"systemContract\",\"type\":\"address\"}],\"name\":\"UpdatedSystemContract\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasfee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COIN_TYPE\",\"outputs\":[{\"internalType\":\"enumCoinType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROTOCOL_FLAT_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SYSTEM_CONTRACT_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"decreaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"increaseAllowance\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"updateGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"updateProtocolFlatFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"updateSystemContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawGasFee\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x60c06040523480156200001157600080fd5b50604051620029ab380380620029ab833981810160405281019062000037919062000319565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8660069080519060200190620000c99291906200018f565b508560079080519060200190620000e29291906200018f565b5084600860006101000a81548160ff021916908360ff16021790555083608081815250508260028111156200011c576200011b62000556565b5b60a081600281111562000134576200013362000556565b5b60f81b8152505081600181905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505062000667565b8280546200019d90620004ea565b90600052602060002090601f016020900481019282620001c157600085556200020d565b82601f10620001dc57805160ff19168380011785556200020d565b828001600101855582156200020d579182015b828111156200020c578251825591602001919060010190620001ef565b5b5090506200021c919062000220565b5090565b5b808211156200023b57600081600090555060010162000221565b5090565b600062000256620002508462000433565b6200040a565b905082815260208101848484011115620002755762000274620005e8565b5b62000282848285620004b4565b509392505050565b6000815190506200029b8162000608565b92915050565b600081519050620002b28162000622565b92915050565b600082601f830112620002d057620002cf620005e3565b5b8151620002e28482602086016200023f565b91505092915050565b600081519050620002fc8162000633565b92915050565b60008151905062000313816200064d565b92915050565b600080600080600080600060e0888a0312156200033b576200033a620005f2565b5b600088015167ffffffffffffffff8111156200035c576200035b620005ed565b5b6200036a8a828b01620002b8565b975050602088015167ffffffffffffffff8111156200038e576200038d620005ed565b5b6200039c8a828b01620002b8565b9650506040620003af8a828b0162000302565b9550506060620003c28a828b01620002eb565b9450506080620003d58a828b01620002a1565b93505060a0620003e88a828b01620002eb565b92505060c0620003fb8a828b016200028a565b91505092959891949750929550565b60006200041662000429565b905062000424828262000520565b919050565b6000604051905090565b600067ffffffffffffffff821115620004515762000450620005b4565b5b6200045c82620005f7565b9050602081019050919050565b600062000476826200047d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015620004d4578082015181840152602081019050620004b7565b83811115620004e4576000848401525b50505050565b600060028204905060018216806200050357607f821691505b602082108114156200051a576200051962000585565b5b50919050565b6200052b82620005f7565b810181811067ffffffffffffffff821117156200054d576200054c620005b4565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b620006138162000469565b81146200061f57600080fd5b50565b600381106200063057600080fd5b50565b6200063e816200049d565b81146200064a57600080fd5b50565b6200065881620004a7565b81146200066457600080fd5b50565b60805160a05160f81c61230d6200069e60003960006109f101526000818161093b01528181610e210152610f56015261230d6000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806385e1f4d0116100c3578063c835d7cc1161007c578063c835d7cc1461041b578063d9eeebed14610437578063dd62ed3e14610456578063eddeb12314610486578063f2441b32146104a2578063f687d12a146104c057610158565b806385e1f4d01461033157806395d89b411461034f578063a3413d031461036d578063a457c2d71461038b578063a9059cbb146103bb578063c7012626146103eb57610158565b8063395093511161011557806339509351146102355780633ce4a5bc1461026557806342966c681461028357806347e7ef24146102b35780634d8943bb146102e357806370a082311461030157610158565b806306fdde031461015d578063091d27881461017b578063095ea7b31461019957806318160ddd146101c957806323b872dd146101e7578063313ce56714610217575b600080fd5b6101656104dc565b6040516101729190611e83565b60405180910390f35b61018361056e565b6040516101909190611ea5565b60405180910390f35b6101b360048036038101906101ae9190611b44565b610574565b6040516101c09190611dd1565b60405180910390f35b6101d1610592565b6040516101de9190611ea5565b60405180910390f35b61020160048036038101906101fc9190611af1565b61059c565b60405161020e9190611dd1565b60405180910390f35b61021f610694565b60405161022c9190611ec0565b60405180910390f35b61024f600480360381019061024a9190611b44565b6106ab565b60405161025c9190611dd1565b60405180910390f35b61026d610751565b60405161027a9190611d56565b60405180910390f35b61029d60048036038101906102989190611c0d565b610769565b6040516102aa9190611dd1565b60405180910390f35b6102cd60048036038101906102c89190611b44565b61077e565b6040516102da9190611dd1565b60405180910390f35b6102eb6108ea565b6040516102f89190611ea5565b60405180910390f35b61031b60048036038101906103169190611a57565b6108f0565b6040516103289190611ea5565b60405180910390f35b610339610939565b6040516103469190611ea5565b60405180910390f35b61035761095d565b6040516103649190611e83565b60405180910390f35b6103756109ef565b6040516103829190611e68565b60405180910390f35b6103a560048036038101906103a09190611b44565b610a13565b6040516103b29190611dd1565b60405180910390f35b6103d560048036038101906103d09190611b44565b610b76565b6040516103e29190611dd1565b60405180910390f35b61040560048036038101906104009190611bb1565b610b94565b6040516104129190611dd1565b60405180910390f35b61043560048036038101906104309190611a57565b610cea565b005b61043f610ddd565b60405161044d929190611da8565b60405180910390f35b610470600480360381019061046b9190611ab1565b61104a565b60405161047d9190611ea5565b60405180910390f35b6104a0600480360381019061049b9190611c0d565b6110d1565b005b6104aa61118b565b6040516104b79190611d56565b60405180910390f35b6104da60048036038101906104d59190611c0d565b6111af565b005b6060600680546104eb90612109565b80601f016020809104026020016040519081016040528092919081815260200182805461051790612109565b80156105645780601f1061053957610100808354040283529160200191610564565b820191906000526020600020905b81548152906001019060200180831161054757829003601f168201915b5050505050905090565b60015481565b6000610588610581611269565b8484611271565b6001905092915050565b6000600554905090565b60006105a984848461142a565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105f4611269565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561066b576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61068885610677611269565b85846106839190612019565b611271565b60019150509392505050565b6000600860009054906101000a900460ff16905090565b600081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106f7611269565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107409190611f69565b925050819055506001905092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b60006107753383611686565b60019050919050565b600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561081c575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610853576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61085d838361183e565b8273ffffffffffffffffffffffffffffffffffffffff167f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab373735b14bb79463307aacbed86daf3322b1e6226ab6040516020016108ba9190611d3b565b604051602081830303815290604052846040516108d8929190611dec565b60405180910390a26001905092915050565b60025481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606007805461096c90612109565b80601f016020809104026020016040519081016040528092919081815260200182805461099890612109565b80156109e55780601f106109ba576101008083540402835291602001916109e5565b820191906000526020600020905b8154815290600101906020018083116109c857829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a5f611269565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610ad2576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b1c611269565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b659190612019565b925050819055506001905092915050565b6000610b8a610b83611269565b848461142a565b6001905092915050565b6000806000610ba1610ddd565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b8152600401610bf693929190611d71565b602060405180830381600087803b158015610c1057600080fd5b505af1158015610c24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c489190611b84565b610c7e576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c883385611686565b3373ffffffffffffffffffffffffffffffffffffffff167f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955868684600254604051610cd69493929190611e1c565b60405180910390a260019250505092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d63576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae81604051610dd29190611d56565b60405180910390a150565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630be155477f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610e5c9190611ea5565b60206040518083038186803b158015610e7457600080fd5b505afa158015610e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eac9190611a84565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f15576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7fd7afb7f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610f919190611ea5565b60206040518083038186803b158015610fa957600080fd5b505afa158015610fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe19190611c3a565b9050600081141561101e576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600254600154836110319190611fbf565b61103b9190611f69565b90508281945094505050509091565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461114a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f816040516111809190611ea5565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611228576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001819055507fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a8160405161125e9190611ea5565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112d8576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561133f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161141d9190611ea5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611491576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114f8576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611576576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816115829190612019565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116149190611f69565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116789190611ea5565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116ed576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561176b576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816117779190612019565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008282546117cc9190612019565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118319190611ea5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118a5576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546118b79190611f69565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461190d9190611f69565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119729190611ea5565b60405180910390a35050565b600061199161198c84611f00565b611edb565b9050828152602081018484840111156119ad576119ac612251565b5b6119b88482856120c7565b509392505050565b6000813590506119cf81612292565b92915050565b6000815190506119e481612292565b92915050565b6000815190506119f9816122a9565b92915050565b600082601f830112611a1457611a1361224c565b5b8135611a2484826020860161197e565b91505092915050565b600081359050611a3c816122c0565b92915050565b600081519050611a51816122c0565b92915050565b600060208284031215611a6d57611a6c61225b565b5b6000611a7b848285016119c0565b91505092915050565b600060208284031215611a9a57611a9961225b565b5b6000611aa8848285016119d5565b91505092915050565b60008060408385031215611ac857611ac761225b565b5b6000611ad6858286016119c0565b9250506020611ae7858286016119c0565b9150509250929050565b600080600060608486031215611b0a57611b0961225b565b5b6000611b18868287016119c0565b9350506020611b29868287016119c0565b9250506040611b3a86828701611a2d565b9150509250925092565b60008060408385031215611b5b57611b5a61225b565b5b6000611b69858286016119c0565b9250506020611b7a85828601611a2d565b9150509250929050565b600060208284031215611b9a57611b9961225b565b5b6000611ba8848285016119ea565b91505092915050565b60008060408385031215611bc857611bc761225b565b5b600083013567ffffffffffffffff811115611be657611be5612256565b5b611bf2858286016119ff565b9250506020611c0385828601611a2d565b9150509250929050565b600060208284031215611c2357611c2261225b565b5b6000611c3184828501611a2d565b91505092915050565b600060208284031215611c5057611c4f61225b565b5b6000611c5e84828501611a42565b91505092915050565b611c708161204d565b82525050565b611c87611c828261204d565b61216c565b82525050565b611c968161205f565b82525050565b6000611ca782611f31565b611cb18185611f47565b9350611cc18185602086016120d6565b611cca81612260565b840191505092915050565b611cde816120b5565b82525050565b6000611cef82611f3c565b611cf98185611f58565b9350611d098185602086016120d6565b611d1281612260565b840191505092915050565b611d268161209e565b82525050565b611d35816120a8565b82525050565b6000611d478284611c76565b60148201915081905092915050565b6000602082019050611d6b6000830184611c67565b92915050565b6000606082019050611d866000830186611c67565b611d936020830185611c67565b611da06040830184611d1d565b949350505050565b6000604082019050611dbd6000830185611c67565b611dca6020830184611d1d565b9392505050565b6000602082019050611de66000830184611c8d565b92915050565b60006040820190508181036000830152611e068185611c9c565b9050611e156020830184611d1d565b9392505050565b60006080820190508181036000830152611e368187611c9c565b9050611e456020830186611d1d565b611e526040830185611d1d565b611e5f6060830184611d1d565b95945050505050565b6000602082019050611e7d6000830184611cd5565b92915050565b60006020820190508181036000830152611e9d8184611ce4565b905092915050565b6000602082019050611eba6000830184611d1d565b92915050565b6000602082019050611ed56000830184611d2c565b92915050565b6000611ee5611ef6565b9050611ef1828261213b565b919050565b6000604051905090565b600067ffffffffffffffff821115611f1b57611f1a61221d565b5b611f2482612260565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611f748261209e565b9150611f7f8361209e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611fb457611fb3612190565b5b828201905092915050565b6000611fca8261209e565b9150611fd58361209e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561200e5761200d612190565b5b828202905092915050565b60006120248261209e565b915061202f8361209e565b92508282101561204257612041612190565b5b828203905092915050565b60006120588261207e565b9050919050565b60008115159050919050565b60008190506120798261227e565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006120c08261206b565b9050919050565b82818337600083830152505050565b60005b838110156120f45780820151818401526020810190506120d9565b83811115612103576000848401525b50505050565b6000600282049050600182168061212157607f821691505b60208210811415612135576121346121ee565b5b50919050565b61214482612260565b810181811067ffffffffffffffff821117156121635761216261221d565b5b80604052505050565b60006121778261217e565b9050919050565b600061218982612271565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b6003811061228f5761228e6121bf565b5b50565b61229b8161204d565b81146122a657600080fd5b50565b6122b28161205f565b81146122bd57600080fd5b50565b6122c98161209e565b81146122d457600080fd5b5056fea26469706673582212208357de1ed0d4d2f796fce64a99317bee3c27736e62c98ae3a61ca8b37436fbc564736f6c63430008070033", + ABI: "[{\"inputs\":[{\"internalType\":\"string\",\"name\":\"name_\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol_\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"chainid_\",\"type\":\"uint256\"},{\"internalType\":\"enumCoinType\",\"name\":\"coinType_\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"gasLimit_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"systemContractAddress_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[],\"name\":\"CallerIsNotFungibleModule\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GasFeeTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowAllowance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"LowBalance\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasCoin\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroGasPrice\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"from\",\"type\":\"bytes\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"UpdatedGasLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"UpdatedProtocolFlatFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"systemContract\",\"type\":\"address\"}],\"name\":\"UpdatedSystemContract\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasfee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CHAIN_ID\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"COIN_TYPE\",\"outputs\":[{\"internalType\":\"enumCoinType\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FUNGIBLE_MODULE_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GAS_LIMIT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PROTOCOL_FLAT_FEE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SYSTEM_CONTRACT_ADDRESS\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"deposit\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"updateGasLimit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"protocolFlatFee\",\"type\":\"uint256\"}],\"name\":\"updateProtocolFlatFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"addr\",\"type\":\"address\"}],\"name\":\"updateSystemContractAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"to\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawGasFee\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x60c06040523480156200001157600080fd5b506040516200272c3803806200272c833981810160405281019062000037919062000319565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8660069080519060200190620000c99291906200018f565b508560079080519060200190620000e29291906200018f565b5084600860006101000a81548160ff021916908360ff16021790555083608081815250508260028111156200011c576200011b62000556565b5b60a081600281111562000134576200013362000556565b5b60f81b8152505081600181905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505062000667565b8280546200019d90620004ea565b90600052602060002090601f016020900481019282620001c157600085556200020d565b82601f10620001dc57805160ff19168380011785556200020d565b828001600101855582156200020d579182015b828111156200020c578251825591602001919060010190620001ef565b5b5090506200021c919062000220565b5090565b5b808211156200023b57600081600090555060010162000221565b5090565b600062000256620002508462000433565b6200040a565b905082815260208101848484011115620002755762000274620005e8565b5b62000282848285620004b4565b509392505050565b6000815190506200029b8162000608565b92915050565b600081519050620002b28162000622565b92915050565b600082601f830112620002d057620002cf620005e3565b5b8151620002e28482602086016200023f565b91505092915050565b600081519050620002fc8162000633565b92915050565b60008151905062000313816200064d565b92915050565b600080600080600080600060e0888a0312156200033b576200033a620005f2565b5b600088015167ffffffffffffffff8111156200035c576200035b620005ed565b5b6200036a8a828b01620002b8565b975050602088015167ffffffffffffffff8111156200038e576200038d620005ed565b5b6200039c8a828b01620002b8565b9650506040620003af8a828b0162000302565b9550506060620003c28a828b01620002eb565b9450506080620003d58a828b01620002a1565b93505060a0620003e88a828b01620002eb565b92505060c0620003fb8a828b016200028a565b91505092959891949750929550565b60006200041662000429565b905062000424828262000520565b919050565b6000604051905090565b600067ffffffffffffffff821115620004515762000450620005b4565b5b6200045c82620005f7565b9050602081019050919050565b600062000476826200047d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015620004d4578082015181840152602081019050620004b7565b83811115620004e4576000848401525b50505050565b600060028204905060018216806200050357607f821691505b602082108114156200051a576200051962000585565b5b50919050565b6200052b82620005f7565b810181811067ffffffffffffffff821117156200054d576200054c620005b4565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b620006138162000469565b81146200061f57600080fd5b50565b600381106200063057600080fd5b50565b6200063e816200049d565b81146200064a57600080fd5b50565b6200065881620004a7565b81146200066457600080fd5b50565b60805160a05160f81c61208e6200069e60003960006108d501526000818161081f01528181610ba20152610cd7015261208e6000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806385e1f4d0116100b8578063c835d7cc1161007c578063c835d7cc146103a5578063d9eeebed146103c1578063dd62ed3e146103e0578063eddeb12314610410578063f2441b321461042c578063f687d12a1461044a57610142565b806385e1f4d0146102eb57806395d89b4114610309578063a3413d0314610327578063a9059cbb14610345578063c70126261461037557610142565b8063313ce5671161010a578063313ce567146102015780633ce4a5bc1461021f57806342966c681461023d57806347e7ef241461026d5780634d8943bb1461029d57806370a08231146102bb57610142565b806306fdde0314610147578063091d278814610165578063095ea7b31461018357806318160ddd146101b357806323b872dd146101d1575b600080fd5b61014f610466565b60405161015c9190611c04565b60405180910390f35b61016d6104f8565b60405161017a9190611c26565b60405180910390f35b61019d600480360381019061019891906118c5565b6104fe565b6040516101aa9190611b52565b60405180910390f35b6101bb61051c565b6040516101c89190611c26565b60405180910390f35b6101eb60048036038101906101e69190611872565b610526565b6040516101f89190611b52565b60405180910390f35b61020961061e565b6040516102169190611c41565b60405180910390f35b610227610635565b6040516102349190611ad7565b60405180910390f35b6102576004803603810190610252919061198e565b61064d565b6040516102649190611b52565b60405180910390f35b610287600480360381019061028291906118c5565b610662565b6040516102949190611b52565b60405180910390f35b6102a56107ce565b6040516102b29190611c26565b60405180910390f35b6102d560048036038101906102d091906117d8565b6107d4565b6040516102e29190611c26565b60405180910390f35b6102f361081d565b6040516103009190611c26565b60405180910390f35b610311610841565b60405161031e9190611c04565b60405180910390f35b61032f6108d3565b60405161033c9190611be9565b60405180910390f35b61035f600480360381019061035a91906118c5565b6108f7565b60405161036c9190611b52565b60405180910390f35b61038f600480360381019061038a9190611932565b610915565b60405161039c9190611b52565b60405180910390f35b6103bf60048036038101906103ba91906117d8565b610a6b565b005b6103c9610b5e565b6040516103d7929190611b29565b60405180910390f35b6103fa60048036038101906103f59190611832565b610dcb565b6040516104079190611c26565b60405180910390f35b61042a6004803603810190610425919061198e565b610e52565b005b610434610f0c565b6040516104419190611ad7565b60405180910390f35b610464600480360381019061045f919061198e565b610f30565b005b60606006805461047590611e8a565b80601f01602080910402602001604051908101604052809291908181526020018280546104a190611e8a565b80156104ee5780601f106104c3576101008083540402835291602001916104ee565b820191906000526020600020905b8154815290600101906020018083116104d157829003601f168201915b5050505050905090565b60015481565b600061051261050b610fea565b8484610ff2565b6001905092915050565b6000600554905090565b60006105338484846111ab565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061057e610fea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156105f5576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61061285610601610fea565b858461060d9190611d9a565b610ff2565b60019150509392505050565b6000600860009054906101000a900460ff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b60006106593383611407565b60019050919050565b600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610700575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610737576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61074183836115bf565b8273ffffffffffffffffffffffffffffffffffffffff167f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab373735b14bb79463307aacbed86daf3322b1e6226ab60405160200161079e9190611abc565b604051602081830303815290604052846040516107bc929190611b6d565b60405180910390a26001905092915050565b60025481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606007805461085090611e8a565b80601f016020809104026020016040519081016040528092919081815260200182805461087c90611e8a565b80156108c95780601f1061089e576101008083540402835291602001916108c9565b820191906000526020600020905b8154815290600101906020018083116108ac57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061090b610904610fea565b84846111ab565b6001905092915050565b6000806000610922610b5e565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b815260040161097793929190611af2565b602060405180830381600087803b15801561099157600080fd5b505af11580156109a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c99190611905565b6109ff576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a093385611407565b3373ffffffffffffffffffffffffffffffffffffffff167f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955868684600254604051610a579493929190611b9d565b60405180910390a260019250505092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ae4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae81604051610b539190611ad7565b60405180910390a150565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630be155477f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610bdd9190611c26565b60206040518083038186803b158015610bf557600080fd5b505afa158015610c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2d9190611805565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c96576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7fd7afb7f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610d129190611c26565b60206040518083038186803b158015610d2a57600080fd5b505afa158015610d3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6291906119bb565b90506000811415610d9f576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db29190611d40565b610dbc9190611cea565b90508281945094505050509091565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ecb576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f81604051610f019190611c26565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fa9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001819055507fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a81604051610fdf9190611c26565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611059576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161119e9190611c26565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611212576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611279576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156112f7576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816113039190611d9a565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113959190611cea565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113f99190611c26565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561146e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114ec576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816114f89190611d9a565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816005600082825461154d9190611d9a565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115b29190611c26565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611626576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546116389190611cea565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461168e9190611cea565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116f39190611c26565b60405180910390a35050565b600061171261170d84611c81565b611c5c565b90508281526020810184848401111561172e5761172d611fd2565b5b611739848285611e48565b509392505050565b60008135905061175081612013565b92915050565b60008151905061176581612013565b92915050565b60008151905061177a8161202a565b92915050565b600082601f83011261179557611794611fcd565b5b81356117a58482602086016116ff565b91505092915050565b6000813590506117bd81612041565b92915050565b6000815190506117d281612041565b92915050565b6000602082840312156117ee576117ed611fdc565b5b60006117fc84828501611741565b91505092915050565b60006020828403121561181b5761181a611fdc565b5b600061182984828501611756565b91505092915050565b6000806040838503121561184957611848611fdc565b5b600061185785828601611741565b925050602061186885828601611741565b9150509250929050565b60008060006060848603121561188b5761188a611fdc565b5b600061189986828701611741565b93505060206118aa86828701611741565b92505060406118bb868287016117ae565b9150509250925092565b600080604083850312156118dc576118db611fdc565b5b60006118ea85828601611741565b92505060206118fb858286016117ae565b9150509250929050565b60006020828403121561191b5761191a611fdc565b5b60006119298482850161176b565b91505092915050565b6000806040838503121561194957611948611fdc565b5b600083013567ffffffffffffffff81111561196757611966611fd7565b5b61197385828601611780565b9250506020611984858286016117ae565b9150509250929050565b6000602082840312156119a4576119a3611fdc565b5b60006119b2848285016117ae565b91505092915050565b6000602082840312156119d1576119d0611fdc565b5b60006119df848285016117c3565b91505092915050565b6119f181611dce565b82525050565b611a08611a0382611dce565b611eed565b82525050565b611a1781611de0565b82525050565b6000611a2882611cb2565b611a328185611cc8565b9350611a42818560208601611e57565b611a4b81611fe1565b840191505092915050565b611a5f81611e36565b82525050565b6000611a7082611cbd565b611a7a8185611cd9565b9350611a8a818560208601611e57565b611a9381611fe1565b840191505092915050565b611aa781611e1f565b82525050565b611ab681611e29565b82525050565b6000611ac882846119f7565b60148201915081905092915050565b6000602082019050611aec60008301846119e8565b92915050565b6000606082019050611b0760008301866119e8565b611b1460208301856119e8565b611b216040830184611a9e565b949350505050565b6000604082019050611b3e60008301856119e8565b611b4b6020830184611a9e565b9392505050565b6000602082019050611b676000830184611a0e565b92915050565b60006040820190508181036000830152611b878185611a1d565b9050611b966020830184611a9e565b9392505050565b60006080820190508181036000830152611bb78187611a1d565b9050611bc66020830186611a9e565b611bd36040830185611a9e565b611be06060830184611a9e565b95945050505050565b6000602082019050611bfe6000830184611a56565b92915050565b60006020820190508181036000830152611c1e8184611a65565b905092915050565b6000602082019050611c3b6000830184611a9e565b92915050565b6000602082019050611c566000830184611aad565b92915050565b6000611c66611c77565b9050611c728282611ebc565b919050565b6000604051905090565b600067ffffffffffffffff821115611c9c57611c9b611f9e565b5b611ca582611fe1565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611cf582611e1f565b9150611d0083611e1f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611d3557611d34611f11565b5b828201905092915050565b6000611d4b82611e1f565b9150611d5683611e1f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d8f57611d8e611f11565b5b828202905092915050565b6000611da582611e1f565b9150611db083611e1f565b925082821015611dc357611dc2611f11565b5b828203905092915050565b6000611dd982611dff565b9050919050565b60008115159050919050565b6000819050611dfa82611fff565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611e4182611dec565b9050919050565b82818337600083830152505050565b60005b83811015611e75578082015181840152602081019050611e5a565b83811115611e84576000848401525b50505050565b60006002820490506001821680611ea257607f821691505b60208210811415611eb657611eb5611f6f565b5b50919050565b611ec582611fe1565b810181811067ffffffffffffffff82111715611ee457611ee3611f9e565b5b80604052505050565b6000611ef882611eff565b9050919050565b6000611f0a82611ff2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b600381106120105761200f611f40565b5b50565b61201c81611dce565b811461202757600080fd5b50565b61203381611de0565b811461203e57600080fd5b50565b61204a81611e1f565b811461205557600080fd5b5056fea2646970667358221220edaf9ed98354e71aa84b95b4433f47537dd491d72f649020c367c23ec482327064736f6c63430008070033", } // ZRC20ABI is the input ABI used to generate the binding from. @@ -648,27 +648,6 @@ func (_ZRC20 *ZRC20TransactorSession) Burn(amount *big.Int) (*types.Transaction, return _ZRC20.Contract.Burn(&_ZRC20.TransactOpts, amount) } -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 amount) returns(bool) -func (_ZRC20 *ZRC20Transactor) DecreaseAllowance(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20.contract.Transact(opts, "decreaseAllowance", spender, amount) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 amount) returns(bool) -func (_ZRC20 *ZRC20Session) DecreaseAllowance(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.DecreaseAllowance(&_ZRC20.TransactOpts, spender, amount) -} - -// DecreaseAllowance is a paid mutator transaction binding the contract method 0xa457c2d7. -// -// Solidity: function decreaseAllowance(address spender, uint256 amount) returns(bool) -func (_ZRC20 *ZRC20TransactorSession) DecreaseAllowance(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.DecreaseAllowance(&_ZRC20.TransactOpts, spender, amount) -} - // Deposit is a paid mutator transaction binding the contract method 0x47e7ef24. // // Solidity: function deposit(address to, uint256 amount) returns(bool) @@ -690,27 +669,6 @@ func (_ZRC20 *ZRC20TransactorSession) Deposit(to common.Address, amount *big.Int return _ZRC20.Contract.Deposit(&_ZRC20.TransactOpts, to, amount) } -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 amount) returns(bool) -func (_ZRC20 *ZRC20Transactor) IncreaseAllowance(opts *bind.TransactOpts, spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20.contract.Transact(opts, "increaseAllowance", spender, amount) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 amount) returns(bool) -func (_ZRC20 *ZRC20Session) IncreaseAllowance(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.IncreaseAllowance(&_ZRC20.TransactOpts, spender, amount) -} - -// IncreaseAllowance is a paid mutator transaction binding the contract method 0x39509351. -// -// Solidity: function increaseAllowance(address spender, uint256 amount) returns(bool) -func (_ZRC20 *ZRC20TransactorSession) IncreaseAllowance(spender common.Address, amount *big.Int) (*types.Transaction, error) { - return _ZRC20.Contract.IncreaseAllowance(&_ZRC20.TransactOpts, spender, amount) -} - // Transfer is a paid mutator transaction binding the contract method 0xa9059cbb. // // Solidity: function transfer(address recipient, uint256 amount) returns(bool) diff --git a/pkg/openzeppelin/contracts/security/reentrancyguard.sol/reentrancyguard.go b/pkg/openzeppelin/contracts/security/reentrancyguard.sol/reentrancyguard.go new file mode 100644 index 00000000..e62fdc89 --- /dev/null +++ b/pkg/openzeppelin/contracts/security/reentrancyguard.sol/reentrancyguard.go @@ -0,0 +1,181 @@ +// Code generated - DO NOT EDIT. +// This file is a generated binding and any manual changes will be lost. + +package reentrancyguard + +import ( + "errors" + "math/big" + "strings" + + ethereum "github.com/ethereum/go-ethereum" + "github.com/ethereum/go-ethereum/accounts/abi" + "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/ethereum/go-ethereum/common" + "github.com/ethereum/go-ethereum/core/types" + "github.com/ethereum/go-ethereum/event" +) + +// Reference imports to suppress errors if they are not otherwise used. +var ( + _ = errors.New + _ = big.NewInt + _ = strings.NewReader + _ = ethereum.NotFound + _ = bind.Bind + _ = common.Big1 + _ = types.BloomLookup + _ = event.NewSubscription + _ = abi.ConvertType +) + +// ReentrancyGuardMetaData contains all meta data concerning the ReentrancyGuard contract. +var ReentrancyGuardMetaData = &bind.MetaData{ + ABI: "[]", +} + +// ReentrancyGuardABI is the input ABI used to generate the binding from. +// Deprecated: Use ReentrancyGuardMetaData.ABI instead. +var ReentrancyGuardABI = ReentrancyGuardMetaData.ABI + +// ReentrancyGuard is an auto generated Go binding around an Ethereum contract. +type ReentrancyGuard struct { + ReentrancyGuardCaller // Read-only binding to the contract + ReentrancyGuardTransactor // Write-only binding to the contract + ReentrancyGuardFilterer // Log filterer for contract events +} + +// ReentrancyGuardCaller is an auto generated read-only Go binding around an Ethereum contract. +type ReentrancyGuardCaller struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardTransactor is an auto generated write-only Go binding around an Ethereum contract. +type ReentrancyGuardTransactor struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardFilterer is an auto generated log filtering Go binding around an Ethereum contract events. +type ReentrancyGuardFilterer struct { + contract *bind.BoundContract // Generic contract wrapper for the low level calls +} + +// ReentrancyGuardSession is an auto generated Go binding around an Ethereum contract, +// with pre-set call and transact options. +type ReentrancyGuardSession struct { + Contract *ReentrancyGuard // Generic contract binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReentrancyGuardCallerSession is an auto generated read-only Go binding around an Ethereum contract, +// with pre-set call options. +type ReentrancyGuardCallerSession struct { + Contract *ReentrancyGuardCaller // Generic contract caller binding to set the session for + CallOpts bind.CallOpts // Call options to use throughout this session +} + +// ReentrancyGuardTransactorSession is an auto generated write-only Go binding around an Ethereum contract, +// with pre-set transact options. +type ReentrancyGuardTransactorSession struct { + Contract *ReentrancyGuardTransactor // Generic contract transactor binding to set the session for + TransactOpts bind.TransactOpts // Transaction auth options to use throughout this session +} + +// ReentrancyGuardRaw is an auto generated low-level Go binding around an Ethereum contract. +type ReentrancyGuardRaw struct { + Contract *ReentrancyGuard // Generic contract binding to access the raw methods on +} + +// ReentrancyGuardCallerRaw is an auto generated low-level read-only Go binding around an Ethereum contract. +type ReentrancyGuardCallerRaw struct { + Contract *ReentrancyGuardCaller // Generic read-only contract binding to access the raw methods on +} + +// ReentrancyGuardTransactorRaw is an auto generated low-level write-only Go binding around an Ethereum contract. +type ReentrancyGuardTransactorRaw struct { + Contract *ReentrancyGuardTransactor // Generic write-only contract binding to access the raw methods on +} + +// NewReentrancyGuard creates a new instance of ReentrancyGuard, bound to a specific deployed contract. +func NewReentrancyGuard(address common.Address, backend bind.ContractBackend) (*ReentrancyGuard, error) { + contract, err := bindReentrancyGuard(address, backend, backend, backend) + if err != nil { + return nil, err + } + return &ReentrancyGuard{ReentrancyGuardCaller: ReentrancyGuardCaller{contract: contract}, ReentrancyGuardTransactor: ReentrancyGuardTransactor{contract: contract}, ReentrancyGuardFilterer: ReentrancyGuardFilterer{contract: contract}}, nil +} + +// NewReentrancyGuardCaller creates a new read-only instance of ReentrancyGuard, bound to a specific deployed contract. +func NewReentrancyGuardCaller(address common.Address, caller bind.ContractCaller) (*ReentrancyGuardCaller, error) { + contract, err := bindReentrancyGuard(address, caller, nil, nil) + if err != nil { + return nil, err + } + return &ReentrancyGuardCaller{contract: contract}, nil +} + +// NewReentrancyGuardTransactor creates a new write-only instance of ReentrancyGuard, bound to a specific deployed contract. +func NewReentrancyGuardTransactor(address common.Address, transactor bind.ContractTransactor) (*ReentrancyGuardTransactor, error) { + contract, err := bindReentrancyGuard(address, nil, transactor, nil) + if err != nil { + return nil, err + } + return &ReentrancyGuardTransactor{contract: contract}, nil +} + +// NewReentrancyGuardFilterer creates a new log filterer instance of ReentrancyGuard, bound to a specific deployed contract. +func NewReentrancyGuardFilterer(address common.Address, filterer bind.ContractFilterer) (*ReentrancyGuardFilterer, error) { + contract, err := bindReentrancyGuard(address, nil, nil, filterer) + if err != nil { + return nil, err + } + return &ReentrancyGuardFilterer{contract: contract}, nil +} + +// bindReentrancyGuard binds a generic wrapper to an already deployed contract. +func bindReentrancyGuard(address common.Address, caller bind.ContractCaller, transactor bind.ContractTransactor, filterer bind.ContractFilterer) (*bind.BoundContract, error) { + parsed, err := ReentrancyGuardMetaData.GetAbi() + if err != nil { + return nil, err + } + return bind.NewBoundContract(address, *parsed, caller, transactor, filterer), nil +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReentrancyGuard *ReentrancyGuardRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReentrancyGuard.Contract.ReentrancyGuardCaller.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReentrancyGuard *ReentrancyGuardRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReentrancyGuard.Contract.ReentrancyGuardTransactor.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReentrancyGuard *ReentrancyGuardRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReentrancyGuard.Contract.ReentrancyGuardTransactor.contract.Transact(opts, method, params...) +} + +// Call invokes the (constant) contract method with params as input values and +// sets the output to result. The result type might be a single field for simple +// returns, a slice of interfaces for anonymous returns and a struct for named +// returns. +func (_ReentrancyGuard *ReentrancyGuardCallerRaw) Call(opts *bind.CallOpts, result *[]interface{}, method string, params ...interface{}) error { + return _ReentrancyGuard.Contract.contract.Call(opts, result, method, params...) +} + +// Transfer initiates a plain transaction to move funds to the contract, calling +// its default method if one is available. +func (_ReentrancyGuard *ReentrancyGuardTransactorRaw) Transfer(opts *bind.TransactOpts) (*types.Transaction, error) { + return _ReentrancyGuard.Contract.contract.Transfer(opts) +} + +// Transact invokes the (paid) contract method with params as input values. +func (_ReentrancyGuard *ReentrancyGuardTransactorRaw) Transact(opts *bind.TransactOpts, method string, params ...interface{}) (*types.Transaction, error) { + return _ReentrancyGuard.Contract.contract.Transact(opts, method, params...) +} diff --git a/readme.md b/readme.md index 760a2e63..309c5d98 100644 --- a/readme.md +++ b/readme.md @@ -47,7 +47,7 @@ Before you can contribute to this project, you must have the following installed To get started with this project, you should first clone the repository: ``` -git clone https://github.com/zeta-chain/protocol +git clone https://github.com/zeta-chain/protocol-contracts ``` Once you have cloned the repository, you can navigate to the project directory diff --git a/scripts/deployments/core/deploy.ts b/scripts/deployments/core/deploy.ts index 382bb509..eb3bc268 100644 --- a/scripts/deployments/core/deploy.ts +++ b/scripts/deployments/core/deploy.ts @@ -1,31 +1,18 @@ -import { isLocalNetworkName } from "@zetachain/addresses"; -import { ethers, network } from "hardhat"; +import { network } from "hardhat"; -import { isEthNetworkName } from "../../../lib/contracts.helpers"; -import { setZetaAddresses } from "../../tools/set-zeta-token-addresses"; -import { deployZetaConnector } from "./deploy-zeta-connector"; -import { deployZetaToken } from "./deploy-zeta-token"; +import { isProtocolNetworkName } from "../../../lib/address.tools"; +import { deterministicDeployERC20Custody } from "./deterministic-deploy-erc20-custody"; +import { deterministicDeployZetaConnector } from "./deterministic-deploy-zeta-connector"; +import { deterministicDeployZetaToken } from "./deterministic-deploy-zeta-token"; -async function main() { - if (isLocalNetworkName(network.name)) { - const [owner] = await ethers.getSigners(); - } - - const zetaTokenAddress = await deployZetaToken(); - const connectorAddress = await deployZetaConnector(); +const networkName = network.name; - /** - * @description The Eth implementation of Zeta token doesn't need any address - */ - if (isEthNetworkName(network.name)) return; +async function main() { + if (!isProtocolNetworkName(networkName)) throw new Error("Invalid network name"); - /** - * @description Avoid setting Zeta addresses for local network, - * since it must be done after starting the local Zeta node - */ - if (!isLocalNetworkName(network.name)) { - await setZetaAddresses(connectorAddress, zetaTokenAddress); - } + await deterministicDeployZetaToken(); + await deterministicDeployZetaConnector(); + await deterministicDeployERC20Custody(); } main() diff --git a/scripts/deployments/core/deterministic-deploy-erc20-custody.ts b/scripts/deployments/core/deterministic-deploy-erc20-custody.ts index 75ddef57..370fc145 100644 --- a/scripts/deployments/core/deterministic-deploy-erc20-custody.ts +++ b/scripts/deployments/core/deterministic-deploy-erc20-custody.ts @@ -2,13 +2,7 @@ import { BigNumber } from "ethers"; import { ethers, network } from "hardhat"; import { getAddress, isProtocolNetworkName } from "lib"; -import { - ERC20_CUSTODY_SALT_NUMBER_ETH, - ERC20_CUSTODY_SALT_NUMBER_NON_ETH, - ERC20_CUSTODY_ZETA_FEE, - ERC20_CUSTODY_ZETA_MAX_FEE, -} from "../../../lib/contracts.constants"; -import { isEthNetworkName } from "../../../lib/contracts.helpers"; +import { ERC20_CUSTODY_ZETA_FEE, ERC20_CUSTODY_ZETA_MAX_FEE, getSaltNumber } from "../../../lib/contracts.constants"; import { deployContractToAddress, saltToHex, @@ -22,6 +16,7 @@ export const deterministicDeployERC20Custody = async () => { const accounts = await ethers.getSigners(); const [signer] = accounts; + const initialBalance = await signer.getBalance(); const DEPLOYER_ADDRESS = process.env.DEPLOYER_ADDRESS || signer.address; @@ -30,7 +25,7 @@ export const deterministicDeployERC20Custody = async () => { const tssUpdaterAddress = getAddress("tssUpdater", network.name); const immutableCreate2FactoryAddress = getAddress("immutableCreate2Factory", network.name); - const saltNumber = isEthNetworkName(network.name) ? ERC20_CUSTODY_SALT_NUMBER_ETH : ERC20_CUSTODY_SALT_NUMBER_NON_ETH; + const saltNumber = getSaltNumber("zetaERC20Custody", network.name); const saltStr = BigNumber.from(saltNumber).toHexString(); const zetaFee = ERC20_CUSTODY_ZETA_FEE; @@ -52,8 +47,12 @@ export const deterministicDeployERC20Custody = async () => { signer, }); + const finalBalance = await signer.getBalance(); console.log("Deployed ERC20 Custody. Address:", address); console.log("Constructor Args", constructorArgs); + console.log("ETH spent:", initialBalance.sub(finalBalance).toString()); + + return address; }; if (!process.env.EXECUTE_PROGRAMMATICALLY) { diff --git a/scripts/deployments/core/deterministic-deploy-zeta-connector.ts b/scripts/deployments/core/deterministic-deploy-zeta-connector.ts index 7918ef3b..dcb116db 100644 --- a/scripts/deployments/core/deterministic-deploy-zeta-connector.ts +++ b/scripts/deployments/core/deterministic-deploy-zeta-connector.ts @@ -2,7 +2,7 @@ import { BigNumber } from "ethers"; import { ethers, network } from "hardhat"; import { getAddress, isProtocolNetworkName } from "lib"; -import { ZETA_CONNECTOR_SALT_NUMBER_ETH, ZETA_CONNECTOR_SALT_NUMBER_NON_ETH } from "../../../lib/contracts.constants"; +import { getSaltNumber } from "../../../lib/contracts.constants"; import { isEthNetworkName } from "../../../lib/contracts.helpers"; import { deployContractToAddress, @@ -10,13 +10,14 @@ import { } from "../../../lib/ImmutableCreate2Factory/ImmutableCreate2Factory.helpers"; import { ZetaConnectorEth__factory, ZetaConnectorNonEth__factory } from "../../../typechain-types"; -export async function deterministicDeployZetaConnector() { +export const deterministicDeployZetaConnector = async () => { if (!isProtocolNetworkName(network.name)) { throw new Error(`network.name: ${network.name} isn't supported.`); } const accounts = await ethers.getSigners(); const [signer] = accounts; + const initialBalance = await signer.getBalance(); const DEPLOYER_ADDRESS = process.env.DEPLOYER_ADDRESS || signer.address; @@ -25,9 +26,7 @@ export async function deterministicDeployZetaConnector() { const tssUpdaterAddress = getAddress("tssUpdater", network.name); const immutableCreate2FactoryAddress = getAddress("immutableCreate2Factory", network.name); - const saltNumber = isEthNetworkName(network.name) - ? ZETA_CONNECTOR_SALT_NUMBER_ETH - : ZETA_CONNECTOR_SALT_NUMBER_NON_ETH; + const saltNumber = getSaltNumber("zetaConnector", network.name); const saltStr = BigNumber.from(saltNumber).toHexString(); const salthex = saltToHex(saltStr, DEPLOYER_ADDRESS); @@ -50,9 +49,13 @@ export async function deterministicDeployZetaConnector() { signer, }); + const finalBalance = await signer.getBalance(); console.log("Deployed ZetaConnector. Address:", address); console.log("Constructor Args", constructorArgs); -} + console.log("ETH spent:", initialBalance.sub(finalBalance).toString()); + + return address; +}; if (!process.env.EXECUTE_PROGRAMMATICALLY) { deterministicDeployZetaConnector() diff --git a/scripts/deployments/core/deterministic-deploy-zeta-token.ts b/scripts/deployments/core/deterministic-deploy-zeta-token.ts index f55284af..4ff01072 100644 --- a/scripts/deployments/core/deterministic-deploy-zeta-token.ts +++ b/scripts/deployments/core/deterministic-deploy-zeta-token.ts @@ -2,11 +2,7 @@ import { BigNumber } from "ethers"; import { ethers, network } from "hardhat"; import { getAddress, isProtocolNetworkName } from "lib"; -import { - ZETA_INITIAL_SUPPLY, - ZETA_TOKEN_SALT_NUMBER_ETH, - ZETA_TOKEN_SALT_NUMBER_NON_ETH, -} from "../../../lib/contracts.constants"; +import { getSaltNumber, ZETA_INITIAL_SUPPLY } from "../../../lib/contracts.constants"; import { isEthNetworkName } from "../../../lib/contracts.helpers"; import { deployContractToAddress, @@ -14,13 +10,14 @@ import { } from "../../../lib/ImmutableCreate2Factory/ImmutableCreate2Factory.helpers"; import { ZetaEth__factory, ZetaNonEth__factory } from "../../../typechain-types"; -export async function deterministicDeployZetaToken() { +export const deterministicDeployZetaToken = async () => { if (!isProtocolNetworkName(network.name)) { throw new Error(`network.name: ${network.name} isn't supported.`); } const accounts = await ethers.getSigners(); const [signer] = accounts; + const initialBalance = await signer.getBalance(); const DEPLOYER_ADDRESS = process.env.DEPLOYER_ADDRESS || signer.address; @@ -28,7 +25,7 @@ export async function deterministicDeployZetaToken() { const tssUpdaterAddress = getAddress("tssUpdater", network.name); const immutableCreate2FactoryAddress = getAddress("immutableCreate2Factory", network.name); - const saltNumber = isEthNetworkName(network.name) ? ZETA_TOKEN_SALT_NUMBER_ETH : ZETA_TOKEN_SALT_NUMBER_NON_ETH; + const saltNumber = getSaltNumber("zetaToken", network.name); const saltStr = BigNumber.from(saltNumber).toHexString(); const salthex = saltToHex(saltStr, DEPLOYER_ADDRESS); @@ -57,9 +54,13 @@ export async function deterministicDeployZetaToken() { signer, }); + const finalBalance = await signer.getBalance(); console.log("Deployed zetaToken. Address:", address); console.log("Constructor Args", constructorArgs); -} + console.log("ETH spent:", initialBalance.sub(finalBalance).toString()); + + return address; +}; if (!process.env.EXECUTE_PROGRAMMATICALLY) { deterministicDeployZetaToken() diff --git a/scripts/deployments/tools/deterministic-deploy-zeta-consumer-pancakev3.ts b/scripts/deployments/tools/deterministic-deploy-zeta-consumer-pancakev3.ts new file mode 100644 index 00000000..608f36e7 --- /dev/null +++ b/scripts/deployments/tools/deterministic-deploy-zeta-consumer-pancakev3.ts @@ -0,0 +1,45 @@ +import { ethers, network } from "hardhat"; + +import { getAddress, getNonZetaAddress, isProtocolNetworkName } from "../../../lib"; +import { ZetaTokenConsumerPancakeV3__factory } from "../../../typechain-types"; + +export async function deterministicDeployZetaConsumer() { + if (!isProtocolNetworkName(network.name)) { + throw new Error(`network.name: ${network.name} isn't supported.`); + } + const accounts = await ethers.getSigners(); + const [signer] = accounts; + + const zetaTokenAddress = getAddress("zetaToken", network.name); + const uniswapV3Router = getNonZetaAddress("uniswapV3Router", network.name); + const uniswapV3Factory = getNonZetaAddress("uniswapV3Factory", network.name); + const WETH9Address = getNonZetaAddress("weth9", network.name); + + const zetaPoolFee = 500; + const tokenPoolFee = 3000; + + console.log([zetaTokenAddress, uniswapV3Router, uniswapV3Factory, WETH9Address, zetaPoolFee, tokenPoolFee]); + + const Factory = new ZetaTokenConsumerPancakeV3__factory(signer); + const contract = await Factory.deploy( + zetaTokenAddress, + uniswapV3Router, + uniswapV3Factory, + WETH9Address, + zetaPoolFee, + tokenPoolFee + ); + await contract.deployed(); + const address = contract.address; + + console.log("Deployed ZetaConsumer. Address:", address); +} + +if (!process.env.EXECUTE_PROGRAMMATICALLY) { + deterministicDeployZetaConsumer() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); +} diff --git a/scripts/deployments/tools/deterministic-get-salt-erc20-custody.ts b/scripts/deployments/tools/deterministic-get-salt-erc20-custody.ts index d22a602a..195f2a6f 100644 --- a/scripts/deployments/tools/deterministic-get-salt-erc20-custody.ts +++ b/scripts/deployments/tools/deterministic-get-salt-erc20-custody.ts @@ -29,14 +29,19 @@ export const deterministicDeployGetSaltERC20Custody = async () => { const constructorArgs = [tssAddress, tssUpdaterAddress, zetaFee.toString(), zetaMaxFee.toString(), zetaTokenAddress]; const contractBytecode = ERC20Custody__factory.bytecode; - calculateBestSalt(MAX_ITERATIONS, DEPLOYER_ADDRESS, constructorTypes, constructorArgs, contractBytecode); + await calculateBestSalt( + MAX_ITERATIONS, + DEPLOYER_ADDRESS, + constructorTypes, + constructorArgs, + contractBytecode, + network.name + ); }; -if (!process.env.EXECUTE_PROGRAMMATICALLY) { - deterministicDeployGetSaltERC20Custody() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error); - process.exit(1); - }); -} +deterministicDeployGetSaltERC20Custody() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/deployments/tools/deterministic-get-salt-zeta-connector.ts b/scripts/deployments/tools/deterministic-get-salt-zeta-connector.ts index 73252f6f..dfbb3105 100644 --- a/scripts/deployments/tools/deterministic-get-salt-zeta-connector.ts +++ b/scripts/deployments/tools/deterministic-get-salt-zeta-connector.ts @@ -34,14 +34,19 @@ export async function deterministicDeployGetSaltZetaConnector() { contractBytecode = ZetaConnectorNonEth__factory.bytecode; } - calculateBestSalt(MAX_ITERATIONS, DEPLOYER_ADDRESS, constructorTypes, constructorArgs, contractBytecode); + await calculateBestSalt( + MAX_ITERATIONS, + DEPLOYER_ADDRESS, + constructorTypes, + constructorArgs, + contractBytecode, + network.name + ); } -if (!process.env.EXECUTE_PROGRAMMATICALLY) { - deterministicDeployGetSaltZetaConnector() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error); - process.exit(1); - }); -} +deterministicDeployGetSaltZetaConnector() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/deployments/tools/deterministic-get-salt-zeta-token.ts b/scripts/deployments/tools/deterministic-get-salt-zeta-token.ts index e988ee2c..b627d2fa 100644 --- a/scripts/deployments/tools/deterministic-get-salt-zeta-token.ts +++ b/scripts/deployments/tools/deterministic-get-salt-zeta-token.ts @@ -34,14 +34,19 @@ export async function deterministicDeployGetSaltZetaToken() { constructorArgs = [tssAddress, tssUpdaterAddress]; contractBytecode = ZetaNonEth__factory.bytecode; } - calculateBestSalt(MAX_ITERATIONS, DEPLOYER_ADDRESS, constructorTypes, constructorArgs, contractBytecode); + await calculateBestSalt( + MAX_ITERATIONS, + DEPLOYER_ADDRESS, + constructorTypes, + constructorArgs, + contractBytecode, + network.name + ); } -if (!process.env.EXECUTE_PROGRAMMATICALLY) { - deterministicDeployGetSaltZetaToken() - .then(() => process.exit(0)) - .catch((error) => { - console.error(error); - process.exit(1); - }); -} +deterministicDeployGetSaltZetaToken() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/generate_addresses.sh b/scripts/generate_addresses.sh new file mode 100755 index 00000000..b51dc8cf --- /dev/null +++ b/scripts/generate_addresses.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +echo "Generating protocol addresses..." + +npx hardhat addresses --network zeta_testnet > ./data/addresses.testnet.json +npx hardhat addresses --network zeta_mainnet > ./data/addresses.mainnet.json + +echo "Generating protocol addresses types..." + +npx ts-node scripts/generate_addresses_types.ts > ./lib/types.ts \ No newline at end of file diff --git a/scripts/generate_addresses_types.ts b/scripts/generate_addresses_types.ts new file mode 100644 index 00000000..2c0622be --- /dev/null +++ b/scripts/generate_addresses_types.ts @@ -0,0 +1,42 @@ +import mainnet from "../data/addresses.mainnet.json"; +import testnet from "../data/addresses.testnet.json"; + +const extractUniqueValues = (data: any[], key: string): string[] => { + const allValues = data.filter((item) => item[key] !== undefined).map((item) => item[key].toString()); + return [...new Set(allValues)]; +}; + +const generateTypesForKeys = (keys: string[]) => { + const networks = [...mainnet, ...testnet]; + + let typeDefs = ""; + + keys.forEach((key) => { + const uniqueValues = extractUniqueValues(networks, key); + if (uniqueValues.length > 0) { + const isNumeric = uniqueValues.every((value) => !isNaN(Number(value))); + const formattedValues = isNumeric ? uniqueValues.join(" | ") : `"${uniqueValues.join('" | "')}"`; + + typeDefs += `export type Param${toCamelCase(key, true)} = ${formattedValues};\n`; + } + }); + + console.log(typeDefs); +}; + +// Modify this function to handle underscores and capitalize each word +const toCamelCase = (string: string, capitalizeFirst: boolean = false) => { + return string + .split("_") + .map((word, index) => { + if (index === 0) { + return capitalizeFirst ? word.charAt(0).toUpperCase() + word.slice(1) : word; + } + return word.charAt(0).toUpperCase() + word.slice(1); + }) + .join(""); +}; + +const keysToGenerate = ["symbol", "chain_name", "type"]; + +generateTypesForKeys(keysToGenerate); diff --git a/scripts/tools/bytecode-checker/bytecode.constants.ts b/scripts/tools/bytecode-checker/bytecode.constants.ts new file mode 100644 index 00000000..0c6ed398 --- /dev/null +++ b/scripts/tools/bytecode-checker/bytecode.constants.ts @@ -0,0 +1,18 @@ +export const ETHERSCAN_API_ENDPOINT = "https://api.etherscan.io"; +export const BSC_ETHERSCAN_API_ENDPOINT = "https://api.bscscan.com"; +export const ZETA_NODE_ENDPOINT = "http://100.71.167.102:8545"; + +export const etherscanApiKey = process.env.ETHERSCAN_API_KEY; +export const bscEtherscanApiKey = process.env.BSCSCAN_API_KEY; + +export const ethConnectorAddress = "0x000007Cf399229b2f5A4D043F20E90C9C98B7C6a"; +export const ethERC20CustodyAddress = "0x000001b91C19A31809e769110d35FAd2C15BCeA7"; +export const ethTokenAddress = "0xf091867EC603A6628eD83D274E835539D82e9cc8"; + +export const bscConnectorAddress = "0x000063A6e758D9e2f438d430108377564cf4077D"; +export const bscERC20CustodyAddress = "0x0000006Abbf11Ed0FabFD247f1F4d76A383cC395"; +export const bscTokenAddress = "0x0000028a2eB8346cd5c0267856aB7594B7a55308"; + +export const BTC_BTC = "0x13A0c5930C028511Dc02665E7285134B6d11A5f4"; +export const BNB_BSC = "0x48f80608B672DC30DC7e3dbBd0343c5F02C738Eb"; +export const ETH_ETH = "0xd97B1de3619ed2c6BEb3860147E30cA8A7dC9891"; diff --git a/scripts/tools/bytecode-checker/bytecode.helpers.ts b/scripts/tools/bytecode-checker/bytecode.helpers.ts new file mode 100644 index 00000000..481b94af --- /dev/null +++ b/scripts/tools/bytecode-checker/bytecode.helpers.ts @@ -0,0 +1,94 @@ +const fetch = require("node-fetch"); +const fs = require("fs"); +const path = require("path"); +const { ethers } = require("ethers"); +import { BigNumber } from "ethers"; + +import { + BSC_ETHERSCAN_API_ENDPOINT, + bscEtherscanApiKey, + ETHERSCAN_API_ENDPOINT, + etherscanApiKey, + ZETA_NODE_ENDPOINT, +} from "./bytecode.constants"; + +export const encodeNumber = (weiValue: BigNumber) => { + return ethers.utils.hexZeroPad(weiValue.toHexString(), 32).replace("0x", ""); +}; + +export const encodeAddress = (address: string) => { + return ethers.utils.hexZeroPad(address, 32).replace("0x", ""); +}; + +export const compareBytecode = (bytecodeA: string, bytecodeB: string) => { + if (bytecodeA === bytecodeB) { + console.log("Bytecode matches!"); + } else { + console.error("Bytecode doesn't match!"); + } +}; + +export const getEtherscanBytecode = async (network: "bsc" | "eth", contractAddress: string) => { + const endpoint = network === "bsc" ? BSC_ETHERSCAN_API_ENDPOINT : ETHERSCAN_API_ENDPOINT; + const apiKey = network === "bsc" ? bscEtherscanApiKey : etherscanApiKey; + const etherscanApiUrl = `${endpoint}/api?module=proxy&action=eth_getCode&address=${contractAddress}&apikey=${apiKey}`; + + try { + const response = await fetch(etherscanApiUrl); + const data = await response.json(); + const bytecode = data.result; + return bytecode; + } catch (error) { + console.error("Error fetching bytecode:", error); + } +}; + +// @dev: helper to find differences between two bytecodes when there's a mismatch +export const findDiff = (codeA: string, codeB: string) => { + console.log("Lengths:", codeA.length, codeB.length); + for (let i = 0; i < codeA.length; i++) { + if (codeA[i] !== codeB[i]) { + console.log(i, codeA.substring(i - 20, i + 40), codeB.substring(i - 20, i + 40)); + } + } +}; + +export const getZetaNodeBytecode = async (contractAddress: string) => { + try { + const provider = new ethers.providers.JsonRpcProvider(ZETA_NODE_ENDPOINT); + const bytecode = await provider.getCode(contractAddress); + return bytecode; + } catch (error) { + console.error("Error fetching bytecode:", error); + console.error("Please make sure you are connected to tailscale."); + } +}; + +export const removeImmutableAddress = (bytecode: string, pattern: string) => { + const replacement = encodeAddress(ethers.constants.AddressZero); + const regex = new RegExp(pattern, "gi"); + + bytecode = bytecode.replace(regex, replacement); + return bytecode; +}; + +export const removeImmutableNumber = (bytecode: string, pattern: string) => { + const replacement = encodeNumber(BigNumber.from("0")); + const regex = new RegExp(pattern, "gi"); + + bytecode = bytecode.replace(regex, replacement); + return bytecode; +}; + +export const getDeployedBytecode = async (contract: string, kind: "evm" | "zevm") => { + try { + const filePath = path.join(__dirname, `../../../artifacts/contracts/${kind}/${contract}.json`); + const fileContent = fs.readFileSync(filePath, "utf8"); + const jsonContent = JSON.parse(fileContent); + const deployedBytecode = jsonContent.deployedBytecode; + + return deployedBytecode; + } catch (error) { + console.error("Error reading the file or parsing JSON:", error); + } +}; diff --git a/scripts/tools/bytecode-checker/bytecode.ts b/scripts/tools/bytecode-checker/bytecode.ts new file mode 100644 index 00000000..2a667cfd --- /dev/null +++ b/scripts/tools/bytecode-checker/bytecode.ts @@ -0,0 +1,98 @@ +import { BigNumber } from "ethers"; +import { parseEther } from "ethers/lib/utils"; + +import { + BNB_BSC, + bscConnectorAddress, + bscERC20CustodyAddress, + bscTokenAddress, + BTC_BTC, + ETH_ETH, + ethConnectorAddress, + ethERC20CustodyAddress, + ethTokenAddress, +} from "./bytecode.constants"; +import { + compareBytecode, + encodeAddress, + encodeNumber, + getDeployedBytecode, + getEtherscanBytecode, + getZetaNodeBytecode, + removeImmutableAddress, + removeImmutableNumber, +} from "./bytecode.helpers"; + +const checkEthConnectorBytecode = async () => { + const remoteBytecode = await getEtherscanBytecode("eth", ethConnectorAddress); + const cleanRemoteBytecode = removeImmutableAddress(remoteBytecode, encodeAddress(ethTokenAddress)); + const deployedBytecode = await getDeployedBytecode("ZetaConnector.eth.sol/ZetaConnectorEth", "evm"); + compareBytecode(cleanRemoteBytecode, deployedBytecode); +}; + +const checkEthCustodyBytecode = async () => { + const remoteBytecode = await getEtherscanBytecode("eth", ethERC20CustodyAddress); + let cleanRemoteBytecode = removeImmutableAddress(remoteBytecode, encodeAddress(ethTokenAddress)); + cleanRemoteBytecode = removeImmutableNumber(cleanRemoteBytecode, encodeNumber(parseEther("1000"))); // zetaMaxFee + const deployedBytecode = await getDeployedBytecode("ERC20Custody.sol/ERC20Custody", "evm"); + compareBytecode(cleanRemoteBytecode, deployedBytecode); +}; + +const checkBscConnectorBytecode = async () => { + const remoteBytecode = await getEtherscanBytecode("bsc", bscConnectorAddress); + const cleanRemoteBytecode = removeImmutableAddress(remoteBytecode, encodeAddress(bscTokenAddress)); + const deployedBytecode = await getDeployedBytecode("ZetaConnector.non-eth.sol/ZetaConnectorNonEth", "evm"); + compareBytecode(cleanRemoteBytecode, deployedBytecode); +}; + +const checkBscCustodyBytecode = async () => { + const remoteBytecode = await getEtherscanBytecode("bsc", bscERC20CustodyAddress); + let cleanRemoteBytecode = removeImmutableAddress(remoteBytecode, encodeAddress(bscTokenAddress)); + cleanRemoteBytecode = removeImmutableNumber(cleanRemoteBytecode, encodeNumber(parseEther("1000"))); // zetaMaxFee + const deployedBytecode = await getDeployedBytecode("ERC20Custody.sol/ERC20Custody", "evm"); + compareBytecode(cleanRemoteBytecode, deployedBytecode); +}; + +const checkZRC20ETHBytecode = async () => { + const remoteBytecode = await getZetaNodeBytecode(ETH_ETH); + let cleanRemoteBytecode = removeImmutableNumber(remoteBytecode, encodeNumber(BigNumber.from("1"))); // ETH CHAIN ID + cleanRemoteBytecode = removeImmutableNumber(cleanRemoteBytecode, encodeNumber(BigNumber.from("1"))); // Gas COIN TYPE + const deployedBytecode = await getDeployedBytecode("ZRC20.sol/ZRC20", "zevm"); + compareBytecode(cleanRemoteBytecode, deployedBytecode); +}; + +const checkZRC20BTCBytecode = async () => { + const remoteBytecode = await getZetaNodeBytecode(BTC_BTC); + let cleanRemoteBytecode = removeImmutableNumber(remoteBytecode, encodeNumber(BigNumber.from("8332"))); // BTC CHAIN ID + cleanRemoteBytecode = removeImmutableNumber(cleanRemoteBytecode, encodeNumber(BigNumber.from("1"))); // Gas COIN TYPE + const deployedBytecode = await getDeployedBytecode("ZRC20.sol/ZRC20", "zevm"); + compareBytecode(cleanRemoteBytecode, deployedBytecode); +}; + +const checkZRC20BSCBytecode = async () => { + const remoteBytecode = await getZetaNodeBytecode(BNB_BSC); + let cleanRemoteBytecode = removeImmutableNumber(remoteBytecode, encodeNumber(BigNumber.from("56"))); // BSC CHAIN ID + cleanRemoteBytecode = removeImmutableNumber(cleanRemoteBytecode, encodeNumber(BigNumber.from("1"))); // Gas COIN TYPE + const deployedBytecode = await getDeployedBytecode("ZRC20.sol/ZRC20", "zevm"); + compareBytecode(cleanRemoteBytecode, deployedBytecode); +}; + +const checkBytecode = async () => { + // ETH + await checkEthConnectorBytecode(); + await checkEthCustodyBytecode(); + // BSC + await checkBscConnectorBytecode(); + await checkBscCustodyBytecode(); + // ZEVM + await checkZRC20ETHBytecode(); + await checkZRC20BTCBytecode(); + await checkZRC20BSCBytecode(); +}; + +checkBytecode() + .then(() => process.exit(0)) + .catch((error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/tools/test-zeta-send.ts b/scripts/tools/test-zeta-send.ts index 54453289..81de7738 100644 --- a/scripts/tools/test-zeta-send.ts +++ b/scripts/tools/test-zeta-send.ts @@ -1,12 +1,17 @@ -import { getChainId } from "@zetachain/addresses"; +import { networks } from "@zetachain/networks"; import { AbiCoder } from "ethers/lib/utils"; import { ethers, network } from "hardhat"; -import { getAddress, isProtocolNetworkName } from "lib"; +import { getAddress, isProtocolNetworkName, ZetaProtocolNetwork } from "../../lib/address.tools"; import { ZetaConnectorEth__factory as ZetaConnectorEthFactory } from "../../typechain-types"; const encoder = new AbiCoder(); +export const getChainId = (network: ZetaProtocolNetwork): number => { + //@ts-ignore + return networks[network].chain_id; +}; + async function main() { if (!isProtocolNetworkName(network.name)) { throw new Error(`network.name: ${network.name} isn't supported.`); @@ -23,7 +28,7 @@ async function main() { await ( await contract.send({ destinationAddress: encoder.encode(["address"], [accounts[0].address]), - destinationChainId: getChainId("bsc-testnet"), + destinationChainId: getChainId("bsc_testnet"), destinationGasLimit: 1_000_000, message: encoder.encode(["address"], [accounts[0].address]), zetaParams: [], diff --git a/tasks/addresses.mainnet.json b/tasks/addresses.mainnet.json new file mode 100644 index 00000000..fe76c7f5 --- /dev/null +++ b/tasks/addresses.mainnet.json @@ -0,0 +1,23 @@ +[ + { + "address": "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f", + "category": "messaging", + "chain_id": 1, + "chain_name": "eth_mainnet", + "type": "uniswapV2Factory" + }, + { + "address": "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D", + "category": "messaging", + "chain_id": 1, + "chain_name": "eth_mainnet", + "type": "uniswapV2Router02" + }, + { + "address": "0xE592427A0AEce92De3Edee1F18E0157C05861564", + "category": "messaging", + "chain_id": 1, + "chain_name": "eth_mainnet", + "type": "uniswapV3Router" + } +] diff --git a/tasks/addresses.testnet.json b/tasks/addresses.testnet.json new file mode 100644 index 00000000..7793f0c8 --- /dev/null +++ b/tasks/addresses.testnet.json @@ -0,0 +1,65 @@ +[ + { + "address": "0x8eAc517b92eeE82177a83851268F13109878f8c4", + "category": "messaging", + "chain_id": 5, + "chain_name": "goerli_testnet", + "type": "zetaTokenConsumerUniV2" + }, + { + "address": "0x7e792f3736751e168864106AdbAC50152641A927", + "category": "messaging", + "chain_id": 80001, + "chain_name": "mumbai_testnet", + "type": "zetaTokenConsumerUniV3" + }, + { + "address": "0xFB2fCE3CCca19F0f764Ed8aa26C62181E3dA04C5", + "category": "messaging", + "chain_id": 97, + "chain_name": "bsc_testnet", + "type": "zetaTokenConsumerUniV3" + }, + { + "address": "0x8954AfA98594b838bda56FE4C12a09D7739D179b", + "category": "messaging", + "chain_id": 80001, + "chain_name": "mumbai_testnet", + "type": "uniswapV2Router02" + }, + { + "address": "0xE592427A0AEce92De3Edee1F18E0157C05861564", + "category": "messaging", + "chain_id": 80001, + "chain_name": "mumbai_testnet", + "type": "uniswapV3Router" + }, + { + "address": "0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3", + "category": "messaging", + "chain_id": 97, + "chain_name": "bsc_testnet", + "type": "uniswapV2Router02" + }, + { + "address": "0x9a489505a00cE272eAa5e07Dba6491314CaE3796", + "category": "messaging", + "chain_id": 97, + "chain_name": "bsc_testnet", + "type": "uniswapV3Router" + }, + { + "address": "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D", + "category": "messaging", + "chain_id": 5, + "chain_name": "goerli_testnet", + "type": "uniswapV2Router02" + }, + { + "address": "0xE592427A0AEce92De3Edee1F18E0157C05861564", + "category": "messaging", + "chain_id": 5, + "chain_name": "goerli_testnet", + "type": "uniswapV3Router" + } +] diff --git a/tasks/addresses.ts b/tasks/addresses.ts new file mode 100644 index 00000000..0fb844d4 --- /dev/null +++ b/tasks/addresses.ts @@ -0,0 +1,328 @@ +import uniswapV2Router from "@uniswap/v2-periphery/build/IUniswapV2Router02.json"; +import { getEndpoints } from "@zetachain/networks"; +import axios, { AxiosResponse } from "axios"; +import { task } from "hardhat/config"; +import { HardhatRuntimeEnvironment } from "hardhat/types"; + +import { ZetaConnectorBase__factory } from "../typechain-types"; +import { ERC20Custody__factory } from "../typechain-types/factories/contracts/evm/ERC20Custody__factory"; +import { SystemContract__factory } from "../typechain-types/factories/contracts/zevm/SystemContract.sol/SystemContract__factory"; +import zeta_mainnet_addresses from "./addresses.mainnet.json"; +import zeta_testnet_addresses from "./addresses.testnet.json"; + +declare const hre: any; + +type Network = "zeta_mainnet" | "zeta_testnet"; + +const api = { + zeta_mainnet: { + evm: "https://zetachain-evm.blockpi.network/v1/rpc/public", + rpc: "https://zetachain.blockpi.network/lcd/v1/public", + }, + zeta_testnet: { + evm: "https://zetachain-athens-evm.blockpi.network/v1/rpc/public", + rpc: "https://zetachain-athens.blockpi.network/lcd/v1/public", + }, +}; + +const fetchChains = async (network: Network) => { + const URL = `${api[network].rpc}/zeta-chain/observer/supportedChains`; + try { + const response: AxiosResponse = await axios.get(URL); + + if (response.status === 200) { + return response.data.chains; + } else { + console.error("Error fetching chains:", response.status, response.statusText); + } + } catch (error) { + console.error("Error fetching chains:", error); + } +}; + +const fetchTssData = async (chains: any, addresses: any, network: Network) => { + const URL = `${api[network].rpc}/zeta-chain/observer/get_tss_address/18332`; + try { + const tssResponse: AxiosResponse = await axios.get(URL); + + if (tssResponse.status === 200) { + chains.forEach((chain: any) => { + const { btc, eth } = tssResponse.data; + if (chain.chain_name === "zeta_testnet") return; + addresses.push({ + address: chain.chain_name === "btc_testnet" ? btc : eth, + category: "omnichain", + chain_id: parseInt(chain.chain_id), + chain_name: chain.chain_name, + type: "tss", + }); + }); + } else { + console.error("Error fetching TSS data:", tssResponse.status, tssResponse.statusText); + } + } catch (error) { + console.error("Error fetching TSS data:", error); + } +}; + +const fetchSystemContract = async (addresses: any, network: Network) => { + const chain_id = network === "zeta_mainnet" ? 7000 : 7001; + const URL = `${api[network].rpc}/zeta-chain/fungible/system_contract`; + try { + const systemContractResponse: AxiosResponse = await axios.get(URL); + + if (systemContractResponse.status === 200) { + addresses.push({ + address: systemContractResponse.data.SystemContract.system_contract, + category: "omnichain", + chain_id, + chain_name: network, + type: "systemContract", + }); + addresses.push({ + address: systemContractResponse.data.SystemContract.connector_zevm, + category: "messaging", + chain_id, + chain_name: network, + type: "connector", + }); + } else { + console.error("Error fetching system contract:", systemContractResponse.statusText); + } + } catch (error) { + console.error("Error fetching system contract:", error); + } +}; + +const fetchForeignCoinsData = async (chains: any, addresses: any, network: Network) => { + const chain_id = network === "zeta_mainnet" ? 7000 : 7001; + const URL = `${api[network].rpc}/zeta-chain/fungible/foreign_coins`; + try { + const foreignCoinsResponse: AxiosResponse = await axios.get(URL); + if (foreignCoinsResponse.status === 200) { + foreignCoinsResponse.data.foreignCoins.forEach((token: any) => { + addresses.push({ + address: token.zrc20_contract_address, + asset: token.asset, + category: "omnichain", + chain_id, + chain_name: network, + coin_type: token.coin_type.toLowerCase(), + decimals: 18, + description: token.name, + foreign_chain_id: token.foreign_chain_id, + symbol: token.symbol, + type: "zrc20", + }); + }); + } else { + console.error("Error fetching foreign coins data:", foreignCoinsResponse.status, foreignCoinsResponse.statusText); + } + } catch (error) { + console.error("Error fetching foreign coins data:", error); + } +}; + +const fetchAthensAddresses = async (addresses: any, hre: any, network: Network) => { + const chain_id = network === "zeta_mainnet" ? 7000 : 7001; + const systemContract = addresses.find((a: any) => { + return a.chain_name === network && a.type === "systemContract"; + })?.address; + const provider = new hre.ethers.providers.JsonRpcProvider(api[network].evm); + const sc = SystemContract__factory.connect(systemContract, provider); + const common = { + category: "omnichain", + chain_id, + chain_name: network, + }; + try { + addresses.push({ ...common, address: await sc.uniswapv2FactoryAddress(), type: "uniswapV2Factory" }); + addresses.push({ ...common, address: await sc.wZetaContractAddress(), type: "zetaToken" }); + addresses.push({ ...common, address: await sc.uniswapv2Router02Address(), type: "uniswapV2Router02" }); + // addresses.push({ ...common, address: await sc.zetaConnectorZEVMAddress(), type: "zetaConnectorZEVM" }); + addresses.push({ ...common, address: await sc.FUNGIBLE_MODULE_ADDRESS(), type: "fungibleModule" }); + } catch (error) { + console.error("Error fetching addresses from ZetaChain:", error); + } +}; + +const fetchChainSpecificAddresses = async (chains: any, addresses: any, network: Network) => { + await Promise.all( + chains.map(async (chain: any) => { + return axios + .get(`${api[network].rpc}/zeta-chain/observer/get_chain_params_for_chain/${chain.chain_id}`) + .then(({ data }) => { + const zetaToken = data.chain_params.zeta_token_contract_address; + if (zetaToken && zetaToken != "0x0000000000000000000000000000000000000000") { + addresses.push({ + address: zetaToken, + category: "messaging", + chain_id: parseInt(chain.chain_id), + chain_name: chain.chain_name, + type: "zetaToken", + }); + } + const connector = data.chain_params.connector_contract_address; + if (connector && connector != "0x0000000000000000000000000000000000000000") { + addresses.push({ + address: connector, + category: "messaging", + chain_id: parseInt(chain.chain_id), + chain_name: chain.chain_name, + type: "connector", + }); + } + const erc20Custody = data.chain_params.erc20_custody_contract_address; + if (erc20Custody && erc20Custody != "0x0000000000000000000000000000000000000000") { + addresses.push({ + address: data.chain_params.erc20_custody_contract_address, + category: "omnichain", + chain_id: parseInt(chain.chain_id), + chain_name: chain.chain_name, + type: "erc20Custody", + }); + } + }); + }) + ); +}; + +const fetchTSSUpdater = async (chains: any, addresses: any) => { + await Promise.all( + chains.map(async (chain: any) => { + const erc20Custody = addresses.find((a: any) => { + return a.chain_name === chain.chain_name && a.type === "erc20Custody"; + })?.address; + if (erc20Custody) { + if (["18332", "8332"].includes(chain.chain_id)) return; + const rpc = getEndpoints("evm", chain.chain_name)[0]?.url; + const provider = new hre.ethers.providers.JsonRpcProvider(rpc); + const custody = ERC20Custody__factory.connect(erc20Custody, provider); + return custody.TSSAddressUpdater().then((address: string) => { + addresses.push({ + address, + category: "omnichain", + chain_id: parseInt(chain.chain_id), + chain_name: chain.chain_name, + type: "tssUpdater", + }); + }); + } + }) + ); +}; + +const fetchPauser = async (chains: any, addresses: any) => { + await Promise.all( + chains.map(async (chain: any) => { + const erc20Custody = addresses.find((a: any) => { + return a.chain_name === chain.chain_name && a.type === "connector"; + })?.address; + if (erc20Custody) { + if (["18332", "8332", "7001", "7000"].includes(chain.chain_id)) return; + const rpc = getEndpoints("evm", chain.chain_name)[0]?.url; + const provider = new hre.ethers.providers.JsonRpcProvider(rpc); + const connector = ZetaConnectorBase__factory.connect(erc20Custody, provider); + return connector.pauserAddress().then((address: string) => { + addresses.push({ + address, + category: "messaging", + chain_id: parseInt(chain.chain_id), + chain_name: chain.chain_name, + type: "pauser", + }); + }); + } + }) + ); +}; + +const fetchFactoryV2 = async (addresses: any, hre: HardhatRuntimeEnvironment, network: Network) => { + const routers = addresses.filter((a: any) => a.type === "uniswapV2Router02"); + + for (const router of routers) { + const rpc = getEndpoints("evm", router.chain_name)[0]?.url; + const provider = new hre.ethers.providers.JsonRpcProvider(rpc); + const routerContract = new hre.ethers.Contract(router.address, uniswapV2Router.abi, provider); + + try { + const wethAddress = await routerContract.WETH(); + const factoryAddress = await routerContract.factory(); + + // Skip ZetaChain as we've already added ZETA token + if (router.chain_id !== 7000 && router.chain_id !== 7001) { + addresses.push({ + address: wethAddress, + category: "messaging", + chain_id: router.chain_id, + chain_name: router.chain_name, + type: "weth9", + }); + } + + addresses.push({ + address: factoryAddress, + category: "messaging", + chain_id: router.chain_id, + chain_name: router.chain_name, + type: "uniswapV2Factory", + }); + } catch (error) { + console.error(`Error fetching factory and WETH for router v2 ${router.address}:`, error); + } + } +}; + +const fetchFactoryV3 = async (addresses: any, hre: HardhatRuntimeEnvironment, network: Network) => { + const routers = addresses.filter((a: any) => a.type === "uniswapV2Router02"); + + for (const router of routers) { + const rpc = getEndpoints("evm", router.chain_name)[0]?.url; + const provider = new hre.ethers.providers.JsonRpcProvider(rpc); + const routerContract = new hre.ethers.Contract(router.address, uniswapV2Router.abi, provider); + + try { + const factoryAddress = await routerContract.factory(); + + addresses.push({ + address: factoryAddress, + category: "messaging", + chain_id: router.chain_id, + chain_name: router.chain_name, + type: "uniswapV3Factory", + }); + } catch (error) { + console.error(`Error fetching factory for router v3 ${router.address}:`, error); + } + } +}; + +const main = async (args: any, hre: HardhatRuntimeEnvironment) => { + const addresses: any = []; + + const n = hre.network.name; + if (n === "zeta_testnet") { + addresses.push(...zeta_testnet_addresses); + } else if (n === "zeta_mainnet") { + addresses.push(...zeta_mainnet_addresses); + } else { + throw new Error(`Unsupported network: ${n}. Must be 'zeta_testnet' or 'zeta_mainnet'.`); + } + + const network: Network = n; + + const chains = await fetchChains(network); + await fetchTssData(chains, addresses, network); + await fetchSystemContract(addresses, network); + await fetchForeignCoinsData(chains, addresses, network); + await fetchAthensAddresses(addresses, hre, network); + await fetchChainSpecificAddresses(chains, addresses, network); + await fetchTSSUpdater(chains, addresses); + await fetchPauser(chains, addresses); + await fetchFactoryV2(addresses, hre, network); + await fetchFactoryV3(addresses, hre, network); + + console.log(JSON.stringify(addresses, null, 2)); +}; + +task("addresses", "").setAction(main); diff --git a/tasks/readme.md b/tasks/readme.md new file mode 100644 index 00000000..c5442530 --- /dev/null +++ b/tasks/readme.md @@ -0,0 +1,2 @@ +Addresses JSON files in this directory contain contract addresses which cannot +be fetched from the blockchain. diff --git a/test/ConnectorZEVM.spec.ts b/test/ConnectorZEVM.spec.ts new file mode 100644 index 00000000..11380043 --- /dev/null +++ b/test/ConnectorZEVM.spec.ts @@ -0,0 +1,135 @@ +import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; +import { WETH9, ZetaConnectorZEVM } from "@typechain-types"; +import { expect } from "chai"; +import exp from "constants"; +import { parseEther } from "ethers/lib/utils"; +import { ethers } from "hardhat"; + +import { FUNGIBLE_MODULE_ADDRESS } from "./test.helpers"; + +const hre = require("hardhat"); + +describe("ConnectorZEVM tests", () => { + let zetaTokenContract: WETH9; + let zetaConnectorZEVM: ZetaConnectorZEVM; + + let owner: SignerWithAddress; + let fungibleModuleSigner: SignerWithAddress; + let addrs: SignerWithAddress[]; + let randomSigner: SignerWithAddress; + + beforeEach(async () => { + [owner, randomSigner, ...addrs] = await ethers.getSigners(); + + // Impersonate the fungible module account + await hre.network.provider.request({ + method: "hardhat_impersonateAccount", + params: [FUNGIBLE_MODULE_ADDRESS], + }); + + // Get a signer for the fungible module account + fungibleModuleSigner = await ethers.getSigner(FUNGIBLE_MODULE_ADDRESS); + hre.network.provider.send("hardhat_setBalance", [FUNGIBLE_MODULE_ADDRESS, parseEther("1000000").toHexString()]); + + const WZETAFactory = await ethers.getContractFactory("contracts/zevm/WZETA.sol:WETH9"); + zetaTokenContract = (await WZETAFactory.deploy()) as WETH9; + + const ZetaConnectorZEVMFactory = await ethers.getContractFactory("ZetaConnectorZEVM"); + zetaConnectorZEVM = (await ZetaConnectorZEVMFactory.connect(owner).deploy( + zetaTokenContract.address + )) as ZetaConnectorZEVM; + }); + + describe("ZetaConnectorZEVM", () => { + it("Should revert if the zetaTxSender has no enough zeta", async () => { + await zetaTokenContract.connect(randomSigner).approve(zetaConnectorZEVM.address, 100_000); + + const tx = zetaConnectorZEVM.connect(randomSigner).send({ + destinationAddress: randomSigner.address, + destinationChainId: 1, + destinationGasLimit: 2500000, + message: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), + zetaParams: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), + zetaValueAndGas: 1000, + }); + + // @dev: As we use the standard WETH contract, there's no error message for not enough balance + await expect(tx).to.be.reverted; + }); + + it("Should revert if the zetaTxSender didn't allow ZetaConnector to spend Zeta token", async () => { + await zetaTokenContract.deposit({ value: 100_000 }); + await zetaTokenContract.transfer(randomSigner.address, 100_000); + + const balance = await zetaTokenContract.balanceOf(randomSigner.address); + expect(balance.toString()).to.equal("100000"); + + const tx = zetaConnectorZEVM.send({ + destinationAddress: randomSigner.address, + destinationChainId: 1, + destinationGasLimit: 2500000, + message: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), + zetaParams: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), + zetaValueAndGas: 1000, + }); + + // @dev: As we use the standard WETH contract, there's no error message for not enough balance + await expect(tx).to.be.reverted; + + await zetaTokenContract.connect(randomSigner).transfer(owner.address, balance); + }); + + it("Should emit `ZetaSent` on success", async () => { + const tx = await zetaConnectorZEVM.send({ + destinationAddress: randomSigner.address, + destinationChainId: 1, + destinationGasLimit: 2500000, + message: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), + zetaParams: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), + zetaValueAndGas: 0, + }); + + expect(tx) + .to.emit(zetaConnectorZEVM, "ZetaSent") + .withArgs(owner.address, owner.address, 1, randomSigner.address, 0, 2500000, "hello", "hello"); + }); + + it("Should transfer value and gas to fungible address", async () => { + const zetaValueAndGas = 1000; + await zetaTokenContract.approve(zetaConnectorZEVM.address, zetaValueAndGas); + await zetaTokenContract.deposit({ value: zetaValueAndGas }); + + const balanceBefore = await ethers.provider.getBalance(fungibleModuleSigner.address); + + await zetaConnectorZEVM.send({ + destinationAddress: randomSigner.address, + destinationChainId: 1, + destinationGasLimit: 2500000, + message: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), + zetaParams: new ethers.utils.AbiCoder().encode(["string"], ["hello"]), + zetaValueAndGas, + }); + + const balanceAfter = await ethers.provider.getBalance(fungibleModuleSigner.address); + expect(balanceAfter.sub(balanceBefore)).to.equal(zetaValueAndGas); + }); + + it("Should update wzeta address if is call from fungible address", async () => { + const WZETAFactory = await ethers.getContractFactory("contracts/zevm/WZETA.sol:WETH9"); + const newZetaTokenContract = (await WZETAFactory.deploy()) as WETH9; + + const tx = zetaConnectorZEVM.connect(fungibleModuleSigner).setWzetaAddress(newZetaTokenContract.address); + await expect(tx).to.emit(zetaConnectorZEVM, "SetWZETA").withArgs(newZetaTokenContract.address); + + expect(await zetaConnectorZEVM.wzeta()).to.equal(newZetaTokenContract.address); + }); + + it("Should revert if try to update wzeta address from other address", async () => { + const WZETAFactory = await ethers.getContractFactory("contracts/zevm/WZETA.sol:WETH9"); + const newZetaTokenContract = (await WZETAFactory.deploy()) as WETH9; + + const tx = zetaConnectorZEVM.setWzetaAddress(newZetaTokenContract.address); + await expect(tx).to.be.revertedWith("OnlyFungibleModule"); + }); + }); +}); diff --git a/test/ERC20Custody.spec.ts b/test/ERC20Custody.spec.ts new file mode 100644 index 00000000..82488a81 --- /dev/null +++ b/test/ERC20Custody.spec.ts @@ -0,0 +1,279 @@ +import { MaxUint256 } from "@ethersproject/constants"; +import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; +import { AttackerContract, ERC20Custody, ERC20Mock, ZetaEth } from "@typechain-types"; +import { expect } from "chai"; +import { parseEther } from "ethers/lib/utils"; +import { ethers } from "hardhat"; + +import { deployZetaEth } from "../lib/contracts.helpers"; + +const ZETA_FEE = parseEther("0.01"); +const ZETA_MAX_FEE = parseEther("0.05"); + +describe("ERC20Custody tests", () => { + let ZRC20CustodyContract: ERC20Custody; + let zetaTokenEthContract: ZetaEth; + let randomTokenContract: ERC20Mock; + let owner: SignerWithAddress; + let tssUpdater: SignerWithAddress; + let tssSigner: SignerWithAddress; + let addrs: SignerWithAddress[]; + + beforeEach(async () => { + [owner, tssUpdater, tssSigner, ...addrs] = await ethers.getSigners(); + + zetaTokenEthContract = await deployZetaEth({ + args: [tssUpdater.address, 100_000], + }); + + await zetaTokenEthContract.connect(tssUpdater).transfer(owner.address, parseEther("1000")); + + const ERC20Factory = await ethers.getContractFactory("ERC20Mock"); + randomTokenContract = (await ERC20Factory.deploy( + "RandomToken", + "RT", + owner.address, + parseEther("1000000") + )) as ERC20Mock; + + const ERC20CustodyFactory = await ethers.getContractFactory("ERC20Custody"); + ZRC20CustodyContract = (await ERC20CustodyFactory.deploy( + tssSigner.address, + tssUpdater.address, + ZETA_FEE, + ZETA_MAX_FEE, + zetaTokenEthContract.address + )) as ERC20Custody; + }); + + describe("ERC20Custody", () => { + it("Should update the tss address", async () => { + await ZRC20CustodyContract.connect(tssUpdater).updateTSSAddress(addrs[0].address); + const tssAddress = await ZRC20CustodyContract.TSSAddress(); + expect(tssAddress).to.equal(addrs[0].address); + }); + + it("Should revert if updateTSSAddress not called by tssUpdater", async () => { + const tx = ZRC20CustodyContract.connect(owner).updateTSSAddress(addrs[0].address); + await expect(tx).to.be.revertedWith("InvalidTSSUpdater"); + }); + + it("Should update zeta fee", async () => { + await ZRC20CustodyContract.connect(tssSigner).updateZetaFee(parseEther("0.02")); + const zetaFee = await ZRC20CustodyContract.zetaFee(); + expect(zetaFee).to.equal(parseEther("0.02")); + }); + + it("Should revert if updateZetaFee not called by tssUpdater", async () => { + const tx = ZRC20CustodyContract.connect(tssUpdater).updateZetaFee(parseEther("0.02")); + await expect(tx).to.be.revertedWith("InvalidSender"); + }); + + it("Should revert if updateZetaFee is higher than max", async () => { + const tx = ZRC20CustodyContract.connect(tssSigner).updateZetaFee(parseEther("0.07")); + await expect(tx).to.be.revertedWith("ZetaMaxFeeExceeded"); + }); + + it("Should renounce tssUpdater", async () => { + await ZRC20CustodyContract.connect(tssUpdater).renounceTSSAddressUpdater(); + const tssUpdaterAddress = await ZRC20CustodyContract.TSSAddressUpdater(); + expect(tssUpdaterAddress).to.equal(tssSigner.address); + }); + + it("Should whitelist", async () => { + let isWhitelisted = await ZRC20CustodyContract.whitelisted(addrs[0].address); + expect(isWhitelisted).to.equal(false); + + await ZRC20CustodyContract.connect(tssSigner).whitelist(addrs[0].address); + isWhitelisted = await ZRC20CustodyContract.whitelisted(addrs[0].address); + expect(isWhitelisted).to.equal(true); + }); + + it("Should revert if whitelist is not called by tss", async () => { + const tx = ZRC20CustodyContract.connect(tssUpdater).whitelist(addrs[0].address); + await expect(tx).to.be.revertedWith("InvalidSender"); + }); + + it("Should unwhitelist", async () => { + let isWhitelisted = await ZRC20CustodyContract.whitelisted(addrs[0].address); + expect(isWhitelisted).to.equal(false); + + await ZRC20CustodyContract.connect(tssSigner).whitelist(addrs[0].address); + isWhitelisted = await ZRC20CustodyContract.whitelisted(addrs[0].address); + expect(isWhitelisted).to.equal(true); + + await ZRC20CustodyContract.connect(tssSigner).unwhitelist(addrs[0].address); + isWhitelisted = await ZRC20CustodyContract.whitelisted(addrs[0].address); + expect(isWhitelisted).to.equal(false); + }); + + it("Should revert if unwhitelist is not called by tss", async () => { + await ZRC20CustodyContract.connect(tssSigner).whitelist(addrs[0].address); + const tx = ZRC20CustodyContract.connect(tssUpdater).unwhitelist(addrs[0].address); + await expect(tx).to.be.revertedWith("InvalidSender"); + }); + + it("Should emit Deposit event on deposit", async () => { + await ZRC20CustodyContract.connect(tssSigner).whitelist(randomTokenContract.address); + await zetaTokenEthContract.approve(ZRC20CustodyContract.address, MaxUint256); + + const amount = parseEther("1"); + await randomTokenContract.approve(ZRC20CustodyContract.address, amount); + + const tx = ZRC20CustodyContract.deposit(owner.address, randomTokenContract.address, amount, "0x00"); + await expect(tx) + .to.emit(ZRC20CustodyContract, "Deposited") + .withArgs(owner.address.toLowerCase(), randomTokenContract.address, amount, "0x00"); + }); + + it("Should emit Deposit event and do the right math if is called twice", async () => { + await ZRC20CustodyContract.connect(tssSigner).whitelist(randomTokenContract.address); + await zetaTokenEthContract.approve(ZRC20CustodyContract.address, MaxUint256); + + const amount = parseEther("1"); + await randomTokenContract.approve(ZRC20CustodyContract.address, amount); + + const tx = ZRC20CustodyContract.deposit(owner.address, randomTokenContract.address, amount, "0x00"); + await expect(tx) + .to.emit(ZRC20CustodyContract, "Deposited") + .withArgs(owner.address.toLowerCase(), randomTokenContract.address, amount, "0x00"); + + const amount2 = parseEther("5"); + await randomTokenContract.approve(ZRC20CustodyContract.address, amount2); + + const tx2 = ZRC20CustodyContract.deposit(owner.address, randomTokenContract.address, amount2, "0x00"); + await expect(tx2) + .to.emit(ZRC20CustodyContract, "Deposited") + .withArgs(owner.address.toLowerCase(), randomTokenContract.address, amount2, "0x00"); + }); + + it("Should revert deposit if is paused", async () => { + await ZRC20CustodyContract.connect(tssSigner).pause(); + await ZRC20CustodyContract.connect(tssSigner).whitelist(randomTokenContract.address); + await zetaTokenEthContract.approve(ZRC20CustodyContract.address, MaxUint256); + + const amount = parseEther("1"); + await randomTokenContract.approve(ZRC20CustodyContract.address, amount); + + const tx = ZRC20CustodyContract.deposit(owner.address, randomTokenContract.address, amount, "0x00"); + await expect(tx).to.be.revertedWith("IsPaused"); + }); + + it("Should revert deposit if is not whitelisted", async () => { + await zetaTokenEthContract.approve(ZRC20CustodyContract.address, MaxUint256); + + const amount = parseEther("1"); + await randomTokenContract.approve(ZRC20CustodyContract.address, amount); + + const tx = ZRC20CustodyContract.deposit(owner.address, randomTokenContract.address, amount, "0x00"); + await expect(tx).to.be.revertedWith("NotWhitelisted"); + }); + + it("Should revert deposit if has no zeta to pay fee", async () => { + await ZRC20CustodyContract.connect(tssSigner).whitelist(randomTokenContract.address); + await zetaTokenEthContract.connect(addrs[0]).approve(ZRC20CustodyContract.address, MaxUint256); + + const amount = parseEther("1"); + await randomTokenContract.connect(addrs[0]).approve(ZRC20CustodyContract.address, amount); + + const tx = ZRC20CustodyContract.connect(addrs[0]).deposit( + owner.address, + randomTokenContract.address, + amount, + "0x00" + ); + await expect(tx).to.be.revertedWith("ERC20: transfer amount exceeds balance"); + }); + + it("Should emit Withdrawn event", async () => { + await ZRC20CustodyContract.connect(tssSigner).whitelist(randomTokenContract.address); + + const amount = parseEther("1"); + await randomTokenContract.transfer(ZRC20CustodyContract.address, amount); + + const tx = ZRC20CustodyContract.connect(tssSigner).withdraw(owner.address, randomTokenContract.address, amount); + await expect(tx) + .to.emit(ZRC20CustodyContract, "Withdrawn") + .withArgs(owner.address, randomTokenContract.address, amount); + }); + + it("Should revert if withdraw is not called by tss", async () => { + await ZRC20CustodyContract.connect(tssSigner).whitelist(randomTokenContract.address); + + const amount = parseEther("1"); + await randomTokenContract.transfer(ZRC20CustodyContract.address, amount); + + const tx = ZRC20CustodyContract.withdraw(owner.address, randomTokenContract.address, amount); + await expect(tx).to.be.revertedWith("InvalidSender"); + }); + + it("Should not revert withdraw if is paused", async () => { + await ZRC20CustodyContract.connect(tssSigner).pause(); + await ZRC20CustodyContract.connect(tssSigner).whitelist(randomTokenContract.address); + + const amount = parseEther("1"); + await randomTokenContract.transfer(ZRC20CustodyContract.address, amount); + + const tx = ZRC20CustodyContract.connect(tssSigner).withdraw(owner.address, randomTokenContract.address, amount); + await expect(tx) + .to.emit(ZRC20CustodyContract, "Withdrawn") + .withArgs(owner.address, randomTokenContract.address, amount); + }); + + it("Should revert withdraw if is not whitelisted", async () => { + const amount = parseEther("1"); + const tx = ZRC20CustodyContract.connect(tssSigner).withdraw(owner.address, randomTokenContract.address, amount); + await expect(tx).to.be.revertedWith("NotWhitelisted"); + }); + + it("Should not allow reentrant calls to Deposit method", async () => { + // Deploy AttackerContract with the address of the ZRC20CustodyContract + const Attacker = await ethers.getContractFactory("AttackerContract"); + const attacker = (await Attacker.deploy( + ZRC20CustodyContract.address, + zetaTokenEthContract.address, + 1 + )) as AttackerContract; + await attacker.deployed(); + + // Whitelist token and approve as before + await ZRC20CustodyContract.connect(tssSigner).whitelist(attacker.address); + + await zetaTokenEthContract.approve(ZRC20CustodyContract.address, MaxUint256); + await zetaTokenEthContract.transfer(attacker.address, parseEther("1")); + + const amount = parseEther("1"); + + // Attempt to attack by calling the deposit method reentrantly + const attackTx = ZRC20CustodyContract.deposit(owner.address, attacker.address, amount, "0x00"); + + // The test expects the attack to fail due to the reentrancy guard + await expect(attackTx).to.be.revertedWith("ReentrancyGuard: reentrant call"); + }); + + it("Should not allow reentrant calls to Witdraw method", async () => { + // Deploy AttackerContract with the address of the ZRC20CustodyContract + const Attacker = await ethers.getContractFactory("AttackerContract"); + const attacker = (await Attacker.deploy( + ZRC20CustodyContract.address, + zetaTokenEthContract.address, + 2 + )) as AttackerContract; + await attacker.deployed(); + + // Whitelist token and approve as before + await ZRC20CustodyContract.connect(tssSigner).whitelist(attacker.address); + + await zetaTokenEthContract.approve(ZRC20CustodyContract.address, MaxUint256); + await zetaTokenEthContract.transfer(attacker.address, parseEther("1")); + + const amount = parseEther("1"); + + // Attempt to attack by calling the deposit method reentrantly + const attackTx = ZRC20CustodyContract.connect(tssSigner).withdraw(owner.address, attacker.address, amount); + + // The test expects the attack to fail due to the reentrancy guard + await expect(attackTx).to.be.revertedWith("ReentrancyGuard: reentrant call"); + }); + }); +}); diff --git a/test/ZRC20.spec.ts b/test/ZRC20.spec.ts new file mode 100644 index 00000000..28d443e4 --- /dev/null +++ b/test/ZRC20.spec.ts @@ -0,0 +1,117 @@ +import { AddressZero } from "@ethersproject/constants"; +import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; +import { SystemContract, ZRC20 } from "@typechain-types"; +import { expect } from "chai"; +import { parseEther } from "ethers/lib/utils"; +import { ethers } from "hardhat"; + +import { FUNGIBLE_MODULE_ADDRESS } from "./test.helpers"; +const hre = require("hardhat"); + +describe("ZRC20 tests", () => { + let ZRC20Contract: ZRC20; + let systemContract: SystemContract; + let owner, fungibleModuleSigner: SignerWithAddress; + let addrs: SignerWithAddress[]; + + beforeEach(async () => { + [owner, ...addrs] = await ethers.getSigners(); + + // Impersonate the fungible module account + await hre.network.provider.request({ + method: "hardhat_impersonateAccount", + params: [FUNGIBLE_MODULE_ADDRESS], + }); + + // Get a signer for the fungible module account + fungibleModuleSigner = await ethers.getSigner(FUNGIBLE_MODULE_ADDRESS); + hre.network.provider.send("hardhat_setBalance", [FUNGIBLE_MODULE_ADDRESS, parseEther("1000000").toHexString()]); + + const SystemContractFactory = await ethers.getContractFactory("SystemContractMock"); + systemContract = (await SystemContractFactory.deploy(AddressZero, AddressZero, AddressZero)) as SystemContract; + + const ZRC20Factory = await ethers.getContractFactory("ZRC20"); + ZRC20Contract = (await ZRC20Factory.connect(fungibleModuleSigner).deploy( + "TOKEN", + "TKN", + 18, + 1, + 1, + 0, + systemContract.address + )) as ZRC20; + }); + + describe("ZRC20Contract", () => { + it("Should return name", async () => { + const name = await ZRC20Contract.name(); + expect(name).to.equal("TOKEN"); + }); + + it("Should return symbol", async () => { + const symbol = await ZRC20Contract.symbol(); + expect(symbol).to.equal("TKN"); + }); + + it("Should return decimals", async () => { + const decimals = await ZRC20Contract.decimals(); + expect(decimals).to.equal(18); + }); + + it("Should return chainId", async () => { + const chainId = await ZRC20Contract.CHAIN_ID(); + expect(chainId).to.equal(1); + }); + + it("Should return coinType", async () => { + const coinType = await ZRC20Contract.COIN_TYPE(); + expect(coinType).to.equal(1); + }); + + it("Should return gasLimit", async () => { + const gasLimit = await ZRC20Contract.GAS_LIMIT(); + expect(gasLimit).to.equal(0); + }); + + it("Should return systemContractAddress", async () => { + const systemContractAddress = await ZRC20Contract.SYSTEM_CONTRACT_ADDRESS(); + expect(systemContractAddress).to.equal(systemContract.address); + }); + + it("Should return totalSupply", async () => { + const totalSupply = await ZRC20Contract.totalSupply(); + expect(totalSupply).to.equal(0); + }); + + it("Should return balanceOf", async () => { + const balanceOf = await ZRC20Contract.balanceOf(owner.address); + expect(balanceOf).to.equal(0); + }); + + it("Should return allowance", async () => { + const allowance = await ZRC20Contract.allowance(owner.address, owner.address); + expect(allowance).to.equal(0); + }); + + it("Should deposit if is called by fungible module", async () => { + const deposit = await ZRC20Contract.connect(fungibleModuleSigner).deposit(owner.address, parseEther("1")); + expect(deposit).to.emit(ZRC20Contract, "Deposit").withArgs(owner.address, parseEther("1")); + }); + + it("Should not deposit if is not called by fungible module", async () => { + const depositTx = ZRC20Contract.connect(addrs[0]).deposit(owner.address, parseEther("1")); + await expect(depositTx).to.be.revertedWith("InvalidSender"); + }); + + it("Should transfer", async () => { + await ZRC20Contract.connect(fungibleModuleSigner).deposit(owner.address, parseEther("1")); + const initialBalance = await ZRC20Contract.balanceOf(addrs[0].address); + + const transfer = await ZRC20Contract.connect(owner).transfer(addrs[0].address, parseEther("1")); + expect(transfer).to.emit(ZRC20Contract, "Transfer").withArgs(owner.address, addrs[0].address, parseEther("1")); + + const finalBalance = await ZRC20Contract.balanceOf(addrs[0].address); + expect(finalBalance.sub(initialBalance)).to.equal(parseEther("1")); + }); + }); +}); diff --git a/test/ZetaTokenConsumer.spec.ts b/test/ZetaTokenConsumer.spec.ts index 6e8c2971..74e33016 100644 --- a/test/ZetaTokenConsumer.spec.ts +++ b/test/ZetaTokenConsumer.spec.ts @@ -4,9 +4,6 @@ import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/signers"; import { IERC20, IERC20__factory, - INonfungiblePositionManager, - INonfungiblePositionManager__factory, - IPoolInitializer__factory, UniswapV2Router02__factory, ZetaTokenConsumer, ZetaTokenConsumerUniV2, @@ -17,7 +14,7 @@ import { BigNumber } from "ethers"; import { ethers } from "hardhat"; import { getNonZetaAddress } from "lib"; -import { getExternalAddress } from "../lib/address.helpers"; +import { getTestAddress } from "../lib/address.helpers"; import { deployZetaNonEth, getZetaTokenConsumerUniV2Strategy, @@ -57,64 +54,6 @@ describe("ZetaTokenConsumer tests", () => { await tx.wait(); }; - /** - * @todo (andy): WIP, not in use yet - */ - const createPoolV3 = async (signer: SignerWithAddress, tokenAddress: string) => { - const DAI = getExternalAddress("dai", { - customNetworkName: "etherum_mainnet", - customZetaNetwork: "mainnet", - }); - - const UNI_NFT_MANAGER_V3 = getExternalAddress("uniswapV3NftManager", { - customNetworkName: "etherum_mainnet", - customZetaNetwork: "mainnet", - }); - - const USDC = getExternalAddress("usdc", { - customNetworkName: "etherum_mainnet", - customZetaNetwork: "mainnet", - }); - - await swapToken(signer, DAI, parseUnits("10000", 18)); - - const token = IERC20__factory.connect(USDC, signer); - const tx1 = await token.approve(UNI_NFT_MANAGER_V3, MaxUint256); - await tx1.wait(); - - const token2 = IERC20__factory.connect(DAI, signer); - const tx2 = await token2.approve(UNI_NFT_MANAGER_V3, MaxUint256); - await tx2.wait(); - - const uniswapRouter = INonfungiblePositionManager__factory.connect(UNI_NFT_MANAGER_V3, signer); - - const uniswapNFTManager = IPoolInitializer__factory.connect(UNI_NFT_MANAGER_V3, signer); - const tx3 = await uniswapNFTManager.createAndInitializePoolIfNecessary( - USDC, - DAI, - 3000, - "80000000000000000000000000000" - ); - await tx3.wait(); - - const params: INonfungiblePositionManager.MintParamsStruct = { - amount0Desired: parseEther("10"), - amount0Min: 0, - amount1Desired: parseEther("10"), - amount1Min: 0, - deadline: (await getNow()) + 360, - fee: 3000, - recipient: signer.address, - tickLower: 193, - tickUpper: 194, - token0: USDC, - token1: DAI, - }; - - const tx4 = await uniswapRouter.mint(params); - await tx4.wait(); - }; - beforeEach(async () => { accounts = await ethers.getSigners(); [tssUpdater, tssSigner, randomSigner] = accounts; @@ -123,23 +62,17 @@ describe("ZetaTokenConsumer tests", () => { args: [tssSigner.address, tssUpdater.address], }); - const DAI = getExternalAddress("dai", { - customNetworkName: "etherum_mainnet", - customZetaNetwork: "mainnet", - }); + const DAI = getTestAddress("dai", "eth_mainnet"); - USDCAddr = getExternalAddress("usdc", { - customNetworkName: "etherum_mainnet", - customZetaNetwork: "mainnet", - }); + USDCAddr = getTestAddress("usdc", "eth_mainnet"); - uniswapV2RouterAddr = getNonZetaAddress("uniswapV2Router02", "etherum_mainnet"); + uniswapV2RouterAddr = getNonZetaAddress("uniswapV2Router02", "eth_mainnet"); - const UNI_FACTORY_V3 = getNonZetaAddress("uniswapV3Factory", "etherum_mainnet"); + const UNI_FACTORY_V3 = getNonZetaAddress("uniswapV3Factory", "eth_mainnet"); - const UNI_ROUTER_V3 = getNonZetaAddress("uniswapV3Router", "etherum_mainnet"); + const UNI_ROUTER_V3 = getNonZetaAddress("uniswapV3Router", "eth_mainnet"); - const WETH9 = getNonZetaAddress("weth9", "etherum_mainnet"); + const WETH9 = getNonZetaAddress("weth9", "eth_mainnet"); // For testing purposes we use an existing uni v3 pool await swapToken(tssUpdater, DAI, parseEther("10000")); diff --git a/test/test.helpers.ts b/test/test.helpers.ts index 006c5dc0..3ff6cea9 100644 --- a/test/test.helpers.ts +++ b/test/test.helpers.ts @@ -1,6 +1,8 @@ import { ZetaTokenConsumer__factory } from "@typechain-types"; import { BigNumber, ContractReceipt } from "ethers"; +export const FUNGIBLE_MODULE_ADDRESS = "0x735b14BB79463307AAcBED86DAf3322B1e6226aB"; + export const parseZetaConsumerLog = (logs: ContractReceipt["logs"]) => { const iface = ZetaTokenConsumer__factory.createInterface(); diff --git a/typechain-types/contracts/evm/Zeta.non-eth.sol/ZetaNonEth.ts b/typechain-types/contracts/evm/Zeta.non-eth.sol/ZetaNonEth.ts index 403d0942..f34b1dfa 100644 --- a/typechain-types/contracts/evm/Zeta.non-eth.sol/ZetaNonEth.ts +++ b/typechain-types/contracts/evm/Zeta.non-eth.sol/ZetaNonEth.ts @@ -196,13 +196,19 @@ export interface ZetaNonEthInterface extends utils.Interface { events: { "Approval(address,address,uint256)": EventFragment; "Burnt(address,uint256)": EventFragment; + "ConnectorAddressUpdated(address,address)": EventFragment; "Minted(address,uint256,bytes32)": EventFragment; + "TSSAddressUpdated(address,address)": EventFragment; + "TSSAddressUpdaterUpdated(address,address)": EventFragment; "Transfer(address,address,uint256)": EventFragment; }; getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; getEvent(nameOrSignatureOrTopic: "Burnt"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ConnectorAddressUpdated"): EventFragment; getEvent(nameOrSignatureOrTopic: "Minted"): EventFragment; + getEvent(nameOrSignatureOrTopic: "TSSAddressUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "TSSAddressUpdaterUpdated"): EventFragment; getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; } @@ -226,6 +232,18 @@ export type BurntEvent = TypedEvent<[string, BigNumber], BurntEventObject>; export type BurntEventFilter = TypedEventFilter; +export interface ConnectorAddressUpdatedEventObject { + callerAddress: string; + newConnectorAddress: string; +} +export type ConnectorAddressUpdatedEvent = TypedEvent< + [string, string], + ConnectorAddressUpdatedEventObject +>; + +export type ConnectorAddressUpdatedEventFilter = + TypedEventFilter; + export interface MintedEventObject { mintee: string; amount: BigNumber; @@ -238,6 +256,30 @@ export type MintedEvent = TypedEvent< export type MintedEventFilter = TypedEventFilter; +export interface TSSAddressUpdatedEventObject { + callerAddress: string; + newTssAddress: string; +} +export type TSSAddressUpdatedEvent = TypedEvent< + [string, string], + TSSAddressUpdatedEventObject +>; + +export type TSSAddressUpdatedEventFilter = + TypedEventFilter; + +export interface TSSAddressUpdaterUpdatedEventObject { + callerAddress: string; + newTssUpdaterAddress: string; +} +export type TSSAddressUpdaterUpdatedEvent = TypedEvent< + [string, string], + TSSAddressUpdaterUpdatedEventObject +>; + +export type TSSAddressUpdaterUpdatedEventFilter = + TypedEventFilter; + export interface TransferEventObject { from: string; to: string; @@ -551,6 +593,15 @@ export interface ZetaNonEth extends BaseContract { amount?: null ): BurntEventFilter; + "ConnectorAddressUpdated(address,address)"( + callerAddress?: null, + newConnectorAddress?: null + ): ConnectorAddressUpdatedEventFilter; + ConnectorAddressUpdated( + callerAddress?: null, + newConnectorAddress?: null + ): ConnectorAddressUpdatedEventFilter; + "Minted(address,uint256,bytes32)"( mintee?: PromiseOrValue | null, amount?: null, @@ -562,6 +613,24 @@ export interface ZetaNonEth extends BaseContract { internalSendHash?: PromiseOrValue | null ): MintedEventFilter; + "TSSAddressUpdated(address,address)"( + callerAddress?: null, + newTssAddress?: null + ): TSSAddressUpdatedEventFilter; + TSSAddressUpdated( + callerAddress?: null, + newTssAddress?: null + ): TSSAddressUpdatedEventFilter; + + "TSSAddressUpdaterUpdated(address,address)"( + callerAddress?: null, + newTssUpdaterAddress?: null + ): TSSAddressUpdaterUpdatedEventFilter; + TSSAddressUpdaterUpdated( + callerAddress?: null, + newTssUpdaterAddress?: null + ): TSSAddressUpdaterUpdatedEventFilter; + "Transfer(address,address,uint256)"( from?: PromiseOrValue | null, to?: PromiseOrValue | null, diff --git a/typechain-types/contracts/evm/ZetaConnector.base.sol/ZetaConnectorBase.ts b/typechain-types/contracts/evm/ZetaConnector.base.sol/ZetaConnectorBase.ts index 4bfe29ae..3057dbba 100644 --- a/typechain-types/contracts/evm/ZetaConnector.base.sol/ZetaConnectorBase.ts +++ b/typechain-types/contracts/evm/ZetaConnector.base.sol/ZetaConnectorBase.ts @@ -177,6 +177,7 @@ export interface ZetaConnectorBaseInterface extends utils.Interface { "Paused(address)": EventFragment; "PauserAddressUpdated(address,address)": EventFragment; "TSSAddressUpdated(address,address)": EventFragment; + "TSSAddressUpdaterUpdated(address,address)": EventFragment; "Unpaused(address)": EventFragment; "ZetaReceived(bytes,uint256,address,uint256,bytes,bytes32)": EventFragment; "ZetaReverted(address,uint256,uint256,bytes,uint256,bytes,bytes32)": EventFragment; @@ -186,6 +187,7 @@ export interface ZetaConnectorBaseInterface extends utils.Interface { getEvent(nameOrSignatureOrTopic: "Paused"): EventFragment; getEvent(nameOrSignatureOrTopic: "PauserAddressUpdated"): EventFragment; getEvent(nameOrSignatureOrTopic: "TSSAddressUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "TSSAddressUpdaterUpdated"): EventFragment; getEvent(nameOrSignatureOrTopic: "Unpaused"): EventFragment; getEvent(nameOrSignatureOrTopic: "ZetaReceived"): EventFragment; getEvent(nameOrSignatureOrTopic: "ZetaReverted"): EventFragment; @@ -200,7 +202,7 @@ export type PausedEvent = TypedEvent<[string], PausedEventObject>; export type PausedEventFilter = TypedEventFilter; export interface PauserAddressUpdatedEventObject { - updaterAddress: string; + callerAddress: string; newTssAddress: string; } export type PauserAddressUpdatedEvent = TypedEvent< @@ -212,7 +214,7 @@ export type PauserAddressUpdatedEventFilter = TypedEventFilter; export interface TSSAddressUpdatedEventObject { - zetaTxSenderAddress: string; + callerAddress: string; newTssAddress: string; } export type TSSAddressUpdatedEvent = TypedEvent< @@ -223,6 +225,18 @@ export type TSSAddressUpdatedEvent = TypedEvent< export type TSSAddressUpdatedEventFilter = TypedEventFilter; +export interface TSSAddressUpdaterUpdatedEventObject { + callerAddress: string; + newTssUpdaterAddress: string; +} +export type TSSAddressUpdaterUpdatedEvent = TypedEvent< + [string, string], + TSSAddressUpdaterUpdatedEventObject +>; + +export type TSSAddressUpdaterUpdatedEventFilter = + TypedEventFilter; + export interface UnpausedEventObject { account: string; } @@ -481,23 +495,32 @@ export interface ZetaConnectorBase extends BaseContract { Paused(account?: null): PausedEventFilter; "PauserAddressUpdated(address,address)"( - updaterAddress?: null, + callerAddress?: null, newTssAddress?: null ): PauserAddressUpdatedEventFilter; PauserAddressUpdated( - updaterAddress?: null, + callerAddress?: null, newTssAddress?: null ): PauserAddressUpdatedEventFilter; "TSSAddressUpdated(address,address)"( - zetaTxSenderAddress?: null, + callerAddress?: null, newTssAddress?: null ): TSSAddressUpdatedEventFilter; TSSAddressUpdated( - zetaTxSenderAddress?: null, + callerAddress?: null, newTssAddress?: null ): TSSAddressUpdatedEventFilter; + "TSSAddressUpdaterUpdated(address,address)"( + callerAddress?: null, + newTssUpdaterAddress?: null + ): TSSAddressUpdaterUpdatedEventFilter; + TSSAddressUpdaterUpdated( + callerAddress?: null, + newTssUpdaterAddress?: null + ): TSSAddressUpdaterUpdatedEventFilter; + "Unpaused(address)"(account?: null): UnpausedEventFilter; Unpaused(account?: null): UnpausedEventFilter; diff --git a/typechain-types/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth.ts b/typechain-types/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth.ts index ccc96ecf..7c902204 100644 --- a/typechain-types/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth.ts +++ b/typechain-types/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth.ts @@ -187,6 +187,7 @@ export interface ZetaConnectorEthInterface extends utils.Interface { "Paused(address)": EventFragment; "PauserAddressUpdated(address,address)": EventFragment; "TSSAddressUpdated(address,address)": EventFragment; + "TSSAddressUpdaterUpdated(address,address)": EventFragment; "Unpaused(address)": EventFragment; "ZetaReceived(bytes,uint256,address,uint256,bytes,bytes32)": EventFragment; "ZetaReverted(address,uint256,uint256,bytes,uint256,bytes,bytes32)": EventFragment; @@ -196,6 +197,7 @@ export interface ZetaConnectorEthInterface extends utils.Interface { getEvent(nameOrSignatureOrTopic: "Paused"): EventFragment; getEvent(nameOrSignatureOrTopic: "PauserAddressUpdated"): EventFragment; getEvent(nameOrSignatureOrTopic: "TSSAddressUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "TSSAddressUpdaterUpdated"): EventFragment; getEvent(nameOrSignatureOrTopic: "Unpaused"): EventFragment; getEvent(nameOrSignatureOrTopic: "ZetaReceived"): EventFragment; getEvent(nameOrSignatureOrTopic: "ZetaReverted"): EventFragment; @@ -210,7 +212,7 @@ export type PausedEvent = TypedEvent<[string], PausedEventObject>; export type PausedEventFilter = TypedEventFilter; export interface PauserAddressUpdatedEventObject { - updaterAddress: string; + callerAddress: string; newTssAddress: string; } export type PauserAddressUpdatedEvent = TypedEvent< @@ -222,7 +224,7 @@ export type PauserAddressUpdatedEventFilter = TypedEventFilter; export interface TSSAddressUpdatedEventObject { - zetaTxSenderAddress: string; + callerAddress: string; newTssAddress: string; } export type TSSAddressUpdatedEvent = TypedEvent< @@ -233,6 +235,18 @@ export type TSSAddressUpdatedEvent = TypedEvent< export type TSSAddressUpdatedEventFilter = TypedEventFilter; +export interface TSSAddressUpdaterUpdatedEventObject { + callerAddress: string; + newTssUpdaterAddress: string; +} +export type TSSAddressUpdaterUpdatedEvent = TypedEvent< + [string, string], + TSSAddressUpdaterUpdatedEventObject +>; + +export type TSSAddressUpdaterUpdatedEventFilter = + TypedEventFilter; + export interface UnpausedEventObject { account: string; } @@ -497,23 +511,32 @@ export interface ZetaConnectorEth extends BaseContract { Paused(account?: null): PausedEventFilter; "PauserAddressUpdated(address,address)"( - updaterAddress?: null, + callerAddress?: null, newTssAddress?: null ): PauserAddressUpdatedEventFilter; PauserAddressUpdated( - updaterAddress?: null, + callerAddress?: null, newTssAddress?: null ): PauserAddressUpdatedEventFilter; "TSSAddressUpdated(address,address)"( - zetaTxSenderAddress?: null, + callerAddress?: null, newTssAddress?: null ): TSSAddressUpdatedEventFilter; TSSAddressUpdated( - zetaTxSenderAddress?: null, + callerAddress?: null, newTssAddress?: null ): TSSAddressUpdatedEventFilter; + "TSSAddressUpdaterUpdated(address,address)"( + callerAddress?: null, + newTssUpdaterAddress?: null + ): TSSAddressUpdaterUpdatedEventFilter; + TSSAddressUpdaterUpdated( + callerAddress?: null, + newTssUpdaterAddress?: null + ): TSSAddressUpdaterUpdatedEventFilter; + "Unpaused(address)"(account?: null): UnpausedEventFilter; Unpaused(account?: null): UnpausedEventFilter; diff --git a/typechain-types/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth.ts b/typechain-types/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth.ts index f5a9c250..199464a6 100644 --- a/typechain-types/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth.ts +++ b/typechain-types/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth.ts @@ -198,24 +198,40 @@ export interface ZetaConnectorNonEthInterface extends utils.Interface { decodeFunctionResult(functionFragment: "zetaToken", data: BytesLike): Result; events: { + "MaxSupplyUpdated(address,uint256)": EventFragment; "Paused(address)": EventFragment; "PauserAddressUpdated(address,address)": EventFragment; "TSSAddressUpdated(address,address)": EventFragment; + "TSSAddressUpdaterUpdated(address,address)": EventFragment; "Unpaused(address)": EventFragment; "ZetaReceived(bytes,uint256,address,uint256,bytes,bytes32)": EventFragment; "ZetaReverted(address,uint256,uint256,bytes,uint256,bytes,bytes32)": EventFragment; "ZetaSent(address,address,uint256,bytes,uint256,uint256,bytes,bytes)": EventFragment; }; + getEvent(nameOrSignatureOrTopic: "MaxSupplyUpdated"): EventFragment; getEvent(nameOrSignatureOrTopic: "Paused"): EventFragment; getEvent(nameOrSignatureOrTopic: "PauserAddressUpdated"): EventFragment; getEvent(nameOrSignatureOrTopic: "TSSAddressUpdated"): EventFragment; + getEvent(nameOrSignatureOrTopic: "TSSAddressUpdaterUpdated"): EventFragment; getEvent(nameOrSignatureOrTopic: "Unpaused"): EventFragment; getEvent(nameOrSignatureOrTopic: "ZetaReceived"): EventFragment; getEvent(nameOrSignatureOrTopic: "ZetaReverted"): EventFragment; getEvent(nameOrSignatureOrTopic: "ZetaSent"): EventFragment; } +export interface MaxSupplyUpdatedEventObject { + callerAddress: string; + newMaxSupply: BigNumber; +} +export type MaxSupplyUpdatedEvent = TypedEvent< + [string, BigNumber], + MaxSupplyUpdatedEventObject +>; + +export type MaxSupplyUpdatedEventFilter = + TypedEventFilter; + export interface PausedEventObject { account: string; } @@ -224,7 +240,7 @@ export type PausedEvent = TypedEvent<[string], PausedEventObject>; export type PausedEventFilter = TypedEventFilter; export interface PauserAddressUpdatedEventObject { - updaterAddress: string; + callerAddress: string; newTssAddress: string; } export type PauserAddressUpdatedEvent = TypedEvent< @@ -236,7 +252,7 @@ export type PauserAddressUpdatedEventFilter = TypedEventFilter; export interface TSSAddressUpdatedEventObject { - zetaTxSenderAddress: string; + callerAddress: string; newTssAddress: string; } export type TSSAddressUpdatedEvent = TypedEvent< @@ -247,6 +263,18 @@ export type TSSAddressUpdatedEvent = TypedEvent< export type TSSAddressUpdatedEventFilter = TypedEventFilter; +export interface TSSAddressUpdaterUpdatedEventObject { + callerAddress: string; + newTssUpdaterAddress: string; +} +export type TSSAddressUpdaterUpdatedEvent = TypedEvent< + [string, string], + TSSAddressUpdaterUpdatedEventObject +>; + +export type TSSAddressUpdaterUpdatedEventFilter = + TypedEventFilter; + export interface UnpausedEventObject { account: string; } @@ -528,27 +556,45 @@ export interface ZetaConnectorNonEth extends BaseContract { }; filters: { + "MaxSupplyUpdated(address,uint256)"( + callerAddress?: null, + newMaxSupply?: null + ): MaxSupplyUpdatedEventFilter; + MaxSupplyUpdated( + callerAddress?: null, + newMaxSupply?: null + ): MaxSupplyUpdatedEventFilter; + "Paused(address)"(account?: null): PausedEventFilter; Paused(account?: null): PausedEventFilter; "PauserAddressUpdated(address,address)"( - updaterAddress?: null, + callerAddress?: null, newTssAddress?: null ): PauserAddressUpdatedEventFilter; PauserAddressUpdated( - updaterAddress?: null, + callerAddress?: null, newTssAddress?: null ): PauserAddressUpdatedEventFilter; "TSSAddressUpdated(address,address)"( - zetaTxSenderAddress?: null, + callerAddress?: null, newTssAddress?: null ): TSSAddressUpdatedEventFilter; TSSAddressUpdated( - zetaTxSenderAddress?: null, + callerAddress?: null, newTssAddress?: null ): TSSAddressUpdatedEventFilter; + "TSSAddressUpdaterUpdated(address,address)"( + callerAddress?: null, + newTssUpdaterAddress?: null + ): TSSAddressUpdaterUpdatedEventFilter; + TSSAddressUpdaterUpdated( + callerAddress?: null, + newTssUpdaterAddress?: null + ): TSSAddressUpdaterUpdatedEventFilter; + "Unpaused(address)"(account?: null): UnpausedEventFilter; Unpaused(account?: null): UnpausedEventFilter; diff --git a/typechain-types/contracts/evm/testing/AttackerContract.sol/AttackerContract.ts b/typechain-types/contracts/evm/testing/AttackerContract.sol/AttackerContract.ts new file mode 100644 index 00000000..5e8cc96a --- /dev/null +++ b/typechain-types/contracts/evm/testing/AttackerContract.sol/AttackerContract.ts @@ -0,0 +1,214 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export interface AttackerContractInterface extends utils.Interface { + functions: { + "balanceOf(address)": FunctionFragment; + "transfer(address,uint256)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + "victimContractAddress()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "balanceOf" + | "transfer" + | "transferFrom" + | "victimContractAddress" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "victimContractAddress", + values?: undefined + ): string; + + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "victimContractAddress", + data: BytesLike + ): Result; + + events: {}; +} + +export interface AttackerContract extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: AttackerContractInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + balanceOf( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + victimContractAddress(overrides?: CallOverrides): Promise<[string]>; + }; + + balanceOf( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + victimContractAddress(overrides?: CallOverrides): Promise; + + callStatic: { + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + victimContractAddress(overrides?: CallOverrides): Promise; + }; + + filters: {}; + + estimateGas: { + balanceOf( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + victimContractAddress(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + balanceOf( + account: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + victimContractAddress( + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/typechain-types/contracts/evm/testing/AttackerContract.sol/Victim.ts b/typechain-types/contracts/evm/testing/AttackerContract.sol/Victim.ts new file mode 100644 index 00000000..57ce0ddc --- /dev/null +++ b/typechain-types/contracts/evm/testing/AttackerContract.sol/Victim.ts @@ -0,0 +1,168 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export interface VictimInterface extends utils.Interface { + functions: { + "deposit(bytes,address,uint256,bytes)": FunctionFragment; + "withdraw(address,address,uint256)": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "deposit" | "withdraw"): FunctionFragment; + + encodeFunctionData( + functionFragment: "deposit", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; + + events: {}; +} + +export interface Victim extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: VictimInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + deposit( + recipient: PromiseOrValue, + asset: PromiseOrValue, + amount: PromiseOrValue, + message: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdraw( + recipient: PromiseOrValue, + asset: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + deposit( + recipient: PromiseOrValue, + asset: PromiseOrValue, + amount: PromiseOrValue, + message: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdraw( + recipient: PromiseOrValue, + asset: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + deposit( + recipient: PromiseOrValue, + asset: PromiseOrValue, + amount: PromiseOrValue, + message: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdraw( + recipient: PromiseOrValue, + asset: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + deposit( + recipient: PromiseOrValue, + asset: PromiseOrValue, + amount: PromiseOrValue, + message: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdraw( + recipient: PromiseOrValue, + asset: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + deposit( + recipient: PromiseOrValue, + asset: PromiseOrValue, + amount: PromiseOrValue, + message: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdraw( + recipient: PromiseOrValue, + asset: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/typechain-types/contracts/evm/testing/AttackerContract.sol/index.ts b/typechain-types/contracts/evm/testing/AttackerContract.sol/index.ts new file mode 100644 index 00000000..9639989c --- /dev/null +++ b/typechain-types/contracts/evm/testing/AttackerContract.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { AttackerContract } from "./AttackerContract"; +export type { Victim } from "./Victim"; diff --git a/typechain-types/contracts/evm/testing/ERC20Mock.ts b/typechain-types/contracts/evm/testing/ERC20Mock.ts new file mode 100644 index 00000000..1a3a6ec3 --- /dev/null +++ b/typechain-types/contracts/evm/testing/ERC20Mock.ts @@ -0,0 +1,464 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../common"; + +export interface ERC20MockInterface extends utils.Interface { + functions: { + "allowance(address,address)": FunctionFragment; + "approve(address,uint256)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "decimals()": FunctionFragment; + "decreaseAllowance(address,uint256)": FunctionFragment; + "increaseAllowance(address,uint256)": FunctionFragment; + "name()": FunctionFragment; + "symbol()": FunctionFragment; + "totalSupply()": FunctionFragment; + "transfer(address,uint256)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "allowance" + | "approve" + | "balanceOf" + | "decimals" + | "decreaseAllowance" + | "increaseAllowance" + | "name" + | "symbol" + | "totalSupply" + | "transfer" + | "transferFrom" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "allowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "decimals", values?: undefined): string; + encodeFunctionData( + functionFragment: "decreaseAllowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "increaseAllowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "name", values?: undefined): string; + encodeFunctionData(functionFragment: "symbol", values?: undefined): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "decreaseAllowance", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "increaseAllowance", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + + events: { + "Approval(address,address,uint256)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + spender: string; + value: BigNumber; +} +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + ApprovalEventObject +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + value: BigNumber; +} +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + TransferEventObject +>; + +export type TransferEventFilter = TypedEventFilter; + +export interface ERC20Mock extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ERC20MockInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + decimals(overrides?: CallOverrides): Promise<[number]>; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + name(overrides?: CallOverrides): Promise<[string]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + name(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + name(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Approval(address,address,uint256)"( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + Approval( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + + "Transfer(address,address,uint256)"( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + Transfer( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + }; + + estimateGas: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + name(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + account: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: PromiseOrValue, + subtractedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + increaseAllowance( + spender: PromiseOrValue, + addedValue: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + name(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + amount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/typechain-types/contracts/evm/testing/index.ts b/typechain-types/contracts/evm/testing/index.ts index ae63ef88..4005de59 100644 --- a/typechain-types/contracts/evm/testing/index.ts +++ b/typechain-types/contracts/evm/testing/index.ts @@ -1,7 +1,10 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ +import type * as attackerContractSol from "./AttackerContract.sol"; +export type { attackerContractSol }; import type * as testUniswapV3ContractsSol from "./TestUniswapV3Contracts.sol"; export type { testUniswapV3ContractsSol }; +export type { ERC20Mock } from "./ERC20Mock"; export type { ZetaInteractorMock } from "./ZetaInteractorMock"; export type { ZetaReceiverMock } from "./ZetaReceiverMock"; diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ISwapRouterPancake.ts b/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ISwapRouterPancake.ts new file mode 100644 index 00000000..f034d1d8 --- /dev/null +++ b/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ISwapRouterPancake.ts @@ -0,0 +1,240 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export declare namespace ISwapRouterPancake { + export type ExactInputParamsStruct = { + path: PromiseOrValue; + recipient: PromiseOrValue; + amountIn: PromiseOrValue; + amountOutMinimum: PromiseOrValue; + }; + + export type ExactInputParamsStructOutput = [ + string, + string, + BigNumber, + BigNumber + ] & { + path: string; + recipient: string; + amountIn: BigNumber; + amountOutMinimum: BigNumber; + }; + + export type ExactInputSingleParamsStruct = { + tokenIn: PromiseOrValue; + tokenOut: PromiseOrValue; + fee: PromiseOrValue; + recipient: PromiseOrValue; + amountIn: PromiseOrValue; + amountOutMinimum: PromiseOrValue; + sqrtPriceLimitX96: PromiseOrValue; + }; + + export type ExactInputSingleParamsStructOutput = [ + string, + string, + number, + string, + BigNumber, + BigNumber, + BigNumber + ] & { + tokenIn: string; + tokenOut: string; + fee: number; + recipient: string; + amountIn: BigNumber; + amountOutMinimum: BigNumber; + sqrtPriceLimitX96: BigNumber; + }; +} + +export interface ISwapRouterPancakeInterface extends utils.Interface { + functions: { + "exactInput((bytes,address,uint256,uint256))": FunctionFragment; + "exactInputSingle((address,address,uint24,address,uint256,uint256,uint160))": FunctionFragment; + "uniswapV3SwapCallback(int256,int256,bytes)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "exactInput" + | "exactInputSingle" + | "uniswapV3SwapCallback" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "exactInput", + values: [ISwapRouterPancake.ExactInputParamsStruct] + ): string; + encodeFunctionData( + functionFragment: "exactInputSingle", + values: [ISwapRouterPancake.ExactInputSingleParamsStruct] + ): string; + encodeFunctionData( + functionFragment: "uniswapV3SwapCallback", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + + decodeFunctionResult(functionFragment: "exactInput", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "exactInputSingle", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "uniswapV3SwapCallback", + data: BytesLike + ): Result; + + events: {}; +} + +export interface ISwapRouterPancake extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ISwapRouterPancakeInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + exactInput( + params: ISwapRouterPancake.ExactInputParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + exactInputSingle( + params: ISwapRouterPancake.ExactInputSingleParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + uniswapV3SwapCallback( + amount0Delta: PromiseOrValue, + amount1Delta: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + exactInput( + params: ISwapRouterPancake.ExactInputParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + exactInputSingle( + params: ISwapRouterPancake.ExactInputSingleParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + uniswapV3SwapCallback( + amount0Delta: PromiseOrValue, + amount1Delta: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + exactInput( + params: ISwapRouterPancake.ExactInputParamsStruct, + overrides?: CallOverrides + ): Promise; + + exactInputSingle( + params: ISwapRouterPancake.ExactInputSingleParamsStruct, + overrides?: CallOverrides + ): Promise; + + uniswapV3SwapCallback( + amount0Delta: PromiseOrValue, + amount1Delta: PromiseOrValue, + data: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + exactInput( + params: ISwapRouterPancake.ExactInputParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + exactInputSingle( + params: ISwapRouterPancake.ExactInputSingleParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + uniswapV3SwapCallback( + amount0Delta: PromiseOrValue, + amount1Delta: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + exactInput( + params: ISwapRouterPancake.ExactInputParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + exactInputSingle( + params: ISwapRouterPancake.ExactInputSingleParamsStruct, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + uniswapV3SwapCallback( + amount0Delta: PromiseOrValue, + amount1Delta: PromiseOrValue, + data: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/WETH9.ts b/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/WETH9.ts new file mode 100644 index 00000000..a2d73dde --- /dev/null +++ b/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/WETH9.ts @@ -0,0 +1,103 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { FunctionFragment, Result } from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export interface WETH9Interface extends utils.Interface { + functions: { + "withdraw(uint256)": FunctionFragment; + }; + + getFunction(nameOrSignatureOrTopic: "withdraw"): FunctionFragment; + + encodeFunctionData( + functionFragment: "withdraw", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; + + events: {}; +} + +export interface WETH9 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: WETH9Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + withdraw( + wad: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + withdraw( + wad: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + withdraw( + wad: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: {}; + + estimateGas: { + withdraw( + wad: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + withdraw( + wad: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerPancakeV3.ts b/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerPancakeV3.ts new file mode 100644 index 00000000..e92e2898 --- /dev/null +++ b/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerPancakeV3.ts @@ -0,0 +1,512 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export interface ZetaTokenConsumerPancakeV3Interface extends utils.Interface { + functions: { + "WETH9Address()": FunctionFragment; + "getEthFromZeta(address,uint256,uint256)": FunctionFragment; + "getTokenFromZeta(address,uint256,address,uint256)": FunctionFragment; + "getZetaFromEth(address,uint256)": FunctionFragment; + "getZetaFromToken(address,uint256,address,uint256)": FunctionFragment; + "hasZetaLiquidity()": FunctionFragment; + "pancakeV3Router()": FunctionFragment; + "tokenPoolFee()": FunctionFragment; + "uniswapV3Factory()": FunctionFragment; + "zetaPoolFee()": FunctionFragment; + "zetaToken()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "WETH9Address" + | "getEthFromZeta" + | "getTokenFromZeta" + | "getZetaFromEth" + | "getZetaFromToken" + | "hasZetaLiquidity" + | "pancakeV3Router" + | "tokenPoolFee" + | "uniswapV3Factory" + | "zetaPoolFee" + | "zetaToken" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "WETH9Address", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "getEthFromZeta", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getTokenFromZeta", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "getZetaFromEth", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "getZetaFromToken", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "hasZetaLiquidity", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "pancakeV3Router", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "tokenPoolFee", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "uniswapV3Factory", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "zetaPoolFee", + values?: undefined + ): string; + encodeFunctionData(functionFragment: "zetaToken", values?: undefined): string; + + decodeFunctionResult( + functionFragment: "WETH9Address", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getEthFromZeta", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getTokenFromZeta", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getZetaFromEth", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "getZetaFromToken", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "hasZetaLiquidity", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "pancakeV3Router", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "tokenPoolFee", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "uniswapV3Factory", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "zetaPoolFee", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "zetaToken", data: BytesLike): Result; + + events: { + "EthExchangedForZeta(uint256,uint256)": EventFragment; + "TokenExchangedForZeta(address,uint256,uint256)": EventFragment; + "ZetaExchangedForEth(uint256,uint256)": EventFragment; + "ZetaExchangedForToken(address,uint256,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "EthExchangedForZeta"): EventFragment; + getEvent(nameOrSignatureOrTopic: "TokenExchangedForZeta"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ZetaExchangedForEth"): EventFragment; + getEvent(nameOrSignatureOrTopic: "ZetaExchangedForToken"): EventFragment; +} + +export interface EthExchangedForZetaEventObject { + amountIn: BigNumber; + amountOut: BigNumber; +} +export type EthExchangedForZetaEvent = TypedEvent< + [BigNumber, BigNumber], + EthExchangedForZetaEventObject +>; + +export type EthExchangedForZetaEventFilter = + TypedEventFilter; + +export interface TokenExchangedForZetaEventObject { + token: string; + amountIn: BigNumber; + amountOut: BigNumber; +} +export type TokenExchangedForZetaEvent = TypedEvent< + [string, BigNumber, BigNumber], + TokenExchangedForZetaEventObject +>; + +export type TokenExchangedForZetaEventFilter = + TypedEventFilter; + +export interface ZetaExchangedForEthEventObject { + amountIn: BigNumber; + amountOut: BigNumber; +} +export type ZetaExchangedForEthEvent = TypedEvent< + [BigNumber, BigNumber], + ZetaExchangedForEthEventObject +>; + +export type ZetaExchangedForEthEventFilter = + TypedEventFilter; + +export interface ZetaExchangedForTokenEventObject { + token: string; + amountIn: BigNumber; + amountOut: BigNumber; +} +export type ZetaExchangedForTokenEvent = TypedEvent< + [string, BigNumber, BigNumber], + ZetaExchangedForTokenEventObject +>; + +export type ZetaExchangedForTokenEventFilter = + TypedEventFilter; + +export interface ZetaTokenConsumerPancakeV3 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ZetaTokenConsumerPancakeV3Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + WETH9Address(overrides?: CallOverrides): Promise<[string]>; + + getEthFromZeta( + destinationAddress: PromiseOrValue, + minAmountOut: PromiseOrValue, + zetaTokenAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getTokenFromZeta( + destinationAddress: PromiseOrValue, + minAmountOut: PromiseOrValue, + outputToken: PromiseOrValue, + zetaTokenAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getZetaFromEth( + destinationAddress: PromiseOrValue, + minAmountOut: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getZetaFromToken( + destinationAddress: PromiseOrValue, + minAmountOut: PromiseOrValue, + inputToken: PromiseOrValue, + inputTokenAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + hasZetaLiquidity(overrides?: CallOverrides): Promise<[boolean]>; + + pancakeV3Router(overrides?: CallOverrides): Promise<[string]>; + + tokenPoolFee(overrides?: CallOverrides): Promise<[number]>; + + uniswapV3Factory(overrides?: CallOverrides): Promise<[string]>; + + zetaPoolFee(overrides?: CallOverrides): Promise<[number]>; + + zetaToken(overrides?: CallOverrides): Promise<[string]>; + }; + + WETH9Address(overrides?: CallOverrides): Promise; + + getEthFromZeta( + destinationAddress: PromiseOrValue, + minAmountOut: PromiseOrValue, + zetaTokenAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getTokenFromZeta( + destinationAddress: PromiseOrValue, + minAmountOut: PromiseOrValue, + outputToken: PromiseOrValue, + zetaTokenAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getZetaFromEth( + destinationAddress: PromiseOrValue, + minAmountOut: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getZetaFromToken( + destinationAddress: PromiseOrValue, + minAmountOut: PromiseOrValue, + inputToken: PromiseOrValue, + inputTokenAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + hasZetaLiquidity(overrides?: CallOverrides): Promise; + + pancakeV3Router(overrides?: CallOverrides): Promise; + + tokenPoolFee(overrides?: CallOverrides): Promise; + + uniswapV3Factory(overrides?: CallOverrides): Promise; + + zetaPoolFee(overrides?: CallOverrides): Promise; + + zetaToken(overrides?: CallOverrides): Promise; + + callStatic: { + WETH9Address(overrides?: CallOverrides): Promise; + + getEthFromZeta( + destinationAddress: PromiseOrValue, + minAmountOut: PromiseOrValue, + zetaTokenAmount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getTokenFromZeta( + destinationAddress: PromiseOrValue, + minAmountOut: PromiseOrValue, + outputToken: PromiseOrValue, + zetaTokenAmount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getZetaFromEth( + destinationAddress: PromiseOrValue, + minAmountOut: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + getZetaFromToken( + destinationAddress: PromiseOrValue, + minAmountOut: PromiseOrValue, + inputToken: PromiseOrValue, + inputTokenAmount: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + hasZetaLiquidity(overrides?: CallOverrides): Promise; + + pancakeV3Router(overrides?: CallOverrides): Promise; + + tokenPoolFee(overrides?: CallOverrides): Promise; + + uniswapV3Factory(overrides?: CallOverrides): Promise; + + zetaPoolFee(overrides?: CallOverrides): Promise; + + zetaToken(overrides?: CallOverrides): Promise; + }; + + filters: { + "EthExchangedForZeta(uint256,uint256)"( + amountIn?: null, + amountOut?: null + ): EthExchangedForZetaEventFilter; + EthExchangedForZeta( + amountIn?: null, + amountOut?: null + ): EthExchangedForZetaEventFilter; + + "TokenExchangedForZeta(address,uint256,uint256)"( + token?: null, + amountIn?: null, + amountOut?: null + ): TokenExchangedForZetaEventFilter; + TokenExchangedForZeta( + token?: null, + amountIn?: null, + amountOut?: null + ): TokenExchangedForZetaEventFilter; + + "ZetaExchangedForEth(uint256,uint256)"( + amountIn?: null, + amountOut?: null + ): ZetaExchangedForEthEventFilter; + ZetaExchangedForEth( + amountIn?: null, + amountOut?: null + ): ZetaExchangedForEthEventFilter; + + "ZetaExchangedForToken(address,uint256,uint256)"( + token?: null, + amountIn?: null, + amountOut?: null + ): ZetaExchangedForTokenEventFilter; + ZetaExchangedForToken( + token?: null, + amountIn?: null, + amountOut?: null + ): ZetaExchangedForTokenEventFilter; + }; + + estimateGas: { + WETH9Address(overrides?: CallOverrides): Promise; + + getEthFromZeta( + destinationAddress: PromiseOrValue, + minAmountOut: PromiseOrValue, + zetaTokenAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getTokenFromZeta( + destinationAddress: PromiseOrValue, + minAmountOut: PromiseOrValue, + outputToken: PromiseOrValue, + zetaTokenAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getZetaFromEth( + destinationAddress: PromiseOrValue, + minAmountOut: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getZetaFromToken( + destinationAddress: PromiseOrValue, + minAmountOut: PromiseOrValue, + inputToken: PromiseOrValue, + inputTokenAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + hasZetaLiquidity(overrides?: CallOverrides): Promise; + + pancakeV3Router(overrides?: CallOverrides): Promise; + + tokenPoolFee(overrides?: CallOverrides): Promise; + + uniswapV3Factory(overrides?: CallOverrides): Promise; + + zetaPoolFee(overrides?: CallOverrides): Promise; + + zetaToken(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + WETH9Address(overrides?: CallOverrides): Promise; + + getEthFromZeta( + destinationAddress: PromiseOrValue, + minAmountOut: PromiseOrValue, + zetaTokenAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getTokenFromZeta( + destinationAddress: PromiseOrValue, + minAmountOut: PromiseOrValue, + outputToken: PromiseOrValue, + zetaTokenAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + getZetaFromEth( + destinationAddress: PromiseOrValue, + minAmountOut: PromiseOrValue, + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + getZetaFromToken( + destinationAddress: PromiseOrValue, + minAmountOut: PromiseOrValue, + inputToken: PromiseOrValue, + inputTokenAmount: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + hasZetaLiquidity(overrides?: CallOverrides): Promise; + + pancakeV3Router(overrides?: CallOverrides): Promise; + + tokenPoolFee(overrides?: CallOverrides): Promise; + + uniswapV3Factory(overrides?: CallOverrides): Promise; + + zetaPoolFee(overrides?: CallOverrides): Promise; + + zetaToken(overrides?: CallOverrides): Promise; + }; +} diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerUniV3Errors.ts b/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerUniV3Errors.ts new file mode 100644 index 00000000..0586677c --- /dev/null +++ b/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerUniV3Errors.ts @@ -0,0 +1,56 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { BaseContract, Signer, utils } from "ethers"; + +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export interface ZetaTokenConsumerUniV3ErrorsInterface extends utils.Interface { + functions: {}; + + events: {}; +} + +export interface ZetaTokenConsumerUniV3Errors extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ZetaTokenConsumerUniV3ErrorsInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: {}; + + callStatic: {}; + + filters: {}; + + estimateGas: {}; + + populateTransaction: {}; +} diff --git a/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/index.ts b/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/index.ts new file mode 100644 index 00000000..21dcda9d --- /dev/null +++ b/typechain-types/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { ISwapRouterPancake } from "./ISwapRouterPancake"; +export type { WETH9 } from "./WETH9"; +export type { ZetaTokenConsumerPancakeV3 } from "./ZetaTokenConsumerPancakeV3"; +export type { ZetaTokenConsumerUniV3Errors } from "./ZetaTokenConsumerUniV3Errors"; diff --git a/typechain-types/contracts/evm/tools/index.ts b/typechain-types/contracts/evm/tools/index.ts index 61c07a84..d91c2b58 100644 --- a/typechain-types/contracts/evm/tools/index.ts +++ b/typechain-types/contracts/evm/tools/index.ts @@ -3,6 +3,8 @@ /* eslint-disable */ import type * as immutableCreate2FactorySol from "./ImmutableCreate2Factory.sol"; export type { immutableCreate2FactorySol }; +import type * as zetaTokenConsumerPancakeV3StrategySol from "./ZetaTokenConsumerPancakeV3.strategy.sol"; +export type { zetaTokenConsumerPancakeV3StrategySol }; import type * as zetaTokenConsumerTridentStrategySol from "./ZetaTokenConsumerTrident.strategy.sol"; export type { zetaTokenConsumerTridentStrategySol }; import type * as zetaTokenConsumerUniV2StrategySol from "./ZetaTokenConsumerUniV2.strategy.sol"; diff --git a/typechain-types/contracts/zevm/ZRC20.sol/ZRC20.ts b/typechain-types/contracts/zevm/ZRC20.sol/ZRC20.ts index ddbc3867..e826c3fe 100644 --- a/typechain-types/contracts/zevm/ZRC20.sol/ZRC20.ts +++ b/typechain-types/contracts/zevm/ZRC20.sol/ZRC20.ts @@ -40,9 +40,7 @@ export interface ZRC20Interface extends utils.Interface { "balanceOf(address)": FunctionFragment; "burn(uint256)": FunctionFragment; "decimals()": FunctionFragment; - "decreaseAllowance(address,uint256)": FunctionFragment; "deposit(address,uint256)": FunctionFragment; - "increaseAllowance(address,uint256)": FunctionFragment; "name()": FunctionFragment; "symbol()": FunctionFragment; "totalSupply()": FunctionFragment; @@ -68,9 +66,7 @@ export interface ZRC20Interface extends utils.Interface { | "balanceOf" | "burn" | "decimals" - | "decreaseAllowance" | "deposit" - | "increaseAllowance" | "name" | "symbol" | "totalSupply" @@ -115,18 +111,10 @@ export interface ZRC20Interface extends utils.Interface { values: [PromiseOrValue] ): string; encodeFunctionData(functionFragment: "decimals", values?: undefined): string; - encodeFunctionData( - functionFragment: "decreaseAllowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; encodeFunctionData( functionFragment: "deposit", values: [PromiseOrValue, PromiseOrValue] ): string; - encodeFunctionData( - functionFragment: "increaseAllowance", - values: [PromiseOrValue, PromiseOrValue] - ): string; encodeFunctionData(functionFragment: "name", values?: undefined): string; encodeFunctionData(functionFragment: "symbol", values?: undefined): string; encodeFunctionData( @@ -186,15 +174,7 @@ export interface ZRC20Interface extends utils.Interface { decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; decodeFunctionResult(functionFragment: "burn", data: BytesLike): Result; decodeFunctionResult(functionFragment: "decimals", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "decreaseAllowance", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "increaseAllowance", - data: BytesLike - ): Result; decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; decodeFunctionResult( @@ -388,24 +368,12 @@ export interface ZRC20 extends BaseContract { decimals(overrides?: CallOverrides): Promise<[number]>; - decreaseAllowance( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - deposit( to: PromiseOrValue, amount: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - increaseAllowance( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise<[string]>; symbol(overrides?: CallOverrides): Promise<[string]>; @@ -485,24 +453,12 @@ export interface ZRC20 extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - deposit( to: PromiseOrValue, amount: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - increaseAllowance( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise; symbol(overrides?: CallOverrides): Promise; @@ -582,24 +538,12 @@ export interface ZRC20 extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - deposit( to: PromiseOrValue, amount: PromiseOrValue, overrides?: CallOverrides ): Promise; - increaseAllowance( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: CallOverrides - ): Promise; - name(overrides?: CallOverrides): Promise; symbol(overrides?: CallOverrides): Promise; @@ -747,24 +691,12 @@ export interface ZRC20 extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - deposit( to: PromiseOrValue, amount: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - increaseAllowance( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise; symbol(overrides?: CallOverrides): Promise; @@ -849,24 +781,12 @@ export interface ZRC20 extends BaseContract { decimals(overrides?: CallOverrides): Promise; - decreaseAllowance( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - deposit( to: PromiseOrValue, amount: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise; - increaseAllowance( - spender: PromiseOrValue, - amount: PromiseOrValue, - overrides?: Overrides & { from?: PromiseOrValue } - ): Promise; - name(overrides?: CallOverrides): Promise; symbol(overrides?: CallOverrides): Promise; diff --git a/typechain-types/contracts/zevm/ConnectorZEVM.sol/WZETA.ts b/typechain-types/contracts/zevm/ZetaConnectorZEVM.sol/WZETA.ts similarity index 100% rename from typechain-types/contracts/zevm/ConnectorZEVM.sol/WZETA.ts rename to typechain-types/contracts/zevm/ZetaConnectorZEVM.sol/WZETA.ts diff --git a/typechain-types/contracts/zevm/ConnectorZEVM.sol/ZetaConnectorZEVM.ts b/typechain-types/contracts/zevm/ZetaConnectorZEVM.sol/ZetaConnectorZEVM.ts similarity index 100% rename from typechain-types/contracts/zevm/ConnectorZEVM.sol/ZetaConnectorZEVM.ts rename to typechain-types/contracts/zevm/ZetaConnectorZEVM.sol/ZetaConnectorZEVM.ts diff --git a/typechain-types/contracts/zevm/ConnectorZEVM.sol/index.ts b/typechain-types/contracts/zevm/ZetaConnectorZEVM.sol/index.ts similarity index 100% rename from typechain-types/contracts/zevm/ConnectorZEVM.sol/index.ts rename to typechain-types/contracts/zevm/ZetaConnectorZEVM.sol/index.ts diff --git a/typechain-types/contracts/zevm/index.ts b/typechain-types/contracts/zevm/index.ts index 80441402..c1e5459a 100644 --- a/typechain-types/contracts/zevm/index.ts +++ b/typechain-types/contracts/zevm/index.ts @@ -1,8 +1,6 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -import type * as connectorZevmSol from "./ConnectorZEVM.sol"; -export type { connectorZevmSol }; import type * as interfacesSol from "./Interfaces.sol"; export type { interfacesSol }; import type * as systemContractSol from "./SystemContract.sol"; @@ -11,5 +9,9 @@ import type * as wzetaSol from "./WZETA.sol"; export type { wzetaSol }; import type * as zrc20Sol from "./ZRC20.sol"; export type { zrc20Sol }; +import type * as zetaConnectorZevmSol from "./ZetaConnectorZEVM.sol"; +export type { zetaConnectorZevmSol }; import type * as interfaces from "./interfaces"; export type { interfaces }; +import type * as testing from "./testing"; +export type { testing }; diff --git a/typechain-types/contracts/zevm/interfaces/IWZETA.sol/IWETH9.ts b/typechain-types/contracts/zevm/interfaces/IWZETA.sol/IWETH9.ts new file mode 100644 index 00000000..fadc91d2 --- /dev/null +++ b/typechain-types/contracts/zevm/interfaces/IWZETA.sol/IWETH9.ts @@ -0,0 +1,438 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export interface IWETH9Interface extends utils.Interface { + functions: { + "allowance(address,address)": FunctionFragment; + "approve(address,uint256)": FunctionFragment; + "balanceOf(address)": FunctionFragment; + "deposit()": FunctionFragment; + "totalSupply()": FunctionFragment; + "transfer(address,uint256)": FunctionFragment; + "transferFrom(address,address,uint256)": FunctionFragment; + "withdraw(uint256)": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "allowance" + | "approve" + | "balanceOf" + | "deposit" + | "totalSupply" + | "transfer" + | "transferFrom" + | "withdraw" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "allowance", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "approve", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "balanceOf", + values: [PromiseOrValue] + ): string; + encodeFunctionData(functionFragment: "deposit", values?: undefined): string; + encodeFunctionData( + functionFragment: "totalSupply", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "transfer", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "transferFrom", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "withdraw", + values: [PromiseOrValue] + ): string; + + decodeFunctionResult(functionFragment: "allowance", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; + decodeFunctionResult(functionFragment: "deposit", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "totalSupply", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "transfer", data: BytesLike): Result; + decodeFunctionResult( + functionFragment: "transferFrom", + data: BytesLike + ): Result; + decodeFunctionResult(functionFragment: "withdraw", data: BytesLike): Result; + + events: { + "Approval(address,address,uint256)": EventFragment; + "Deposit(address,uint256)": EventFragment; + "Transfer(address,address,uint256)": EventFragment; + "Withdrawal(address,uint256)": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Deposit"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; + getEvent(nameOrSignatureOrTopic: "Withdrawal"): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + spender: string; + value: BigNumber; +} +export type ApprovalEvent = TypedEvent< + [string, string, BigNumber], + ApprovalEventObject +>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface DepositEventObject { + dst: string; + wad: BigNumber; +} +export type DepositEvent = TypedEvent<[string, BigNumber], DepositEventObject>; + +export type DepositEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + value: BigNumber; +} +export type TransferEvent = TypedEvent< + [string, string, BigNumber], + TransferEventObject +>; + +export type TransferEventFilter = TypedEventFilter; + +export interface WithdrawalEventObject { + src: string; + wad: BigNumber; +} +export type WithdrawalEvent = TypedEvent< + [string, BigNumber], + WithdrawalEventObject +>; + +export type WithdrawalEventFilter = TypedEventFilter; + +export interface IWETH9 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: IWETH9Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + approve( + spender: PromiseOrValue, + wad: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + deposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + transfer( + to: PromiseOrValue, + wad: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + wad: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdraw( + wad: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + wad: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + deposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + wad: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + wad: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdraw( + wad: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + callStatic: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + wad: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + deposit(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + wad: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + wad: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + withdraw( + wad: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + }; + + filters: { + "Approval(address,address,uint256)"( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + Approval( + owner?: PromiseOrValue | null, + spender?: PromiseOrValue | null, + value?: null + ): ApprovalEventFilter; + + "Deposit(address,uint256)"( + dst?: PromiseOrValue | null, + wad?: null + ): DepositEventFilter; + Deposit( + dst?: PromiseOrValue | null, + wad?: null + ): DepositEventFilter; + + "Transfer(address,address,uint256)"( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + Transfer( + from?: PromiseOrValue | null, + to?: PromiseOrValue | null, + value?: null + ): TransferEventFilter; + + "Withdrawal(address,uint256)"( + src?: PromiseOrValue | null, + wad?: null + ): WithdrawalEventFilter; + Withdrawal( + src?: PromiseOrValue | null, + wad?: null + ): WithdrawalEventFilter; + }; + + estimateGas: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + wad: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + deposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + wad: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + wad: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdraw( + wad: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; + + populateTransaction: { + allowance( + owner: PromiseOrValue, + spender: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + approve( + spender: PromiseOrValue, + wad: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + balanceOf( + owner: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + deposit( + overrides?: PayableOverrides & { from?: PromiseOrValue } + ): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: PromiseOrValue, + wad: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + transferFrom( + from: PromiseOrValue, + to: PromiseOrValue, + wad: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + withdraw( + wad: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + }; +} diff --git a/typechain-types/contracts/zevm/interfaces/IWZETA.sol/index.ts b/typechain-types/contracts/zevm/interfaces/IWZETA.sol/index.ts new file mode 100644 index 00000000..95069327 --- /dev/null +++ b/typechain-types/contracts/zevm/interfaces/IWZETA.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { IWETH9 } from "./IWETH9"; diff --git a/typechain-types/contracts/zevm/interfaces/index.ts b/typechain-types/contracts/zevm/interfaces/index.ts index 6d9f235a..5328b2e6 100644 --- a/typechain-types/contracts/zevm/interfaces/index.ts +++ b/typechain-types/contracts/zevm/interfaces/index.ts @@ -1,6 +1,8 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ +import type * as iwzetaSol from "./IWZETA.sol"; +export type { iwzetaSol }; export type { IUniswapV2Router01 } from "./IUniswapV2Router01"; export type { IUniswapV2Router02 } from "./IUniswapV2Router02"; export type { IZRC20 } from "./IZRC20"; diff --git a/typechain-types/contracts/zevm/testing/SystemContractMock.sol/SystemContractErrors.ts b/typechain-types/contracts/zevm/testing/SystemContractMock.sol/SystemContractErrors.ts new file mode 100644 index 00000000..f0d2d164 --- /dev/null +++ b/typechain-types/contracts/zevm/testing/SystemContractMock.sol/SystemContractErrors.ts @@ -0,0 +1,56 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { BaseContract, Signer, utils } from "ethers"; + +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export interface SystemContractErrorsInterface extends utils.Interface { + functions: {}; + + events: {}; +} + +export interface SystemContractErrors extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: SystemContractErrorsInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: {}; + + callStatic: {}; + + filters: {}; + + estimateGas: {}; + + populateTransaction: {}; +} diff --git a/typechain-types/contracts/zevm/testing/SystemContractMock.sol/SystemContractMock.ts b/typechain-types/contracts/zevm/testing/SystemContractMock.sol/SystemContractMock.ts new file mode 100644 index 00000000..3e74ebc7 --- /dev/null +++ b/typechain-types/contracts/zevm/testing/SystemContractMock.sol/SystemContractMock.ts @@ -0,0 +1,553 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from "ethers"; +import type { + FunctionFragment, + Result, + EventFragment, +} from "@ethersproject/abi"; +import type { Listener, Provider } from "@ethersproject/providers"; +import type { + TypedEventFilter, + TypedEvent, + TypedListener, + OnEvent, + PromiseOrValue, +} from "../../../../common"; + +export interface SystemContractMockInterface extends utils.Interface { + functions: { + "gasCoinZRC20ByChainId(uint256)": FunctionFragment; + "gasPriceByChainId(uint256)": FunctionFragment; + "gasZetaPoolByChainId(uint256)": FunctionFragment; + "onCrossChainCall(address,address,uint256,bytes)": FunctionFragment; + "setGasCoinZRC20(uint256,address)": FunctionFragment; + "setGasPrice(uint256,uint256)": FunctionFragment; + "setWZETAContractAddress(address)": FunctionFragment; + "uniswapv2FactoryAddress()": FunctionFragment; + "uniswapv2PairFor(address,address,address)": FunctionFragment; + "uniswapv2Router02Address()": FunctionFragment; + "wZetaContractAddress()": FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | "gasCoinZRC20ByChainId" + | "gasPriceByChainId" + | "gasZetaPoolByChainId" + | "onCrossChainCall" + | "setGasCoinZRC20" + | "setGasPrice" + | "setWZETAContractAddress" + | "uniswapv2FactoryAddress" + | "uniswapv2PairFor" + | "uniswapv2Router02Address" + | "wZetaContractAddress" + ): FunctionFragment; + + encodeFunctionData( + functionFragment: "gasCoinZRC20ByChainId", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "gasPriceByChainId", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "gasZetaPoolByChainId", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "onCrossChainCall", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "setGasCoinZRC20", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setGasPrice", + values: [PromiseOrValue, PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "setWZETAContractAddress", + values: [PromiseOrValue] + ): string; + encodeFunctionData( + functionFragment: "uniswapv2FactoryAddress", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "uniswapv2PairFor", + values: [ + PromiseOrValue, + PromiseOrValue, + PromiseOrValue + ] + ): string; + encodeFunctionData( + functionFragment: "uniswapv2Router02Address", + values?: undefined + ): string; + encodeFunctionData( + functionFragment: "wZetaContractAddress", + values?: undefined + ): string; + + decodeFunctionResult( + functionFragment: "gasCoinZRC20ByChainId", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "gasPriceByChainId", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "gasZetaPoolByChainId", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "onCrossChainCall", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setGasCoinZRC20", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setGasPrice", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "setWZETAContractAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "uniswapv2FactoryAddress", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "uniswapv2PairFor", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "uniswapv2Router02Address", + data: BytesLike + ): Result; + decodeFunctionResult( + functionFragment: "wZetaContractAddress", + data: BytesLike + ): Result; + + events: { + "SetGasCoin(uint256,address)": EventFragment; + "SetGasPrice(uint256,uint256)": EventFragment; + "SetGasZetaPool(uint256,address)": EventFragment; + "SetWZeta(address)": EventFragment; + "SystemContractDeployed()": EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: "SetGasCoin"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetGasPrice"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetGasZetaPool"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SetWZeta"): EventFragment; + getEvent(nameOrSignatureOrTopic: "SystemContractDeployed"): EventFragment; +} + +export interface SetGasCoinEventObject { + arg0: BigNumber; + arg1: string; +} +export type SetGasCoinEvent = TypedEvent< + [BigNumber, string], + SetGasCoinEventObject +>; + +export type SetGasCoinEventFilter = TypedEventFilter; + +export interface SetGasPriceEventObject { + arg0: BigNumber; + arg1: BigNumber; +} +export type SetGasPriceEvent = TypedEvent< + [BigNumber, BigNumber], + SetGasPriceEventObject +>; + +export type SetGasPriceEventFilter = TypedEventFilter; + +export interface SetGasZetaPoolEventObject { + arg0: BigNumber; + arg1: string; +} +export type SetGasZetaPoolEvent = TypedEvent< + [BigNumber, string], + SetGasZetaPoolEventObject +>; + +export type SetGasZetaPoolEventFilter = TypedEventFilter; + +export interface SetWZetaEventObject { + arg0: string; +} +export type SetWZetaEvent = TypedEvent<[string], SetWZetaEventObject>; + +export type SetWZetaEventFilter = TypedEventFilter; + +export interface SystemContractDeployedEventObject {} +export type SystemContractDeployedEvent = TypedEvent< + [], + SystemContractDeployedEventObject +>; + +export type SystemContractDeployedEventFilter = + TypedEventFilter; + +export interface SystemContractMock extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: SystemContractMockInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined + ): Promise>; + + listeners( + eventFilter?: TypedEventFilter + ): Array>; + listeners(eventName?: string): Array; + removeAllListeners( + eventFilter: TypedEventFilter + ): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + gasCoinZRC20ByChainId( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + gasPriceByChainId( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[BigNumber]>; + + gasZetaPoolByChainId( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string]>; + + onCrossChainCall( + target: PromiseOrValue, + zrc20: PromiseOrValue, + amount: PromiseOrValue, + message: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setGasCoinZRC20( + chainID: PromiseOrValue, + zrc20: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setGasPrice( + chainID: PromiseOrValue, + price: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setWZETAContractAddress( + addr: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + uniswapv2FactoryAddress(overrides?: CallOverrides): Promise<[string]>; + + uniswapv2PairFor( + factory: PromiseOrValue, + tokenA: PromiseOrValue, + tokenB: PromiseOrValue, + overrides?: CallOverrides + ): Promise<[string] & { pair: string }>; + + uniswapv2Router02Address(overrides?: CallOverrides): Promise<[string]>; + + wZetaContractAddress(overrides?: CallOverrides): Promise<[string]>; + }; + + gasCoinZRC20ByChainId( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + gasPriceByChainId( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + gasZetaPoolByChainId( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + onCrossChainCall( + target: PromiseOrValue, + zrc20: PromiseOrValue, + amount: PromiseOrValue, + message: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setGasCoinZRC20( + chainID: PromiseOrValue, + zrc20: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setGasPrice( + chainID: PromiseOrValue, + price: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setWZETAContractAddress( + addr: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + uniswapv2FactoryAddress(overrides?: CallOverrides): Promise; + + uniswapv2PairFor( + factory: PromiseOrValue, + tokenA: PromiseOrValue, + tokenB: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + uniswapv2Router02Address(overrides?: CallOverrides): Promise; + + wZetaContractAddress(overrides?: CallOverrides): Promise; + + callStatic: { + gasCoinZRC20ByChainId( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + gasPriceByChainId( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + gasZetaPoolByChainId( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + onCrossChainCall( + target: PromiseOrValue, + zrc20: PromiseOrValue, + amount: PromiseOrValue, + message: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setGasCoinZRC20( + chainID: PromiseOrValue, + zrc20: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setGasPrice( + chainID: PromiseOrValue, + price: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + setWZETAContractAddress( + addr: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + uniswapv2FactoryAddress(overrides?: CallOverrides): Promise; + + uniswapv2PairFor( + factory: PromiseOrValue, + tokenA: PromiseOrValue, + tokenB: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + uniswapv2Router02Address(overrides?: CallOverrides): Promise; + + wZetaContractAddress(overrides?: CallOverrides): Promise; + }; + + filters: { + "SetGasCoin(uint256,address)"( + arg0?: null, + arg1?: null + ): SetGasCoinEventFilter; + SetGasCoin(arg0?: null, arg1?: null): SetGasCoinEventFilter; + + "SetGasPrice(uint256,uint256)"( + arg0?: null, + arg1?: null + ): SetGasPriceEventFilter; + SetGasPrice(arg0?: null, arg1?: null): SetGasPriceEventFilter; + + "SetGasZetaPool(uint256,address)"( + arg0?: null, + arg1?: null + ): SetGasZetaPoolEventFilter; + SetGasZetaPool(arg0?: null, arg1?: null): SetGasZetaPoolEventFilter; + + "SetWZeta(address)"(arg0?: null): SetWZetaEventFilter; + SetWZeta(arg0?: null): SetWZetaEventFilter; + + "SystemContractDeployed()"(): SystemContractDeployedEventFilter; + SystemContractDeployed(): SystemContractDeployedEventFilter; + }; + + estimateGas: { + gasCoinZRC20ByChainId( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + gasPriceByChainId( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + gasZetaPoolByChainId( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + onCrossChainCall( + target: PromiseOrValue, + zrc20: PromiseOrValue, + amount: PromiseOrValue, + message: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setGasCoinZRC20( + chainID: PromiseOrValue, + zrc20: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setGasPrice( + chainID: PromiseOrValue, + price: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setWZETAContractAddress( + addr: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + uniswapv2FactoryAddress(overrides?: CallOverrides): Promise; + + uniswapv2PairFor( + factory: PromiseOrValue, + tokenA: PromiseOrValue, + tokenB: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + uniswapv2Router02Address(overrides?: CallOverrides): Promise; + + wZetaContractAddress(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + gasCoinZRC20ByChainId( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + gasPriceByChainId( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + gasZetaPoolByChainId( + arg0: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + onCrossChainCall( + target: PromiseOrValue, + zrc20: PromiseOrValue, + amount: PromiseOrValue, + message: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setGasCoinZRC20( + chainID: PromiseOrValue, + zrc20: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setGasPrice( + chainID: PromiseOrValue, + price: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + setWZETAContractAddress( + addr: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise; + + uniswapv2FactoryAddress( + overrides?: CallOverrides + ): Promise; + + uniswapv2PairFor( + factory: PromiseOrValue, + tokenA: PromiseOrValue, + tokenB: PromiseOrValue, + overrides?: CallOverrides + ): Promise; + + uniswapv2Router02Address( + overrides?: CallOverrides + ): Promise; + + wZetaContractAddress( + overrides?: CallOverrides + ): Promise; + }; +} diff --git a/typechain-types/contracts/zevm/testing/SystemContractMock.sol/index.ts b/typechain-types/contracts/zevm/testing/SystemContractMock.sol/index.ts new file mode 100644 index 00000000..122c1994 --- /dev/null +++ b/typechain-types/contracts/zevm/testing/SystemContractMock.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { SystemContractErrors } from "./SystemContractErrors"; +export type { SystemContractMock } from "./SystemContractMock"; diff --git a/typechain-types/contracts/zevm/testing/index.ts b/typechain-types/contracts/zevm/testing/index.ts new file mode 100644 index 00000000..2da3428d --- /dev/null +++ b/typechain-types/contracts/zevm/testing/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type * as systemContractMockSol from "./SystemContractMock.sol"; +export type { systemContractMockSol }; diff --git a/typechain-types/factories/contracts/evm/ERC20Custody__factory.ts b/typechain-types/factories/contracts/evm/ERC20Custody__factory.ts index 588787f1..d8c2695c 100644 --- a/typechain-types/factories/contracts/evm/ERC20Custody__factory.ts +++ b/typechain-types/factories/contracts/evm/ERC20Custody__factory.ts @@ -459,7 +459,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c06040523480156200001157600080fd5b50604051620021043803806200210483398181016040528101906200003791906200014f565b84600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826002819055508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b81525050816080818152505050505050506200027c565b6000815190506200011b816200022e565b92915050565b600081519050620001328162000248565b92915050565b600081519050620001498162000262565b92915050565b600080600080600060a086880312156200016e576200016d62000229565b5b60006200017e888289016200010a565b955050602062000191888289016200010a565b9450506040620001a48882890162000138565b9350506060620001b78882890162000138565b9250506080620001ca8882890162000121565b9150509295509295909350565b6000620001e482620001ff565b9050919050565b6000620001f882620001d7565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b6200023981620001d7565b81146200024557600080fd5b50565b6200025381620001eb565b81146200025f57600080fd5b50565b6200026d816200021f565b81146200027957600080fd5b50565b60805160a05160601c611e4a620002ba60003960008181610dfd01528181610e66015261105a01526000818161042b0152610c6e0152611e4a6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639b19251a11610097578063e5408cfa11610066578063e5408cfa1461024d578063e609055e1461026b578063e8f9cb3a14610287578063ed11692b146102a557610100565b80639b19251a146101c9578063d936547e146101e5578063d9caed1214610215578063de2f6c5e1461023157610100565b80637bdaded3116100d35780637bdaded3146101695780638456cb5914610187578063950837aa146101915780639a590427146101ad57610100565b80633f4ba83a1461010557806353ee30a31461010f57806354b61e811461012d5780635c975abb1461014b575b600080fd5b61010d6102af565b005b6101176103cc565b60405161012491906119b8565b60405180910390f35b6101356103f2565b60405161014291906119b8565b60405180910390f35b610153610418565b6040516101609190611a33565b60405180910390f35b610171610429565b60405161017e9190611b34565b60405180910390f35b61018f61044d565b005b6101ab60048036038101906101a6919061168a565b6105f4565b005b6101c760048036038101906101c291906117de565b61075c565b005b6101e360048036038101906101de91906117de565b610881565b005b6101ff60048036038101906101fa91906117de565b6109a6565b60405161020c9190611a33565b60405180910390f35b61022f600480360381019061022a91906116b7565b6109c6565b005b61024b6004803603810190610246919061180b565b610baa565b005b610255610d07565b6040516102629190611b34565b60405180910390f35b61028560048036038101906102809190611737565b610d0d565b005b61028f611058565b60405161029c9190611a97565b60405180910390f35b6102ad61107c565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610335576040517e611fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900460ff16610379576040517f6cd6020100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336040516103c291906119b8565b60405180910390a1565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104d3576040517e611fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900460ff1615610518576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105a1576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336040516105ea91906119b8565b60405180910390a1565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461067a576040517e611fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106e1576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fcd2958db8285a532edf298cbe1aa28ea3fb5ec82461253f9a8c1477924e299478160405161075191906119b8565b60405180910390a150565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107e3576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da4679160405160405180910390a250565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610908576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a5460405160405180910390a250565b60036020528060005260406000206000915054906101000a900460ff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a4d576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900460ff1615610a92576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610b15576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b4083828473ffffffffffffffffffffffffffffffffffffffff166112279092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb83604051610b9d9190611b34565b60405180910390a3505050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c31576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000811415610c6c576040517faf13986d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000811115610cc6576040517fc1be451300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507f6d2d8e313fbaf76898bb9fa55e4b52525e49c7d7182d0874f97bd9076e81d52381604051610cfc9190611b34565b60405180910390a150565b60025481565b60008054906101000a900460ff1615610d52576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610dd5576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025414158015610e355750600073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614155b15610eac57610eab33600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff166002547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166112ad909392919063ffffffff16565b5b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ee791906119b8565b60206040518083038186803b158015610eff57600080fd5b505afa158015610f13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f379190611838565b9050610f663330868873ffffffffffffffffffffffffffffffffffffffff166112ad909392919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae8888848973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fda91906119b8565b60206040518083038186803b158015610ff257600080fd5b505afa158015611006573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102a9190611838565b6110349190611b92565b8787604051611047959493929190611a4e565b60405180910390a250505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611102576040517e611fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561118b576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f39ac266bfc011581be62c138d96e4e8782812013bb66fffb4cd207f4bfee37773360405161121d91906119b8565b60405180910390a1565b6112a88363a9059cbb60e01b8484604051602401611246929190611a0a565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611336565b505050565b611330846323b872dd60e01b8585856040516024016112ce939291906119d3565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611336565b50505050565b6000611398826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166113fd9092919063ffffffff16565b90506000815111156113f857808060200190518101906113b8919061170a565b6113f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ee90611b14565b60405180910390fd5b5b505050565b606061140c8484600085611415565b90509392505050565b60608247101561145a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145190611ad4565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161148391906119a1565b60006040518083038185875af1925050503d80600081146114c0576040519150601f19603f3d011682016040523d82523d6000602084013e6114c5565b606091505b50915091506114d6878383876114e2565b92505050949350505050565b606083156115455760008351141561153d576114fd85611558565b61153c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153390611af4565b60405180910390fd5b5b829050611550565b61154f838361157b565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008251111561158e5781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c29190611ab2565b60405180910390fd5b6000813590506115da81611db8565b92915050565b6000815190506115ef81611dcf565b92915050565b60008083601f84011261160b5761160a611ccc565b5b8235905067ffffffffffffffff81111561162857611627611cc7565b5b60208301915083600182028301111561164457611643611cd1565b5b9250929050565b60008135905061165a81611de6565b92915050565b60008135905061166f81611dfd565b92915050565b60008151905061168481611dfd565b92915050565b6000602082840312156116a05761169f611cdb565b5b60006116ae848285016115cb565b91505092915050565b6000806000606084860312156116d0576116cf611cdb565b5b60006116de868287016115cb565b93505060206116ef8682870161164b565b925050604061170086828701611660565b9150509250925092565b6000602082840312156117205761171f611cdb565b5b600061172e848285016115e0565b91505092915050565b6000806000806000806080878903121561175457611753611cdb565b5b600087013567ffffffffffffffff81111561177257611771611cd6565b5b61177e89828a016115f5565b9650965050602061179189828a0161164b565b94505060406117a289828a01611660565b935050606087013567ffffffffffffffff8111156117c3576117c2611cd6565b5b6117cf89828a016115f5565b92509250509295509295509295565b6000602082840312156117f4576117f3611cdb565b5b60006118028482850161164b565b91505092915050565b60006020828403121561182157611820611cdb565b5b600061182f84828501611660565b91505092915050565b60006020828403121561184e5761184d611cdb565b5b600061185c84828501611675565b91505092915050565b61186e81611bc6565b82525050565b61187d81611bd8565b82525050565b600061188f8385611b65565b935061189c838584611c56565b6118a583611ce0565b840190509392505050565b60006118bb82611b4f565b6118c58185611b76565b93506118d5818560208601611c65565b80840191505092915050565b6118ea81611c20565b82525050565b60006118fb82611b5a565b6119058185611b81565b9350611915818560208601611c65565b61191e81611ce0565b840191505092915050565b6000611936602683611b81565b915061194182611cf1565b604082019050919050565b6000611959601d83611b81565b915061196482611d40565b602082019050919050565b600061197c602a83611b81565b915061198782611d69565b604082019050919050565b61199b81611c16565b82525050565b60006119ad82846118b0565b915081905092915050565b60006020820190506119cd6000830184611865565b92915050565b60006060820190506119e86000830186611865565b6119f56020830185611865565b611a026040830184611992565b949350505050565b6000604082019050611a1f6000830185611865565b611a2c6020830184611992565b9392505050565b6000602082019050611a486000830184611874565b92915050565b60006060820190508181036000830152611a69818789611883565b9050611a786020830186611992565b8181036040830152611a8b818486611883565b90509695505050505050565b6000602082019050611aac60008301846118e1565b92915050565b60006020820190508181036000830152611acc81846118f0565b905092915050565b60006020820190508181036000830152611aed81611929565b9050919050565b60006020820190508181036000830152611b0d8161194c565b9050919050565b60006020820190508181036000830152611b2d8161196f565b9050919050565b6000602082019050611b496000830184611992565b92915050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611b9d82611c16565b9150611ba883611c16565b925082821015611bbb57611bba611c98565b5b828203905092915050565b6000611bd182611bf6565b9050919050565b60008115159050919050565b6000611bef82611bc6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611c2b82611c32565b9050919050565b6000611c3d82611c44565b9050919050565b6000611c4f82611bf6565b9050919050565b82818337600083830152505050565b60005b83811015611c83578082015181840152602081019050611c68565b83811115611c92576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b611dc181611bc6565b8114611dcc57600080fd5b50565b611dd881611bd8565b8114611de357600080fd5b50565b611def81611be4565b8114611dfa57600080fd5b50565b611e0681611c16565b8114611e1157600080fd5b5056fea26469706673582212206146a48df6487c8ffd47b2ee14a7124685ab8cfa6ca34eb6be52dca97f6f146164736f6c63430008070033"; + "0x60c06040523480156200001157600080fd5b50604051620021a0380380620021a0833981810160405281019062000037919062000156565b6001600081905550846001806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550826003819055508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508160808181525050505050505062000283565b600081519050620001228162000235565b92915050565b60008151905062000139816200024f565b92915050565b600081519050620001508162000269565b92915050565b600080600080600060a0868803121562000175576200017462000230565b5b6000620001858882890162000111565b9550506020620001988882890162000111565b9450506040620001ab888289016200013f565b9350506060620001be888289016200013f565b9250506080620001d18882890162000128565b9150509295509295909350565b6000620001eb8262000206565b9050919050565b6000620001ff82620001de565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b6200024081620001de565b81146200024c57600080fd5b50565b6200025a81620001f2565b81146200026657600080fd5b50565b620002748162000226565b81146200028057600080fd5b50565b60805160a05160601c611edf620002c160003960008181610dca01528181610e31015261102d01526000818161042d0152610c310152611edf6000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80639b19251a11610097578063e5408cfa11610066578063e5408cfa1461024d578063e609055e1461026b578063e8f9cb3a14610287578063ed11692b146102a557610100565b80639b19251a146101c9578063d936547e146101e5578063d9caed1214610215578063de2f6c5e1461023157610100565b80637bdaded3116100d35780637bdaded3146101695780638456cb5914610187578063950837aa146101915780639a590427146101ad57610100565b80633f4ba83a1461010557806353ee30a31461010f57806354b61e811461012d5780635c975abb1461014b575b600080fd5b61010d6102af565b005b6101176103ce565b6040516101249190611a04565b60405180910390f35b6101356103f2565b6040516101429190611a04565b60405180910390f35b610153610418565b6040516101609190611a7f565b60405180910390f35b61017161042b565b60405161017e9190611ba0565b60405180910390f35b61018f61044f565b005b6101ab60048036038101906101a691906116b3565b6105f5565b005b6101c760048036038101906101c29190611807565b61075c565b005b6101e360048036038101906101de9190611807565b61087f565b005b6101ff60048036038101906101fa9190611807565b6109a2565b60405161020c9190611a7f565b60405180910390f35b61022f600480360381019061022a91906116e0565b6109c2565b005b61024b60048036038101906102469190611834565b610b6f565b005b610255610cca565b6040516102629190611ba0565b60405180910390f35b61028560048036038101906102809190611760565b610cd0565b005b61028f61102b565b60405161029c9190611ae3565b60405180910390f35b6102ad61104f565b005b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610334576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900460ff1661037a576040517f6cd6020100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600160006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa336040516103c49190611a04565b60405180910390a1565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104d4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900460ff161561051b576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105a2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018060006101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258336040516105eb9190611a04565b60405180910390a1565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461067b576040517e611fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156106e2576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fcd2958db8285a532edf298cbe1aa28ea3fb5ec82461253f9a8c1477924e29947816040516107519190611a04565b60405180910390a150565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107e1576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f51085ddf9ebdded84b76e829eb58c4078e4b5bdf97d9a94723f336039da4679160405160405180910390a250565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610904576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167faab7954e9d246b167ef88aeddad35209ca2489d95a8aeb59e288d9b19fae5a5460405160405180910390a250565b60046020528060005260406000206000915054906101000a900460ff1681565b6109ca6111f6565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a4f576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610ad2576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610afd83828473ffffffffffffffffffffffffffffffffffffffff166112469092919063ffffffff16565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb83604051610b5a9190611ba0565b60405180910390a3610b6a6112cc565b505050565b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610bf4576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000811415610c2f576040517faf13986d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f0000000000000000000000000000000000000000000000000000000000000000811115610c89576040517fc1be451300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806003819055507f6d2d8e313fbaf76898bb9fa55e4b52525e49c7d7182d0874f97bd9076e81d52381604051610cbf9190611ba0565b60405180910390a150565b60035481565b610cd86111f6565b600160009054906101000a900460ff1615610d1f576040517f1309a56300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16610da2576040517f584a793800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060035414158015610e025750600073ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1614155b15610e7757610e763360018054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166112d6909392919063ffffffff16565b5b60008473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610eb29190611a04565b60206040518083038186803b158015610eca57600080fd5b505afa158015610ede573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f029190611861565b9050610f313330868873ffffffffffffffffffffffffffffffffffffffff166112d6909392919063ffffffff16565b8473ffffffffffffffffffffffffffffffffffffffff167f1dafa057cc5c3bccb5ad974129a2bccd3c74002d9dfd7062404ba9523b18d6ae8888848973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fa59190611a04565b60206040518083038186803b158015610fbd57600080fd5b505afa158015610fd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ff59190611861565b610fff9190611bfe565b8787604051611012959493929190611a9a565b60405180910390a2506110236112cc565b505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110d5576040517e611fa600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660018054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561115c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60018054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f39ac266bfc011581be62c138d96e4e8782812013bb66fffb4cd207f4bfee3777336040516111ec9190611a04565b60405180910390a1565b6002600054141561123c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123390611b80565b60405180910390fd5b6002600081905550565b6112c78363a9059cbb60e01b8484604051602401611265929190611a56565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061135f565b505050565b6001600081905550565b611359846323b872dd60e01b8585856040516024016112f793929190611a1f565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff838183161783525050505061135f565b50505050565b60006113c1826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166114269092919063ffffffff16565b905060008151111561142157808060200190518101906113e19190611733565b611420576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141790611b60565b60405180910390fd5b5b505050565b6060611435848460008561143e565b90509392505050565b606082471015611483576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147a90611b20565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516114ac91906119ed565b60006040518083038185875af1925050503d80600081146114e9576040519150601f19603f3d011682016040523d82523d6000602084013e6114ee565b606091505b50915091506114ff8783838761150b565b92505050949350505050565b6060831561156e576000835114156115665761152685611581565b611565576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155c90611b40565b60405180910390fd5b5b829050611579565b61157883836115a4565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156115b75781518083602001fd5b806040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115eb9190611afe565b60405180910390fd5b60008135905061160381611e4d565b92915050565b60008151905061161881611e64565b92915050565b60008083601f84011261163457611633611d38565b5b8235905067ffffffffffffffff81111561165157611650611d33565b5b60208301915083600182028301111561166d5761166c611d3d565b5b9250929050565b60008135905061168381611e7b565b92915050565b60008135905061169881611e92565b92915050565b6000815190506116ad81611e92565b92915050565b6000602082840312156116c9576116c8611d47565b5b60006116d7848285016115f4565b91505092915050565b6000806000606084860312156116f9576116f8611d47565b5b6000611707868287016115f4565b935050602061171886828701611674565b925050604061172986828701611689565b9150509250925092565b60006020828403121561174957611748611d47565b5b600061175784828501611609565b91505092915050565b6000806000806000806080878903121561177d5761177c611d47565b5b600087013567ffffffffffffffff81111561179b5761179a611d42565b5b6117a789828a0161161e565b965096505060206117ba89828a01611674565b94505060406117cb89828a01611689565b935050606087013567ffffffffffffffff8111156117ec576117eb611d42565b5b6117f889828a0161161e565b92509250509295509295509295565b60006020828403121561181d5761181c611d47565b5b600061182b84828501611674565b91505092915050565b60006020828403121561184a57611849611d47565b5b600061185884828501611689565b91505092915050565b60006020828403121561187757611876611d47565b5b60006118858482850161169e565b91505092915050565b61189781611c32565b82525050565b6118a681611c44565b82525050565b60006118b88385611bd1565b93506118c5838584611cc2565b6118ce83611d4c565b840190509392505050565b60006118e482611bbb565b6118ee8185611be2565b93506118fe818560208601611cd1565b80840191505092915050565b61191381611c8c565b82525050565b600061192482611bc6565b61192e8185611bed565b935061193e818560208601611cd1565b61194781611d4c565b840191505092915050565b600061195f602683611bed565b915061196a82611d5d565b604082019050919050565b6000611982601d83611bed565b915061198d82611dac565b602082019050919050565b60006119a5602a83611bed565b91506119b082611dd5565b604082019050919050565b60006119c8601f83611bed565b91506119d382611e24565b602082019050919050565b6119e781611c82565b82525050565b60006119f982846118d9565b915081905092915050565b6000602082019050611a19600083018461188e565b92915050565b6000606082019050611a34600083018661188e565b611a41602083018561188e565b611a4e60408301846119de565b949350505050565b6000604082019050611a6b600083018561188e565b611a7860208301846119de565b9392505050565b6000602082019050611a94600083018461189d565b92915050565b60006060820190508181036000830152611ab58187896118ac565b9050611ac460208301866119de565b8181036040830152611ad78184866118ac565b90509695505050505050565b6000602082019050611af8600083018461190a565b92915050565b60006020820190508181036000830152611b188184611919565b905092915050565b60006020820190508181036000830152611b3981611952565b9050919050565b60006020820190508181036000830152611b5981611975565b9050919050565b60006020820190508181036000830152611b7981611998565b9050919050565b60006020820190508181036000830152611b99816119bb565b9050919050565b6000602082019050611bb560008301846119de565b92915050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000611c0982611c82565b9150611c1483611c82565b925082821015611c2757611c26611d04565b5b828203905092915050565b6000611c3d82611c62565b9050919050565b60008115159050919050565b6000611c5b82611c32565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000611c9782611c9e565b9050919050565b6000611ca982611cb0565b9050919050565b6000611cbb82611c62565b9050919050565b82818337600083830152505050565b60005b83811015611cef578082015181840152602081019050611cd4565b83811115611cfe576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00600082015250565b611e5681611c32565b8114611e6157600080fd5b50565b611e6d81611c44565b8114611e7857600080fd5b50565b611e8481611c50565b8114611e8f57600080fd5b50565b611e9b81611c82565b8114611ea657600080fd5b5056fea26469706673582212205768544075d85a56b1d380f8fcc0c8829b8a656c656277c25c81c31608d9e4ef64736f6c63430008070033"; type ERC20CustodyConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/evm/Zeta.non-eth.sol/ZetaNonEth__factory.ts b/typechain-types/factories/contracts/evm/Zeta.non-eth.sol/ZetaNonEth__factory.ts index ad15d6b2..a641e18a 100644 --- a/typechain-types/factories/contracts/evm/Zeta.non-eth.sol/ZetaNonEth__factory.ts +++ b/typechain-types/factories/contracts/evm/Zeta.non-eth.sol/ZetaNonEth__factory.ts @@ -124,6 +124,25 @@ const _abi = [ name: "Burnt", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "callerAddress", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "newConnectorAddress", + type: "address", + }, + ], + name: "ConnectorAddressUpdated", + type: "event", + }, { anonymous: false, inputs: [ @@ -149,6 +168,44 @@ const _abi = [ name: "Minted", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "callerAddress", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "newTssAddress", + type: "address", + }, + ], + name: "TSSAddressUpdated", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "callerAddress", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "newTssUpdaterAddress", + type: "address", + }, + ], + name: "TSSAddressUpdaterUpdated", + type: "event", + }, { anonymous: false, inputs: [ @@ -515,7 +572,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60806040523480156200001157600080fd5b506040516200232d3803806200232d8339818101604052810190620000379190620002c8565b6040518060400160405280600481526020017f5a657461000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5a455441000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000bb92919062000201565b508060049080519060200190620000d492919062000201565b505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806200013f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000177576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620003c7565b8280546200020f9062000343565b90600052602060002090601f0160209004810192826200023357600085556200027f565b82601f106200024e57805160ff19168380011785556200027f565b828001600101855582156200027f579182015b828111156200027e57825182559160200191906001019062000261565b5b5090506200028e919062000292565b5090565b5b80821115620002ad57600081600090555060010162000293565b5090565b600081519050620002c281620003ad565b92915050565b60008060408385031215620002e257620002e1620003a8565b5b6000620002f285828601620002b1565b92505060206200030585828601620002b1565b9150509250929050565b60006200031c8262000323565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060028204905060018216806200035c57607f821691505b6020821081141562000373576200037262000379565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b620003b8816200030f565b8114620003c457600080fd5b50565b611f5680620003d76000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806342966c68116100ad57806395d89b411161007157806395d89b41146102f6578063a457c2d714610314578063a9059cbb14610344578063bff9662a14610374578063dd62ed3e1461039257610121565b806342966c68146102665780635b1125911461028257806370a08231146102a0578063779e3b63146102d057806379cc6790146102da57610121565b80631e458bee116100f45780631e458bee146101ae57806323b872dd146101ca578063313ce567146101fa578063328a01d014610218578063395093511461023657610121565b806306fdde0314610126578063095ea7b31461014457806315d57fd41461017457806318160ddd14610190575b600080fd5b61012e6103c2565b60405161013b91906118cf565b60405180910390f35b61015e60048036038101906101599190611606565b610454565b60405161016b91906118b4565b60405180910390f35b61018e60048036038101906101899190611573565b610477565b005b610198610689565b6040516101a59190611a31565b60405180910390f35b6101c860048036038101906101c39190611646565b610693565b005b6101e460048036038101906101df91906115b3565b610783565b6040516101f191906118b4565b60405180910390f35b6102026107b2565b60405161020f9190611a4c565b60405180910390f35b6102206107bb565b60405161022d9190611899565b60405180910390f35b610250600480360381019061024b9190611606565b6107e1565b60405161025d91906118b4565b60405180910390f35b610280600480360381019061027b9190611699565b610818565b005b61028a61082c565b6040516102979190611899565b60405180910390f35b6102ba60048036038101906102b59190611546565b610852565b6040516102c79190611a31565b60405180910390f35b6102d861089a565b005b6102f460048036038101906102ef9190611606565b610a1a565b005b6102fe610b08565b60405161030b91906118cf565b60405180910390f35b61032e60048036038101906103299190611606565b610b9a565b60405161033b91906118b4565b60405180910390f35b61035e60048036038101906103599190611606565b610c11565b60405161036b91906118b4565b60405180910390f35b61037c610c34565b6040516103899190611899565b60405180910390f35b6103ac60048036038101906103a79190611573565b610c5a565b6040516103b99190611a31565b60405180910390f35b6060600380546103d190611b6b565b80601f01602080910402602001604051908101604052809291908181526020018280546103fd90611b6b565b801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b5050505050905090565b60008061045f610ce1565b905061046c818585610ce9565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156105235750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561056557336040517fcdfcef9700000000000000000000000000000000000000000000000000000000815260040161055c9190611899565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806105cc5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15610603576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6000600254905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461072557336040517f3fe32fba00000000000000000000000000000000000000000000000000000000815260040161071c9190611899565b60405180910390fd5b61072f8383610eb4565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb846040516107769190611a31565b60405180910390a3505050565b60008061078e610ce1565b905061079b85828561100b565b6107a6858585611097565b60019150509392505050565b60006012905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806107ec610ce1565b905061080d8185856107fe8589610c5a565b6108089190611a83565b610ce9565b600191505092915050565b610829610823610ce1565b8261130f565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461092c57336040517fe700765e0000000000000000000000000000000000000000000000000000000081526004016109239190611899565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156109b5576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610aac57336040517f3fe32fba000000000000000000000000000000000000000000000000000000008152600401610aa39190611899565b60405180910390fd5b610ab682826114dd565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b182604051610afc9190611a31565b60405180910390a25050565b606060048054610b1790611b6b565b80601f0160208091040260200160405190810160405280929190818152602001828054610b4390611b6b565b8015610b905780601f10610b6557610100808354040283529160200191610b90565b820191906000526020600020905b815481529060010190602001808311610b7357829003601f168201915b5050505050905090565b600080610ba5610ce1565b90506000610bb38286610c5a565b905083811015610bf8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bef906119f1565b60405180910390fd5b610c058286868403610ce9565b60019250505092915050565b600080610c1c610ce1565b9050610c29818585611097565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610d59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d50906119d1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610dc9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dc090611931565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610ea79190611a31565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1b90611a11565b60405180910390fd5b610f30600083836114fd565b8060026000828254610f429190611a83565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610ff39190611a31565b60405180910390a361100760008383611502565b5050565b60006110178484610c5a565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146110915781811015611083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161107a90611951565b60405180910390fd5b6110908484848403610ce9565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611107576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110fe906119b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116e906118f1565b60405180910390fd5b6111828383836114fd565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611208576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111ff90611971565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516112f69190611a31565b60405180910390a3611309848484611502565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561137f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137690611991565b60405180910390fd5b61138b826000836114fd565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611411576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140890611911565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516114c49190611a31565b60405180910390a36114d883600084611502565b505050565b6114ef826114e9610ce1565b8361100b565b6114f9828261130f565b5050565b505050565b505050565b60008135905061151681611edb565b92915050565b60008135905061152b81611ef2565b92915050565b60008135905061154081611f09565b92915050565b60006020828403121561155c5761155b611bfb565b5b600061156a84828501611507565b91505092915050565b6000806040838503121561158a57611589611bfb565b5b600061159885828601611507565b92505060206115a985828601611507565b9150509250929050565b6000806000606084860312156115cc576115cb611bfb565b5b60006115da86828701611507565b93505060206115eb86828701611507565b92505060406115fc86828701611531565b9150509250925092565b6000806040838503121561161d5761161c611bfb565b5b600061162b85828601611507565b925050602061163c85828601611531565b9150509250929050565b60008060006060848603121561165f5761165e611bfb565b5b600061166d86828701611507565b935050602061167e86828701611531565b925050604061168f8682870161151c565b9150509250925092565b6000602082840312156116af576116ae611bfb565b5b60006116bd84828501611531565b91505092915050565b6116cf81611ad9565b82525050565b6116de81611aeb565b82525050565b60006116ef82611a67565b6116f98185611a72565b9350611709818560208601611b38565b61171281611c00565b840191505092915050565b600061172a602383611a72565b915061173582611c11565b604082019050919050565b600061174d602283611a72565b915061175882611c60565b604082019050919050565b6000611770602283611a72565b915061177b82611caf565b604082019050919050565b6000611793601d83611a72565b915061179e82611cfe565b602082019050919050565b60006117b6602683611a72565b91506117c182611d27565b604082019050919050565b60006117d9602183611a72565b91506117e482611d76565b604082019050919050565b60006117fc602583611a72565b915061180782611dc5565b604082019050919050565b600061181f602483611a72565b915061182a82611e14565b604082019050919050565b6000611842602583611a72565b915061184d82611e63565b604082019050919050565b6000611865601f83611a72565b915061187082611eb2565b602082019050919050565b61188481611b21565b82525050565b61189381611b2b565b82525050565b60006020820190506118ae60008301846116c6565b92915050565b60006020820190506118c960008301846116d5565b92915050565b600060208201905081810360008301526118e981846116e4565b905092915050565b6000602082019050818103600083015261190a8161171d565b9050919050565b6000602082019050818103600083015261192a81611740565b9050919050565b6000602082019050818103600083015261194a81611763565b9050919050565b6000602082019050818103600083015261196a81611786565b9050919050565b6000602082019050818103600083015261198a816117a9565b9050919050565b600060208201905081810360008301526119aa816117cc565b9050919050565b600060208201905081810360008301526119ca816117ef565b9050919050565b600060208201905081810360008301526119ea81611812565b9050919050565b60006020820190508181036000830152611a0a81611835565b9050919050565b60006020820190508181036000830152611a2a81611858565b9050919050565b6000602082019050611a46600083018461187b565b92915050565b6000602082019050611a61600083018461188a565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611a8e82611b21565b9150611a9983611b21565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611ace57611acd611b9d565b5b828201905092915050565b6000611ae482611b01565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611b56578082015181840152602081019050611b3b565b83811115611b65576000848401525b50505050565b60006002820490506001821680611b8357607f821691505b60208210811415611b9757611b96611bcc565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b611ee481611ad9565b8114611eef57600080fd5b50565b611efb81611af7565b8114611f0657600080fd5b50565b611f1281611b21565b8114611f1d57600080fd5b5056fea2646970667358221220e6c31d1e8e5d7d9467dfc1dacee3e76de948e1c1ed1770d8f43d63115d42d9f064736f6c63430008070033"; + "0x60806040523480156200001157600080fd5b5060405162002423380380620024238339818101604052810190620000379190620002c8565b6040518060400160405280600481526020017f5a657461000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f5a455441000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000bb92919062000201565b508060049080519060200190620000d492919062000201565b505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806200013f5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000177576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050620003c7565b8280546200020f9062000343565b90600052602060002090601f0160209004810192826200023357600085556200027f565b82601f106200024e57805160ff19168380011785556200027f565b828001600101855582156200027f579182015b828111156200027e57825182559160200191906001019062000261565b5b5090506200028e919062000292565b5090565b5b80821115620002ad57600081600090555060010162000293565b5090565b600081519050620002c281620003ad565b92915050565b60008060408385031215620002e257620002e1620003a8565b5b6000620002f285828601620002b1565b92505060206200030585828601620002b1565b9150509250929050565b60006200031c8262000323565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600060028204905060018216806200035c57607f821691505b6020821081141562000373576200037262000379565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b620003b8816200030f565b8114620003c457600080fd5b50565b61204c80620003d76000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c806342966c68116100ad57806395d89b411161007157806395d89b41146102f6578063a457c2d714610314578063a9059cbb14610344578063bff9662a14610374578063dd62ed3e1461039257610121565b806342966c68146102665780635b1125911461028257806370a08231146102a0578063779e3b63146102d057806379cc6790146102da57610121565b80631e458bee116100f45780631e458bee146101ae57806323b872dd146101ca578063313ce567146101fa578063328a01d014610218578063395093511461023657610121565b806306fdde0314610126578063095ea7b31461014457806315d57fd41461017457806318160ddd14610190575b600080fd5b61012e6103c2565b60405161013b91906119c5565b60405180910390f35b61015e600480360381019061015991906116d3565b610454565b60405161016b91906119aa565b60405180910390f35b61018e60048036038101906101899190611640565b610477565b005b6101986106fb565b6040516101a59190611b27565b60405180910390f35b6101c860048036038101906101c39190611713565b610705565b005b6101e460048036038101906101df9190611680565b6107f5565b6040516101f191906119aa565b60405180910390f35b610202610824565b60405161020f9190611b42565b60405180910390f35b61022061082d565b60405161022d9190611966565b60405180910390f35b610250600480360381019061024b91906116d3565b610853565b60405161025d91906119aa565b60405180910390f35b610280600480360381019061027b9190611766565b61088a565b005b61028a61089e565b6040516102979190611966565b60405180910390f35b6102ba60048036038101906102b59190611613565b6108c4565b6040516102c79190611b27565b60405180910390f35b6102d861090c565b005b6102f460048036038101906102ef91906116d3565b610ae7565b005b6102fe610bd5565b60405161030b91906119c5565b60405180910390f35b61032e600480360381019061032991906116d3565b610c67565b60405161033b91906119aa565b60405180910390f35b61035e600480360381019061035991906116d3565b610cde565b60405161036b91906119aa565b60405180910390f35b61037c610d01565b6040516103899190611966565b60405180910390f35b6103ac60048036038101906103a79190611640565b610d27565b6040516103b99190611b27565b60405180910390f35b6060600380546103d190611c61565b80601f01602080910402602001604051908101604052809291908181526020018280546103fd90611c61565b801561044a5780601f1061041f5761010080835404028352916020019161044a565b820191906000526020600020905b81548152906001019060200180831161042d57829003601f168201915b5050505050905090565b60008061045f610dae565b905061046c818585610db6565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156105235750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561056557336040517fcdfcef9700000000000000000000000000000000000000000000000000000000815260040161055c9190611966565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806105cc5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b15610603576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff33836040516106b6929190611981565b60405180910390a17f1b9352454524a57a51f24f67dc66d898f616922cd1f7a12d73570ece12b1975c33826040516106ef929190611981565b60405180910390a15050565b6000600254905090565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461079757336040517f3fe32fba00000000000000000000000000000000000000000000000000000000815260040161078e9190611966565b60405180910390fd5b6107a18383610f81565b808373ffffffffffffffffffffffffffffffffffffffff167fc263b302aec62d29105026245f19e16f8e0137066ccd4a8bd941f716bd4096bb846040516107e89190611b27565b60405180910390a3505050565b600080610800610dae565b905061080d8582856110d8565b610818858585611164565b60019150509392505050565b60006012905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008061085e610dae565b905061087f8185856108708589610d27565b61087a9190611b79565b610db6565b600191505092915050565b61089b610895610dae565b826113dc565b50565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461099e57336040517fe700765e0000000000000000000000000000000000000000000000000000000081526004016109959190611966565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610a27576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610add929190611981565b60405180910390a1565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b7957336040517f3fe32fba000000000000000000000000000000000000000000000000000000008152600401610b709190611966565b60405180910390fd5b610b8382826115aa565b8173ffffffffffffffffffffffffffffffffffffffff167f919f7e2092ffcc9d09f599be18d8152860b0c054df788a33bc549cdd9d0f15b182604051610bc99190611b27565b60405180910390a25050565b606060048054610be490611c61565b80601f0160208091040260200160405190810160405280929190818152602001828054610c1090611c61565b8015610c5d5780601f10610c3257610100808354040283529160200191610c5d565b820191906000526020600020905b815481529060010190602001808311610c4057829003601f168201915b5050505050905090565b600080610c72610dae565b90506000610c808286610d27565b905083811015610cc5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cbc90611ae7565b60405180910390fd5b610cd28286868403610db6565b60019250505092915050565b600080610ce9610dae565b9050610cf6818585611164565b600191505092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610e26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1d90611ac7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d90611a27565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610f749190611b27565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610ff1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fe890611b07565b60405180910390fd5b610ffd600083836115ca565b806002600082825461100f9190611b79565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516110c09190611b27565b60405180910390a36110d4600083836115cf565b5050565b60006110e48484610d27565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461115e5781811015611150576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161114790611a47565b60405180910390fd5b61115d8484848403610db6565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb90611aa7565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611244576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123b906119e7565b60405180910390fd5b61124f8383836115ca565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156112d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112cc90611a67565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113c39190611b27565b60405180910390a36113d68484846115cf565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561144c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144390611a87565b60405180910390fd5b611458826000836115ca565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d590611a07565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115919190611b27565b60405180910390a36115a5836000846115cf565b505050565b6115bc826115b6610dae565b836110d8565b6115c682826113dc565b5050565b505050565b505050565b6000813590506115e381611fd1565b92915050565b6000813590506115f881611fe8565b92915050565b60008135905061160d81611fff565b92915050565b60006020828403121561162957611628611cf1565b5b6000611637848285016115d4565b91505092915050565b6000806040838503121561165757611656611cf1565b5b6000611665858286016115d4565b9250506020611676858286016115d4565b9150509250929050565b60008060006060848603121561169957611698611cf1565b5b60006116a7868287016115d4565b93505060206116b8868287016115d4565b92505060406116c9868287016115fe565b9150509250925092565b600080604083850312156116ea576116e9611cf1565b5b60006116f8858286016115d4565b9250506020611709858286016115fe565b9150509250929050565b60008060006060848603121561172c5761172b611cf1565b5b600061173a868287016115d4565b935050602061174b868287016115fe565b925050604061175c868287016115e9565b9150509250925092565b60006020828403121561177c5761177b611cf1565b5b600061178a848285016115fe565b91505092915050565b61179c81611bcf565b82525050565b6117ab81611be1565b82525050565b60006117bc82611b5d565b6117c68185611b68565b93506117d6818560208601611c2e565b6117df81611cf6565b840191505092915050565b60006117f7602383611b68565b915061180282611d07565b604082019050919050565b600061181a602283611b68565b915061182582611d56565b604082019050919050565b600061183d602283611b68565b915061184882611da5565b604082019050919050565b6000611860601d83611b68565b915061186b82611df4565b602082019050919050565b6000611883602683611b68565b915061188e82611e1d565b604082019050919050565b60006118a6602183611b68565b91506118b182611e6c565b604082019050919050565b60006118c9602583611b68565b91506118d482611ebb565b604082019050919050565b60006118ec602483611b68565b91506118f782611f0a565b604082019050919050565b600061190f602583611b68565b915061191a82611f59565b604082019050919050565b6000611932601f83611b68565b915061193d82611fa8565b602082019050919050565b61195181611c17565b82525050565b61196081611c21565b82525050565b600060208201905061197b6000830184611793565b92915050565b60006040820190506119966000830185611793565b6119a36020830184611793565b9392505050565b60006020820190506119bf60008301846117a2565b92915050565b600060208201905081810360008301526119df81846117b1565b905092915050565b60006020820190508181036000830152611a00816117ea565b9050919050565b60006020820190508181036000830152611a208161180d565b9050919050565b60006020820190508181036000830152611a4081611830565b9050919050565b60006020820190508181036000830152611a6081611853565b9050919050565b60006020820190508181036000830152611a8081611876565b9050919050565b60006020820190508181036000830152611aa081611899565b9050919050565b60006020820190508181036000830152611ac0816118bc565b9050919050565b60006020820190508181036000830152611ae0816118df565b9050919050565b60006020820190508181036000830152611b0081611902565b9050919050565b60006020820190508181036000830152611b2081611925565b9050919050565b6000602082019050611b3c6000830184611948565b92915050565b6000602082019050611b576000830184611957565b92915050565b600081519050919050565b600082825260208201905092915050565b6000611b8482611c17565b9150611b8f83611c17565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611bc457611bc3611c93565b5b828201905092915050565b6000611bda82611bf7565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015611c4c578082015181840152602081019050611c31565b83811115611c5b576000848401525b50505050565b60006002820490506001821680611c7957607f821691505b60208210811415611c8d57611c8c611cc2565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b611fda81611bcf565b8114611fe557600080fd5b50565b611ff181611bed565b8114611ffc57600080fd5b50565b61200881611c17565b811461201357600080fd5b5056fea2646970667358221220bd1393fae79c8d0bb84c13332f8c58d8b5424cb9fb90b304c7162b49e7360c6f64736f6c63430008070033"; type ZetaNonEthConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/evm/ZetaConnector.base.sol/ZetaConnectorBase__factory.ts b/typechain-types/factories/contracts/evm/ZetaConnector.base.sol/ZetaConnectorBase__factory.ts index beb31f2c..19a3a48d 100644 --- a/typechain-types/factories/contracts/evm/ZetaConnector.base.sol/ZetaConnectorBase__factory.ts +++ b/typechain-types/factories/contracts/evm/ZetaConnector.base.sol/ZetaConnectorBase__factory.ts @@ -120,7 +120,7 @@ const _abi = [ { indexed: false, internalType: "address", - name: "updaterAddress", + name: "callerAddress", type: "address", }, { @@ -139,7 +139,7 @@ const _abi = [ { indexed: false, internalType: "address", - name: "zetaTxSenderAddress", + name: "callerAddress", type: "address", }, { @@ -152,6 +152,25 @@ const _abi = [ name: "TSSAddressUpdated", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "callerAddress", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "newTssUpdaterAddress", + type: "address", + }, + ], + name: "TSSAddressUpdaterUpdated", + type: "event", + }, { anonymous: false, inputs: [ @@ -553,7 +572,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523480156200001157600080fd5b50604051620012c3380380620012c383398181016040528101906200003791906200027c565b60008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000b95750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000f15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001295750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000161576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000341565b600081519050620002768162000327565b92915050565b6000806000806080858703121562000299576200029862000322565b5b6000620002a98782880162000265565b9450506020620002bc8782880162000265565b9350506040620002cf8782880162000265565b9250506060620002e28782880162000265565b91505092959194509250565b6000620002fb8262000302565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200033281620002ee565b81146200033e57600080fd5b50565b60805160601c610f636200036060003960006102160152610f636000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636128480f1161008c5780639122c344116100665780639122c344146101a2578063942a5e16146101be578063ec026901146101da578063f7fb869b146101f6576100cf565b80636128480f14610172578063779e3b631461018e5780638456cb5914610198576100cf565b806321e093b1146100d457806329dd214d146100f2578063328a01d01461010e5780633f4ba83a1461012c5780635b112591146101365780635c975abb14610154575b600080fd5b6100dc610214565b6040516100e99190610d76565b60405180910390f35b61010c60048036038101906101079190610bfa565b610238565b005b610116610242565b6040516101239190610d76565b60405180910390f35b610134610268565b005b61013e610304565b60405161014b9190610d76565b60405180910390f35b61015c61032a565b6040516101699190610dba565b60405180910390f35b61018c60048036038101906101879190610aeb565b610340565b005b6101966104b6565b005b6101a0610636565b005b6101bc60048036038101906101b79190610aeb565b6106d2565b005b6101d860048036038101906101d39190610b18565b6108a4565b005b6101f460048036038101906101ef9190610cc9565b6108af565b005b6101fe6108b2565b60405161020b9190610d76565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b5050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102fa57336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016102f19190610d76565b60405180910390fd5b6103026108d8565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103d257336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016103c99190610d76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610439576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d039733826040516104ab929190610d91565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461054857336040517fe700765e00000000000000000000000000000000000000000000000000000000815260040161053f9190610d76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105d1576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106c857336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016106bf9190610d76565b60405180910390fd5b6106d061093a565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561077e5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b156107c057336040517fcdfcef970000000000000000000000000000000000000000000000000000000081526004016107b79190610d76565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610827576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610899929190610d91565b60405180910390a150565b505050505050505050565b50565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6108e061099c565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6109236109e5565b6040516109309190610d76565b60405180910390a1565b6109426109ed565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586109856109e5565b6040516109929190610d76565b60405180910390a1565b6109a461032a565b6109e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109da90610dd5565b60405180910390fd5b565b600033905090565b6109f561032a565b15610a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2c90610df5565b60405180910390fd5b565b600081359050610a4681610ee8565b92915050565b600081359050610a5b81610eff565b92915050565b60008083601f840112610a7757610a76610e7d565b5b8235905067ffffffffffffffff811115610a9457610a93610e78565b5b602083019150836001820283011115610ab057610aaf610e87565b5b9250929050565b600060c08284031215610acd57610acc610e82565b5b81905092915050565b600081359050610ae581610f16565b92915050565b600060208284031215610b0157610b00610e91565b5b6000610b0f84828501610a37565b91505092915050565b600080600080600080600080600060e08a8c031215610b3a57610b39610e91565b5b6000610b488c828d01610a37565b9950506020610b598c828d01610ad6565b98505060408a013567ffffffffffffffff811115610b7a57610b79610e8c565b5b610b868c828d01610a61565b97509750506060610b998c828d01610ad6565b9550506080610baa8c828d01610ad6565b94505060a08a013567ffffffffffffffff811115610bcb57610bca610e8c565b5b610bd78c828d01610a61565b935093505060c0610bea8c828d01610a4c565b9150509295985092959850929598565b60008060008060008060008060c0898b031215610c1a57610c19610e91565b5b600089013567ffffffffffffffff811115610c3857610c37610e8c565b5b610c448b828c01610a61565b98509850506020610c578b828c01610ad6565b9650506040610c688b828c01610a37565b9550506060610c798b828c01610ad6565b945050608089013567ffffffffffffffff811115610c9a57610c99610e8c565b5b610ca68b828c01610a61565b935093505060a0610cb98b828c01610a4c565b9150509295985092959890939650565b600060208284031215610cdf57610cde610e91565b5b600082013567ffffffffffffffff811115610cfd57610cfc610e8c565b5b610d0984828501610ab7565b91505092915050565b610d1b81610e26565b82525050565b610d2a81610e38565b82525050565b6000610d3d601483610e15565b9150610d4882610e96565b602082019050919050565b6000610d60601083610e15565b9150610d6b82610ebf565b602082019050919050565b6000602082019050610d8b6000830184610d12565b92915050565b6000604082019050610da66000830185610d12565b610db36020830184610d12565b9392505050565b6000602082019050610dcf6000830184610d21565b92915050565b60006020820190508181036000830152610dee81610d30565b9050919050565b60006020820190508181036000830152610e0e81610d53565b9050919050565b600082825260208201905092915050565b6000610e3182610e4e565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b610ef181610e26565b8114610efc57600080fd5b50565b610f0881610e44565b8114610f1357600080fd5b50565b610f1f81610e6e565b8114610f2a57600080fd5b5056fea2646970667358221220edc61135d1f12b7a435fc47ff359e2af4895e4c9526a3c1884344fcc790d316a64736f6c63430008070033"; + "0x60a06040523480156200001157600080fd5b506040516200131e3803806200131e83398181016040528101906200003791906200027c565b60008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000b95750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000f15750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001295750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000161576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000341565b600081519050620002768162000327565b92915050565b6000806000806080858703121562000299576200029862000322565b5b6000620002a98782880162000265565b9450506020620002bc8782880162000265565b9350506040620002cf8782880162000265565b9250506060620002e28782880162000265565b91505092959194509250565b6000620002fb8262000302565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200033281620002ee565b81146200033e57600080fd5b50565b60805160601c610fbe6200036060003960006102160152610fbe6000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636128480f1161008c5780639122c344116100665780639122c344146101a2578063942a5e16146101be578063ec026901146101da578063f7fb869b146101f6576100cf565b80636128480f14610172578063779e3b631461018e5780638456cb5914610198576100cf565b806321e093b1146100d457806329dd214d146100f2578063328a01d01461010e5780633f4ba83a1461012c5780635b112591146101365780635c975abb14610154575b600080fd5b6100dc610214565b6040516100e99190610dd1565b60405180910390f35b61010c60048036038101906101079190610c55565b610238565b005b610116610242565b6040516101239190610dd1565b60405180910390f35b610134610268565b005b61013e610304565b60405161014b9190610dd1565b60405180910390f35b61015c61032a565b6040516101699190610e15565b60405180910390f35b61018c60048036038101906101879190610b46565b610340565b005b6101966104b6565b005b6101a0610691565b005b6101bc60048036038101906101b79190610b46565b61072d565b005b6101d860048036038101906101d39190610b73565b6108ff565b005b6101f460048036038101906101ef9190610d24565b61090a565b005b6101fe61090d565b60405161020b9190610dd1565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b5050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146102fa57336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016102f19190610dd1565b60405180910390fd5b610302610933565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103d257336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016103c99190610dd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610439576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d039733826040516104ab929190610dec565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461054857336040517fe700765e00000000000000000000000000000000000000000000000000000000815260040161053f9190610dd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156105d1576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610687929190610dec565b60405180910390a1565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461072357336040517f4677a0d300000000000000000000000000000000000000000000000000000000815260040161071a9190610dd1565b60405180910390fd5b61072b610995565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156107d95750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b1561081b57336040517fcdfcef970000000000000000000000000000000000000000000000000000000081526004016108129190610dd1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610882576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff33826040516108f4929190610dec565b60405180910390a150565b505050505050505050565b50565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61093b6109f7565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61097e610a40565b60405161098b9190610dd1565b60405180910390a1565b61099d610a48565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586109e0610a40565b6040516109ed9190610dd1565b60405180910390a1565b6109ff61032a565b610a3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a3590610e30565b60405180910390fd5b565b600033905090565b610a5061032a565b15610a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8790610e50565b60405180910390fd5b565b600081359050610aa181610f43565b92915050565b600081359050610ab681610f5a565b92915050565b60008083601f840112610ad257610ad1610ed8565b5b8235905067ffffffffffffffff811115610aef57610aee610ed3565b5b602083019150836001820283011115610b0b57610b0a610ee2565b5b9250929050565b600060c08284031215610b2857610b27610edd565b5b81905092915050565b600081359050610b4081610f71565b92915050565b600060208284031215610b5c57610b5b610eec565b5b6000610b6a84828501610a92565b91505092915050565b600080600080600080600080600060e08a8c031215610b9557610b94610eec565b5b6000610ba38c828d01610a92565b9950506020610bb48c828d01610b31565b98505060408a013567ffffffffffffffff811115610bd557610bd4610ee7565b5b610be18c828d01610abc565b97509750506060610bf48c828d01610b31565b9550506080610c058c828d01610b31565b94505060a08a013567ffffffffffffffff811115610c2657610c25610ee7565b5b610c328c828d01610abc565b935093505060c0610c458c828d01610aa7565b9150509295985092959850929598565b60008060008060008060008060c0898b031215610c7557610c74610eec565b5b600089013567ffffffffffffffff811115610c9357610c92610ee7565b5b610c9f8b828c01610abc565b98509850506020610cb28b828c01610b31565b9650506040610cc38b828c01610a92565b9550506060610cd48b828c01610b31565b945050608089013567ffffffffffffffff811115610cf557610cf4610ee7565b5b610d018b828c01610abc565b935093505060a0610d148b828c01610aa7565b9150509295985092959890939650565b600060208284031215610d3a57610d39610eec565b5b600082013567ffffffffffffffff811115610d5857610d57610ee7565b5b610d6484828501610b12565b91505092915050565b610d7681610e81565b82525050565b610d8581610e93565b82525050565b6000610d98601483610e70565b9150610da382610ef1565b602082019050919050565b6000610dbb601083610e70565b9150610dc682610f1a565b602082019050919050565b6000602082019050610de66000830184610d6d565b92915050565b6000604082019050610e016000830185610d6d565b610e0e6020830184610d6d565b9392505050565b6000602082019050610e2a6000830184610d7c565b92915050565b60006020820190508181036000830152610e4981610d8b565b9050919050565b60006020820190508181036000830152610e6981610dae565b9050919050565b600082825260208201905092915050565b6000610e8c82610ea9565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b610f4c81610e81565b8114610f5757600080fd5b50565b610f6381610e9f565b8114610f6e57600080fd5b50565b610f7a81610ec9565b8114610f8557600080fd5b5056fea26469706673582212208fd8c8de0fa8c6d7ce42d081250a53e2ae3a7e5119c9670a0fb1d03e1c81c2c264736f6c63430008070033"; type ZetaConnectorBaseConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth__factory.ts b/typechain-types/factories/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth__factory.ts index d7861b94..2142fb42 100644 --- a/typechain-types/factories/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth__factory.ts +++ b/typechain-types/factories/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth__factory.ts @@ -120,7 +120,7 @@ const _abi = [ { indexed: false, internalType: "address", - name: "updaterAddress", + name: "callerAddress", type: "address", }, { @@ -139,7 +139,7 @@ const _abi = [ { indexed: false, internalType: "address", - name: "zetaTxSenderAddress", + name: "callerAddress", type: "address", }, { @@ -152,6 +152,25 @@ const _abi = [ name: "TSSAddressUpdated", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "callerAddress", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "newTssUpdaterAddress", + type: "address", + }, + ], + name: "TSSAddressUpdaterUpdated", + type: "event", + }, { anonymous: false, inputs: [ @@ -566,7 +585,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523480156200001157600080fd5b506040516200208b3803806200208b833981810160405281019062000037919062000284565b8383838360008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000bd5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000f55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806200012d5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000165576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050505062000349565b6000815190506200027e816200032f565b92915050565b60008060008060808587031215620002a157620002a06200032a565b5b6000620002b1878288016200026d565b9450506020620002c4878288016200026d565b9350506040620002d7878288016200026d565b9250506060620002ea878288016200026d565b91505092959194509250565b600062000303826200030a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200033a81620002f6565b81146200034657600080fd5b50565b60805160601c611d07620003846000396000818161024f01528181610275015281816103b701528181610d3a0152610fbd0152611d076000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636128480f1161008c5780639122c344116100665780639122c344146101db578063942a5e16146101f7578063ec02690114610213578063f7fb869b1461022f576100ea565b80636128480f146101ab578063779e3b63146101c75780638456cb59146101d1576100ea565b8063328a01d0116100c8578063328a01d0146101475780633f4ba83a146101655780635b1125911461016f5780635c975abb1461018d576100ea565b806321e093b1146100ef578063252bc8861461010d57806329dd214d1461012b575b600080fd5b6100f761024d565b6040516101049190611828565b60405180910390f35b610115610271565b6040516101229190611a95565b60405180910390f35b610145600480360381019061014091906114df565b610321565b005b61014f61063a565b60405161015c9190611828565b60405180910390f35b61016d610660565b005b6101776106fc565b6040516101849190611828565b60405180910390f35b610195610722565b6040516101a291906119ad565b60405180910390f35b6101c560048036038101906101c091906113a3565b610738565b005b6101cf6108ae565b005b6101d9610a2e565b005b6101f560048036038101906101f091906113a3565b610aca565b005b610211600480360381019061020c91906113d0565b610c9c565b005b61022d600480360381019061022891906115ae565b610fb1565b005b610237611140565b6040516102449190611828565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016102cc9190611828565b60206040518083038186803b1580156102e457600080fd5b505afa1580156102f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031c91906115f7565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b357336040517fff70ace20000000000000000000000000000000000000000000000000000000081526004016103aa9190611828565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87876040518363ffffffff1660e01b815260040161041092919061191f565b602060405180830381600087803b15801561042a57600080fd5b505af115801561043e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046291906114b2565b90508061049b576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008484905011156105d7578573ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018a81526020018973ffffffffffffffffffffffffffffffffffffffff16815260200188815260200187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016105a49190611a51565b600060405180830381600087803b1580156105be57600080fd5b505af11580156105d2573d6000803e3d6000fd5b505050505b818673ffffffffffffffffffffffffffffffffffffffff16887ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988c8c8a8a8a6040516106279594939291906119c8565b60405180910390a4505050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f257336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016106e99190611828565b60405180910390fd5b6106fa611166565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107ca57336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016107c19190611828565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610831576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d039733826040516108a3929190611843565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461094057336040517fe700765e0000000000000000000000000000000000000000000000000000000081526004016109379190611828565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156109c9576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ac057336040517f4677a0d3000000000000000000000000000000000000000000000000000000008152600401610ab79190611828565b60405180910390fd5b610ac86111c8565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610b765750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610bb857336040517fcdfcef97000000000000000000000000000000000000000000000000000000008152600401610baf9190611828565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c1f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610c91929190611843565b60405180910390a150565b610ca461122a565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d3657336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610d2d9190611828565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8b876040518363ffffffff1660e01b8152600401610d9392919061191f565b602060405180830381600087803b158015610dad57600080fd5b505af1158015610dc1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610de591906114b2565b905080610e1e576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848490501115610f60578973ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c81526020018b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200189815260200188815260200187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b8152600401610f2d9190611a73565b600060405180830381600087803b158015610f4757600080fd5b505af1158015610f5b573d6000803e3d6000fd5b505050505b81867f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888c8c8c8c8b8b8b604051610f9d9796959493929190611948565b60405180910390a350505050505050505050565b610fb961122a565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd333085608001356040518463ffffffff1660e01b815260040161101c9392919061186c565b602060405180830381600087803b15801561103657600080fd5b505af115801561104a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061106e91906114b2565b9050806110a7576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4328580602001906110f59190611ab0565b8760800135886040013589806060019061110f9190611ab0565b8b8060a0019061111f9190611ab0565b604051611134999897969594939291906118a3565b60405180910390a35050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61116e611274565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6111b16112bd565b6040516111be9190611828565b60405180910390a1565b6111d061122a565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586112136112bd565b6040516112209190611828565b60405180910390a1565b611232610722565b15611272576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126990611a31565b60405180910390fd5b565b61127c610722565b6112bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b290611a11565b60405180910390fd5b565b600033905090565b6000813590506112d481611c75565b92915050565b6000815190506112e981611c8c565b92915050565b6000813590506112fe81611ca3565b92915050565b60008083601f84011261131a57611319611bea565b5b8235905067ffffffffffffffff81111561133757611336611be5565b5b60208301915083600182028301111561135357611352611bfe565b5b9250929050565b600060c082840312156113705761136f611bf4565b5b81905092915050565b60008135905061138881611cba565b92915050565b60008151905061139d81611cba565b92915050565b6000602082840312156113b9576113b8611c0d565b5b60006113c7848285016112c5565b91505092915050565b600080600080600080600080600060e08a8c0312156113f2576113f1611c0d565b5b60006114008c828d016112c5565b99505060206114118c828d01611379565b98505060408a013567ffffffffffffffff81111561143257611431611c08565b5b61143e8c828d01611304565b975097505060606114518c828d01611379565b95505060806114628c828d01611379565b94505060a08a013567ffffffffffffffff81111561148357611482611c08565b5b61148f8c828d01611304565b935093505060c06114a28c828d016112ef565b9150509295985092959850929598565b6000602082840312156114c8576114c7611c0d565b5b60006114d6848285016112da565b91505092915050565b60008060008060008060008060c0898b0312156114ff576114fe611c0d565b5b600089013567ffffffffffffffff81111561151d5761151c611c08565b5b6115298b828c01611304565b9850985050602061153c8b828c01611379565b965050604061154d8b828c016112c5565b955050606061155e8b828c01611379565b945050608089013567ffffffffffffffff81111561157f5761157e611c08565b5b61158b8b828c01611304565b935093505060a061159e8b828c016112ef565b9150509295985092959890939650565b6000602082840312156115c4576115c3611c0d565b5b600082013567ffffffffffffffff8111156115e2576115e1611c08565b5b6115ee8482850161135a565b91505092915050565b60006020828403121561160d5761160c611c0d565b5b600061161b8482850161138e565b91505092915050565b61162d81611b51565b82525050565b61163c81611b51565b82525050565b61164b81611b63565b82525050565b600061165d8385611b2f565b935061166a838584611ba3565b61167383611c12565b840190509392505050565b600061168982611b13565b6116938185611b1e565b93506116a3818560208601611bb2565b6116ac81611c12565b840191505092915050565b60006116c4601483611b40565b91506116cf82611c23565b602082019050919050565b60006116e7601083611b40565b91506116f282611c4c565b602082019050919050565b600060a083016000830151848203600086015261171a828261167e565b915050602083015161172f602086018261180a565b5060408301516117426040860182611624565b506060830151611755606086018261180a565b506080830151848203608086015261176d828261167e565b9150508091505092915050565b600060c0830160008301516117926000860182611624565b5060208301516117a5602086018261180a565b50604083015184820360408601526117bd828261167e565b91505060608301516117d2606086018261180a565b5060808301516117e5608086018261180a565b5060a083015184820360a08601526117fd828261167e565b9150508091505092915050565b61181381611b99565b82525050565b61182281611b99565b82525050565b600060208201905061183d6000830184611633565b92915050565b60006040820190506118586000830185611633565b6118656020830184611633565b9392505050565b60006060820190506118816000830186611633565b61188e6020830185611633565b61189b6040830184611819565b949350505050565b600060c0820190506118b8600083018c611633565b81810360208301526118cb818a8c611651565b90506118da6040830189611819565b6118e76060830188611819565b81810360808301526118fa818688611651565b905081810360a083015261190f818486611651565b90509a9950505050505050505050565b60006040820190506119346000830185611633565b6119416020830184611819565b9392505050565b600060a08201905061195d600083018a611633565b61196a6020830189611819565b818103604083015261197d818789611651565b905061198c6060830186611819565b818103608083015261199f818486611651565b905098975050505050505050565b60006020820190506119c26000830184611642565b92915050565b600060608201905081810360008301526119e3818789611651565b90506119f26020830186611819565b8181036040830152611a05818486611651565b90509695505050505050565b60006020820190508181036000830152611a2a816116b7565b9050919050565b60006020820190508181036000830152611a4a816116da565b9050919050565b60006020820190508181036000830152611a6b81846116fd565b905092915050565b60006020820190508181036000830152611a8d818461177a565b905092915050565b6000602082019050611aaa6000830184611819565b92915050565b60008083356001602003843603038112611acd57611acc611bf9565b5b80840192508235915067ffffffffffffffff821115611aef57611aee611bef565b5b602083019250600182023603831315611b0b57611b0a611c03565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611b5c82611b79565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611bd0578082015181840152602081019050611bb5565b83811115611bdf576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b611c7e81611b51565b8114611c8957600080fd5b50565b611c9581611b63565b8114611ca057600080fd5b50565b611cac81611b6f565b8114611cb757600080fd5b50565b611cc381611b99565b8114611cce57600080fd5b5056fea26469706673582212204212370b667f98941ae9f4db5ec4402967fd7a411891babfcc828517bfa25a2464736f6c63430008070033"; + "0x60a06040523480156200001157600080fd5b50604051620020e6380380620020e6833981810160405281019062000037919062000284565b8383838360008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000bd5750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620000f55750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806200012d5750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000165576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050505050505062000349565b6000815190506200027e816200032f565b92915050565b60008060008060808587031215620002a157620002a06200032a565b5b6000620002b1878288016200026d565b9450506020620002c4878288016200026d565b9350506040620002d7878288016200026d565b9250506060620002ea878288016200026d565b91505092959194509250565b600062000303826200030a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200033a81620002f6565b81146200034657600080fd5b50565b60805160601c611d62620003846000396000818161024f01528181610275015281816103b701528181610d9501526110180152611d626000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636128480f1161008c5780639122c344116100665780639122c344146101db578063942a5e16146101f7578063ec02690114610213578063f7fb869b1461022f576100ea565b80636128480f146101ab578063779e3b63146101c75780638456cb59146101d1576100ea565b8063328a01d0116100c8578063328a01d0146101475780633f4ba83a146101655780635b1125911461016f5780635c975abb1461018d576100ea565b806321e093b1146100ef578063252bc8861461010d57806329dd214d1461012b575b600080fd5b6100f761024d565b6040516101049190611883565b60405180910390f35b610115610271565b6040516101229190611af0565b60405180910390f35b6101456004803603810190610140919061153a565b610321565b005b61014f61063a565b60405161015c9190611883565b60405180910390f35b61016d610660565b005b6101776106fc565b6040516101849190611883565b60405180910390f35b610195610722565b6040516101a29190611a08565b60405180910390f35b6101c560048036038101906101c091906113fe565b610738565b005b6101cf6108ae565b005b6101d9610a89565b005b6101f560048036038101906101f091906113fe565b610b25565b005b610211600480360381019061020c919061142b565b610cf7565b005b61022d60048036038101906102289190611609565b61100c565b005b61023761119b565b6040516102449190611883565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016102cc9190611883565b60206040518083038186803b1580156102e457600080fd5b505afa1580156102f8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061031c9190611652565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146103b357336040517fff70ace20000000000000000000000000000000000000000000000000000000081526004016103aa9190611883565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87876040518363ffffffff1660e01b815260040161041092919061197a565b602060405180830381600087803b15801561042a57600080fd5b505af115801561043e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610462919061150d565b90508061049b576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008484905011156105d7578573ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018a81526020018973ffffffffffffffffffffffffffffffffffffffff16815260200188815260200187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016105a49190611aac565b600060405180830381600087803b1580156105be57600080fd5b505af11580156105d2573d6000803e3d6000fd5b505050505b818673ffffffffffffffffffffffffffffffffffffffff16887ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988c8c8a8a8a604051610627959493929190611a23565b60405180910390a4505050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106f257336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016106e99190611883565b60405180910390fd5b6106fa6111c1565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107ca57336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016107c19190611883565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610831576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d039733826040516108a392919061189e565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461094057336040517fe700765e0000000000000000000000000000000000000000000000000000000081526004016109379190611883565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156109c9576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610a7f92919061189e565b60405180910390a1565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b1b57336040517f4677a0d3000000000000000000000000000000000000000000000000000000008152600401610b129190611883565b60405180910390fd5b610b23611223565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610bd15750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610c1357336040517fcdfcef97000000000000000000000000000000000000000000000000000000008152600401610c0a9190611883565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c7a576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610cec92919061189e565b60405180910390a150565b610cff611285565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d9157336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610d889190611883565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8b876040518363ffffffff1660e01b8152600401610dee92919061197a565b602060405180830381600087803b158015610e0857600080fd5b505af1158015610e1c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e40919061150d565b905080610e79576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000848490501115610fbb578973ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808d73ffffffffffffffffffffffffffffffffffffffff1681526020018c81526020018b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200189815260200188815260200187878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b8152600401610f889190611ace565b600060405180830381600087803b158015610fa257600080fd5b505af1158015610fb6573d6000803e3d6000fd5b505050505b81867f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888c8c8c8c8b8b8b604051610ff897969594939291906119a3565b60405180910390a350505050505050505050565b611014611285565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd333085608001356040518463ffffffff1660e01b8152600401611077939291906118c7565b602060405180830381600087803b15801561109157600080fd5b505af11580156110a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110c9919061150d565b905080611102576040517f20878f6200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4328580602001906111509190611b0b565b8760800135886040013589806060019061116a9190611b0b565b8b8060a0019061117a9190611b0b565b60405161118f999897969594939291906118fe565b60405180910390a35050565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6111c96112cf565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61120c611318565b6040516112199190611883565b60405180910390a1565b61122b611285565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861126e611318565b60405161127b9190611883565b60405180910390a1565b61128d610722565b156112cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112c490611a8c565b60405180910390fd5b565b6112d7610722565b611316576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130d90611a6c565b60405180910390fd5b565b600033905090565b60008135905061132f81611cd0565b92915050565b60008151905061134481611ce7565b92915050565b60008135905061135981611cfe565b92915050565b60008083601f84011261137557611374611c45565b5b8235905067ffffffffffffffff81111561139257611391611c40565b5b6020830191508360018202830111156113ae576113ad611c59565b5b9250929050565b600060c082840312156113cb576113ca611c4f565b5b81905092915050565b6000813590506113e381611d15565b92915050565b6000815190506113f881611d15565b92915050565b60006020828403121561141457611413611c68565b5b600061142284828501611320565b91505092915050565b600080600080600080600080600060e08a8c03121561144d5761144c611c68565b5b600061145b8c828d01611320565b995050602061146c8c828d016113d4565b98505060408a013567ffffffffffffffff81111561148d5761148c611c63565b5b6114998c828d0161135f565b975097505060606114ac8c828d016113d4565b95505060806114bd8c828d016113d4565b94505060a08a013567ffffffffffffffff8111156114de576114dd611c63565b5b6114ea8c828d0161135f565b935093505060c06114fd8c828d0161134a565b9150509295985092959850929598565b60006020828403121561152357611522611c68565b5b600061153184828501611335565b91505092915050565b60008060008060008060008060c0898b03121561155a57611559611c68565b5b600089013567ffffffffffffffff81111561157857611577611c63565b5b6115848b828c0161135f565b985098505060206115978b828c016113d4565b96505060406115a88b828c01611320565b95505060606115b98b828c016113d4565b945050608089013567ffffffffffffffff8111156115da576115d9611c63565b5b6115e68b828c0161135f565b935093505060a06115f98b828c0161134a565b9150509295985092959890939650565b60006020828403121561161f5761161e611c68565b5b600082013567ffffffffffffffff81111561163d5761163c611c63565b5b611649848285016113b5565b91505092915050565b60006020828403121561166857611667611c68565b5b6000611676848285016113e9565b91505092915050565b61168881611bac565b82525050565b61169781611bac565b82525050565b6116a681611bbe565b82525050565b60006116b88385611b8a565b93506116c5838584611bfe565b6116ce83611c6d565b840190509392505050565b60006116e482611b6e565b6116ee8185611b79565b93506116fe818560208601611c0d565b61170781611c6d565b840191505092915050565b600061171f601483611b9b565b915061172a82611c7e565b602082019050919050565b6000611742601083611b9b565b915061174d82611ca7565b602082019050919050565b600060a083016000830151848203600086015261177582826116d9565b915050602083015161178a6020860182611865565b50604083015161179d604086018261167f565b5060608301516117b06060860182611865565b50608083015184820360808601526117c882826116d9565b9150508091505092915050565b600060c0830160008301516117ed600086018261167f565b5060208301516118006020860182611865565b506040830151848203604086015261181882826116d9565b915050606083015161182d6060860182611865565b5060808301516118406080860182611865565b5060a083015184820360a086015261185882826116d9565b9150508091505092915050565b61186e81611bf4565b82525050565b61187d81611bf4565b82525050565b6000602082019050611898600083018461168e565b92915050565b60006040820190506118b3600083018561168e565b6118c0602083018461168e565b9392505050565b60006060820190506118dc600083018661168e565b6118e9602083018561168e565b6118f66040830184611874565b949350505050565b600060c082019050611913600083018c61168e565b8181036020830152611926818a8c6116ac565b90506119356040830189611874565b6119426060830188611874565b81810360808301526119558186886116ac565b905081810360a083015261196a8184866116ac565b90509a9950505050505050505050565b600060408201905061198f600083018561168e565b61199c6020830184611874565b9392505050565b600060a0820190506119b8600083018a61168e565b6119c56020830189611874565b81810360408301526119d88187896116ac565b90506119e76060830186611874565b81810360808301526119fa8184866116ac565b905098975050505050505050565b6000602082019050611a1d600083018461169d565b92915050565b60006060820190508181036000830152611a3e8187896116ac565b9050611a4d6020830186611874565b8181036040830152611a608184866116ac565b90509695505050505050565b60006020820190508181036000830152611a8581611712565b9050919050565b60006020820190508181036000830152611aa581611735565b9050919050565b60006020820190508181036000830152611ac68184611758565b905092915050565b60006020820190508181036000830152611ae881846117d5565b905092915050565b6000602082019050611b056000830184611874565b92915050565b60008083356001602003843603038112611b2857611b27611c54565b5b80840192508235915067ffffffffffffffff821115611b4a57611b49611c4a565b5b602083019250600182023603831315611b6657611b65611c5e565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611bb782611bd4565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611c2b578082015181840152602081019050611c10565b83811115611c3a576000848401525b50505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b611cd981611bac565b8114611ce457600080fd5b50565b611cf081611bbe565b8114611cfb57600080fd5b50565b611d0781611bca565b8114611d1257600080fd5b50565b611d1e81611bf4565b8114611d2957600080fd5b5056fea2646970667358221220c386ec06beb54bf2f1fa9d6ebdcbce1a2c994b9dc5c90038fe0d0a4b8174e1ea64736f6c63430008070033"; type ZetaConnectorEthConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth__factory.ts b/typechain-types/factories/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth__factory.ts index 6f31c5c9..efb72cbd 100644 --- a/typechain-types/factories/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth__factory.ts +++ b/typechain-types/factories/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth__factory.ts @@ -101,6 +101,25 @@ const _abi = [ name: "ZetaTransferError", type: "error", }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "callerAddress", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "newMaxSupply", + type: "uint256", + }, + ], + name: "MaxSupplyUpdated", + type: "event", + }, { anonymous: false, inputs: [ @@ -120,7 +139,7 @@ const _abi = [ { indexed: false, internalType: "address", - name: "updaterAddress", + name: "callerAddress", type: "address", }, { @@ -139,7 +158,7 @@ const _abi = [ { indexed: false, internalType: "address", - name: "zetaTxSenderAddress", + name: "callerAddress", type: "address", }, { @@ -152,6 +171,25 @@ const _abi = [ name: "TSSAddressUpdated", type: "event", }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "callerAddress", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "newTssUpdaterAddress", + type: "address", + }, + ], + name: "TSSAddressUpdaterUpdated", + type: "event", + }, { anonymous: false, inputs: [ @@ -592,7 +630,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003553480156200003557600080fd5b50604051620022e7380380620022e783398181016040528101906200005b9190620002a8565b8383838360008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000e15750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620001195750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001515750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000189576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050506200036d565b600081519050620002a28162000353565b92915050565b60008060008060808587031215620002c557620002c46200034e565b5b6000620002d58782880162000291565b9450506020620002e88782880162000291565b9350506040620002fb8782880162000291565b92505060606200030e8782880162000291565b91505092959194509250565b600062000327826200032e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200035e816200031a565b81146200036a57600080fd5b50565b60805160601c611f31620003b66000396000818161029f015281816102c501528181610408015281816104f601528181610ebe01528181610fac01526111db0152611f316000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80636f8b44b011610097578063942a5e1611610066578063942a5e1614610229578063d5abeb0114610245578063ec02690114610263578063f7fb869b1461027f57610100565b80636f8b44b0146101dd578063779e3b63146101f95780638456cb59146102035780639122c3441461020d57610100565b80633f4ba83a116100d35780633f4ba83a1461017b5780635b112591146101855780635c975abb146101a35780636128480f146101c157610100565b806321e093b114610105578063252bc8861461012357806329dd214d14610141578063328a01d01461015d575b600080fd5b61010d61029d565b60405161011a91906119e4565b60405180910390f35b61012b6102c1565b6040516101389190611c51565b60405180910390f35b61015b6004803603810190610156919061165f565b610371565b005b610165610721565b60405161017291906119e4565b60405180910390f35b610183610747565b005b61018d6107e3565b60405161019a91906119e4565b60405180910390f35b6101ab610809565b6040516101b89190611b69565b60405180910390f35b6101db60048036038101906101d69190611550565b61081f565b005b6101f760048036038101906101f29190611777565b610995565b005b610201610a31565b005b61020b610bb1565b005b61022760048036038101906102229190611550565b610c4d565b005b610243600480360381019061023e919061157d565b610e1f565b005b61024d6111cb565b60405161025a9190611c51565b60405180910390f35b61027d6004803603810190610278919061172e565b6111d1565b005b610287611302565b60405161029491906119e4565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161031c91906119e4565b60206040518083038186803b15801561033457600080fd5b505afa158015610348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036c91906117a4565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461040357336040517fff70ace20000000000000000000000000000000000000000000000000000000081526004016103fa91906119e4565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561046c57600080fd5b505afa158015610480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a491906117a4565b856104af9190611d0d565b11156104f4576003546040517f3d3dbc830000000000000000000000000000000000000000000000000000000081526004016104eb9190611c51565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8686846040518463ffffffff1660e01b815260040161055193929190611acd565b600060405180830381600087803b15801561056b57600080fd5b505af115801561057f573d6000803e3d6000fd5b5050505060008383905011156106bf578473ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018981526020018873ffffffffffffffffffffffffffffffffffffffff16815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b815260040161068c9190611c0d565b600060405180830381600087803b1580156106a657600080fd5b505af11580156106ba573d6000803e3d6000fd5b505050505b808573ffffffffffffffffffffffffffffffffffffffff16877ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988b8b89898960405161070f959493929190611b84565b60405180910390a45050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d957336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016107d091906119e4565b60405180910390fd5b6107e1611328565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b157336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016108a891906119e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610918576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397338260405161098a9291906119ff565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a2757336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610a1e91906119e4565b60405180910390fd5b8060038190555050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ac357336040517fe700765e000000000000000000000000000000000000000000000000000000008152600401610aba91906119e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610b4c576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c4357336040517f4677a0d3000000000000000000000000000000000000000000000000000000008152600401610c3a91906119e4565b60405180910390fd5b610c4b61138a565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610cf95750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610d3b57336040517fcdfcef97000000000000000000000000000000000000000000000000000000008152600401610d3291906119e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610da2576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610e149291906119ff565b60405180910390a150565b610e276113ec565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610eb957336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610eb091906119e4565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f2257600080fd5b505afa158015610f36573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5a91906117a4565b85610f659190611d0d565b1115610faa576003546040517f3d3dbc83000000000000000000000000000000000000000000000000000000008152600401610fa19190611c51565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8a86846040518463ffffffff1660e01b815260040161100793929190611acd565b600060405180830381600087803b15801561102157600080fd5b505af1158015611035573d6000803e3d6000fd5b50505050600083839050111561117b578873ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200188815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016111489190611c2f565b600060405180830381600087803b15801561116257600080fd5b505af1158015611176573d6000803e3d6000fd5b505050505b80857f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888b8b8b8b8a8a8a6040516111b89796959493929190611b04565b60405180910390a3505050505050505050565b60035481565b6111d96113ec565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc67903383608001356040518363ffffffff1660e01b8152600401611238929190611aa4565b600060405180830381600087803b15801561125257600080fd5b505af1158015611266573d6000803e3d6000fd5b5050505080600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e4328480602001906112b89190611c6c565b866080013587604001358880606001906112d29190611c6c565b8a8060a001906112e29190611c6c565b6040516112f799989796959493929190611a28565b60405180910390a350565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611330611436565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61137361147f565b60405161138091906119e4565b60405180910390a1565b6113926113ec565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113d561147f565b6040516113e291906119e4565b60405180910390a1565b6113f4610809565b15611434576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142b90611bed565b60405180910390fd5b565b61143e610809565b61147d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147490611bcd565b60405180910390fd5b565b600033905090565b60008135905061149681611eb6565b92915050565b6000813590506114ab81611ecd565b92915050565b60008083601f8401126114c7576114c6611e2b565b5b8235905067ffffffffffffffff8111156114e4576114e3611e26565b5b602083019150836001820283011115611500576114ff611e3f565b5b9250929050565b600060c0828403121561151d5761151c611e35565b5b81905092915050565b60008135905061153581611ee4565b92915050565b60008151905061154a81611ee4565b92915050565b60006020828403121561156657611565611e4e565b5b600061157484828501611487565b91505092915050565b600080600080600080600080600060e08a8c03121561159f5761159e611e4e565b5b60006115ad8c828d01611487565b99505060206115be8c828d01611526565b98505060408a013567ffffffffffffffff8111156115df576115de611e49565b5b6115eb8c828d016114b1565b975097505060606115fe8c828d01611526565b955050608061160f8c828d01611526565b94505060a08a013567ffffffffffffffff8111156116305761162f611e49565b5b61163c8c828d016114b1565b935093505060c061164f8c828d0161149c565b9150509295985092959850929598565b60008060008060008060008060c0898b03121561167f5761167e611e4e565b5b600089013567ffffffffffffffff81111561169d5761169c611e49565b5b6116a98b828c016114b1565b985098505060206116bc8b828c01611526565b96505060406116cd8b828c01611487565b95505060606116de8b828c01611526565b945050608089013567ffffffffffffffff8111156116ff576116fe611e49565b5b61170b8b828c016114b1565b935093505060a061171e8b828c0161149c565b9150509295985092959890939650565b60006020828403121561174457611743611e4e565b5b600082013567ffffffffffffffff81111561176257611761611e49565b5b61176e84828501611507565b91505092915050565b60006020828403121561178d5761178c611e4e565b5b600061179b84828501611526565b91505092915050565b6000602082840312156117ba576117b9611e4e565b5b60006117c88482850161153b565b91505092915050565b6117da81611d63565b82525050565b6117e981611d63565b82525050565b6117f881611d75565b82525050565b61180781611d81565b82525050565b60006118198385611ceb565b9350611826838584611db5565b61182f83611e53565b840190509392505050565b600061184582611ccf565b61184f8185611cda565b935061185f818560208601611dc4565b61186881611e53565b840191505092915050565b6000611880601483611cfc565b915061188b82611e64565b602082019050919050565b60006118a3601083611cfc565b91506118ae82611e8d565b602082019050919050565b600060a08301600083015184820360008601526118d6828261183a565b91505060208301516118eb60208601826119c6565b5060408301516118fe60408601826117d1565b50606083015161191160608601826119c6565b5060808301518482036080860152611929828261183a565b9150508091505092915050565b600060c08301600083015161194e60008601826117d1565b50602083015161196160208601826119c6565b5060408301518482036040860152611979828261183a565b915050606083015161198e60608601826119c6565b5060808301516119a160808601826119c6565b5060a083015184820360a08601526119b9828261183a565b9150508091505092915050565b6119cf81611dab565b82525050565b6119de81611dab565b82525050565b60006020820190506119f960008301846117e0565b92915050565b6000604082019050611a1460008301856117e0565b611a2160208301846117e0565b9392505050565b600060c082019050611a3d600083018c6117e0565b8181036020830152611a50818a8c61180d565b9050611a5f60408301896119d5565b611a6c60608301886119d5565b8181036080830152611a7f81868861180d565b905081810360a0830152611a9481848661180d565b90509a9950505050505050505050565b6000604082019050611ab960008301856117e0565b611ac660208301846119d5565b9392505050565b6000606082019050611ae260008301866117e0565b611aef60208301856119d5565b611afc60408301846117fe565b949350505050565b600060a082019050611b19600083018a6117e0565b611b2660208301896119d5565b8181036040830152611b3981878961180d565b9050611b4860608301866119d5565b8181036080830152611b5b81848661180d565b905098975050505050505050565b6000602082019050611b7e60008301846117ef565b92915050565b60006060820190508181036000830152611b9f81878961180d565b9050611bae60208301866119d5565b8181036040830152611bc181848661180d565b90509695505050505050565b60006020820190508181036000830152611be681611873565b9050919050565b60006020820190508181036000830152611c0681611896565b9050919050565b60006020820190508181036000830152611c2781846118b9565b905092915050565b60006020820190508181036000830152611c498184611936565b905092915050565b6000602082019050611c6660008301846119d5565b92915050565b60008083356001602003843603038112611c8957611c88611e3a565b5b80840192508235915067ffffffffffffffff821115611cab57611caa611e30565b5b602083019250600182023603831315611cc757611cc6611e44565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611d1882611dab565b9150611d2383611dab565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611d5857611d57611df7565b5b828201905092915050565b6000611d6e82611d8b565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611de2578082015181840152602081019050611dc7565b83811115611df1576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b611ebf81611d63565b8114611eca57600080fd5b50565b611ed681611d81565b8114611ee157600080fd5b50565b611eed81611dab565b8114611ef857600080fd5b5056fea2646970667358221220c11d22456151e214afa4dba7f444fab940bb567cc77b10c43f8e26b0c63df50264736f6c63430008070033"; + "0x60a06040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6003553480156200003557600080fd5b506040516200237b3803806200237b83398181016040528101906200005b9190620002a8565b8383838360008060006101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480620000e15750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80620001195750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80620001515750600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b1562000189576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b8152505082600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050506200036d565b600081519050620002a28162000353565b92915050565b60008060008060808587031215620002c557620002c46200034e565b5b6000620002d58782880162000291565b9450506020620002e88782880162000291565b9350506040620002fb8782880162000291565b92505060606200030e8782880162000291565b91505092959194509250565b600062000327826200032e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200035e816200031a565b81146200036a57600080fd5b50565b60805160601c611fc5620003b66000396000818161029f015281816102c501528181610408015281816104f601528181610f5201528181611040015261126f0152611fc56000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80636f8b44b011610097578063942a5e1611610066578063942a5e1614610229578063d5abeb0114610245578063ec02690114610263578063f7fb869b1461027f57610100565b80636f8b44b0146101dd578063779e3b63146101f95780638456cb59146102035780639122c3441461020d57610100565b80633f4ba83a116100d35780633f4ba83a1461017b5780635b112591146101855780635c975abb146101a35780636128480f146101c157610100565b806321e093b114610105578063252bc8861461012357806329dd214d14610141578063328a01d01461015d575b600080fd5b61010d61029d565b60405161011a9190611a78565b60405180910390f35b61012b6102c1565b6040516101389190611ce5565b60405180910390f35b61015b600480360381019061015691906116f3565b610371565b005b610165610721565b6040516101729190611a78565b60405180910390f35b610183610747565b005b61018d6107e3565b60405161019a9190611a78565b60405180910390f35b6101ab610809565b6040516101b89190611bfd565b60405180910390f35b6101db60048036038101906101d691906115e4565b61081f565b005b6101f760048036038101906101f2919061180b565b610995565b005b610201610a6a565b005b61020b610c45565b005b610227600480360381019061022291906115e4565b610ce1565b005b610243600480360381019061023e9190611611565b610eb3565b005b61024d61125f565b60405161025a9190611ce5565b60405180910390f35b61027d600480360381019061027891906117c2565b611265565b005b610287611396565b6040516102949190611a78565b60405180910390f35b7f000000000000000000000000000000000000000000000000000000000000000081565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161031c9190611a78565b60206040518083038186803b15801561033457600080fd5b505afa158015610348573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061036c9190611838565b905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461040357336040517fff70ace20000000000000000000000000000000000000000000000000000000081526004016103fa9190611a78565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561046c57600080fd5b505afa158015610480573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104a49190611838565b856104af9190611da1565b11156104f4576003546040517f3d3dbc830000000000000000000000000000000000000000000000000000000081526004016104eb9190611ce5565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8686846040518463ffffffff1660e01b815260040161055193929190611b61565b600060405180830381600087803b15801561056b57600080fd5b505af115801561057f573d6000803e3d6000fd5b5050505060008383905011156106bf578473ffffffffffffffffffffffffffffffffffffffff16633749c51a6040518060a001604052808b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505081526020018981526020018873ffffffffffffffffffffffffffffffffffffffff16815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b815260040161068c9190611ca1565b600060405180830381600087803b1580156106a657600080fd5b505af11580156106ba573d6000803e3d6000fd5b505050505b808573ffffffffffffffffffffffffffffffffffffffff16877ff1302855733b40d8acb467ee990b6d56c05c80e28ebcabfa6e6f3f57cb50d6988b8b89898960405161070f959493929190611c18565b60405180910390a45050505050505050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107d957336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016107d09190611a78565b60405180910390fd5b6107e16113bc565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900460ff16905090565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108b157336040517f4677a0d30000000000000000000000000000000000000000000000000000000081526004016108a89190611a78565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610918576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd41d83655d484bdf299598751c371b2d92088667266fe3774b25a97bdd5d0397338260405161098a929190611a93565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610a2757336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610a1e9190611a78565b60405180910390fd5b806003819055507f26843c619c87f9021bcc4ec5143177198076d9da3c13ce1bb2e941644c69d42e3382604051610a5f929190611b38565b60405180910390a150565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610afc57336040517fe700765e000000000000000000000000000000000000000000000000000000008152600401610af39190611a78565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610b85576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f5104c9abdc7d111c2aeb4ce890ac70274a4be2ee83f46a62551be5e6ebc82dd033600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610c3b929190611a93565b60405180910390a1565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610cd757336040517f4677a0d3000000000000000000000000000000000000000000000000000000008152600401610cce9190611a78565b60405180910390fd5b610cdf61141e565b565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610d8d5750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610dcf57336040517fcdfcef97000000000000000000000000000000000000000000000000000000008152600401610dc69190611a78565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610e36576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fe79965b5c67dcfb2cf5fe152715e4a7256cee62a3d5dd8484fd8a8539eb8beff3382604051610ea8929190611a93565b60405180910390a150565b610ebb611480565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f4d57336040517fff70ace2000000000000000000000000000000000000000000000000000000008152600401610f449190611a78565b60405180910390fd5b6003547f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610fb657600080fd5b505afa158015610fca573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fee9190611838565b85610ff99190611da1565b111561103e576003546040517f3d3dbc830000000000000000000000000000000000000000000000000000000081526004016110359190611ce5565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631e458bee8a86846040518463ffffffff1660e01b815260040161109b93929190611b61565b600060405180830381600087803b1580156110b557600080fd5b505af11580156110c9573d6000803e3d6000fd5b50505050600083839050111561120f578873ffffffffffffffffffffffffffffffffffffffff16633ff0693c6040518060c001604052808c73ffffffffffffffffffffffffffffffffffffffff1681526020018b81526020018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050815260200188815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508152506040518263ffffffff1660e01b81526004016111dc9190611cc3565b600060405180830381600087803b1580156111f657600080fd5b505af115801561120a573d6000803e3d6000fd5b505050505b80857f521fb0b407c2eb9b1375530e9b9a569889992140a688bc076aa72c1712012c888b8b8b8b8a8a8a60405161124c9796959493929190611b98565b60405180910390a3505050505050505050565b60035481565b61126d611480565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166379cc67903383608001356040518363ffffffff1660e01b81526004016112cc929190611b38565b600060405180830381600087803b1580156112e657600080fd5b505af11580156112fa573d6000803e3d6000fd5b5050505080600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e43284806020019061134c9190611d00565b866080013587604001358880606001906113669190611d00565b8a8060a001906113769190611d00565b60405161138b99989796959493929190611abc565b60405180910390a350565b600060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6113c46114ca565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa611407611513565b6040516114149190611a78565b60405180910390a1565b611426611480565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258611469611513565b6040516114769190611a78565b60405180910390a1565b611488610809565b156114c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bf90611c81565b60405180910390fd5b565b6114d2610809565b611511576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150890611c61565b60405180910390fd5b565b600033905090565b60008135905061152a81611f4a565b92915050565b60008135905061153f81611f61565b92915050565b60008083601f84011261155b5761155a611ebf565b5b8235905067ffffffffffffffff81111561157857611577611eba565b5b60208301915083600182028301111561159457611593611ed3565b5b9250929050565b600060c082840312156115b1576115b0611ec9565b5b81905092915050565b6000813590506115c981611f78565b92915050565b6000815190506115de81611f78565b92915050565b6000602082840312156115fa576115f9611ee2565b5b60006116088482850161151b565b91505092915050565b600080600080600080600080600060e08a8c03121561163357611632611ee2565b5b60006116418c828d0161151b565b99505060206116528c828d016115ba565b98505060408a013567ffffffffffffffff81111561167357611672611edd565b5b61167f8c828d01611545565b975097505060606116928c828d016115ba565b95505060806116a38c828d016115ba565b94505060a08a013567ffffffffffffffff8111156116c4576116c3611edd565b5b6116d08c828d01611545565b935093505060c06116e38c828d01611530565b9150509295985092959850929598565b60008060008060008060008060c0898b03121561171357611712611ee2565b5b600089013567ffffffffffffffff81111561173157611730611edd565b5b61173d8b828c01611545565b985098505060206117508b828c016115ba565b96505060406117618b828c0161151b565b95505060606117728b828c016115ba565b945050608089013567ffffffffffffffff81111561179357611792611edd565b5b61179f8b828c01611545565b935093505060a06117b28b828c01611530565b9150509295985092959890939650565b6000602082840312156117d8576117d7611ee2565b5b600082013567ffffffffffffffff8111156117f6576117f5611edd565b5b6118028482850161159b565b91505092915050565b60006020828403121561182157611820611ee2565b5b600061182f848285016115ba565b91505092915050565b60006020828403121561184e5761184d611ee2565b5b600061185c848285016115cf565b91505092915050565b61186e81611df7565b82525050565b61187d81611df7565b82525050565b61188c81611e09565b82525050565b61189b81611e15565b82525050565b60006118ad8385611d7f565b93506118ba838584611e49565b6118c383611ee7565b840190509392505050565b60006118d982611d63565b6118e38185611d6e565b93506118f3818560208601611e58565b6118fc81611ee7565b840191505092915050565b6000611914601483611d90565b915061191f82611ef8565b602082019050919050565b6000611937601083611d90565b915061194282611f21565b602082019050919050565b600060a083016000830151848203600086015261196a82826118ce565b915050602083015161197f6020860182611a5a565b5060408301516119926040860182611865565b5060608301516119a56060860182611a5a565b50608083015184820360808601526119bd82826118ce565b9150508091505092915050565b600060c0830160008301516119e26000860182611865565b5060208301516119f56020860182611a5a565b5060408301518482036040860152611a0d82826118ce565b9150506060830151611a226060860182611a5a565b506080830151611a356080860182611a5a565b5060a083015184820360a0860152611a4d82826118ce565b9150508091505092915050565b611a6381611e3f565b82525050565b611a7281611e3f565b82525050565b6000602082019050611a8d6000830184611874565b92915050565b6000604082019050611aa86000830185611874565b611ab56020830184611874565b9392505050565b600060c082019050611ad1600083018c611874565b8181036020830152611ae4818a8c6118a1565b9050611af36040830189611a69565b611b006060830188611a69565b8181036080830152611b138186886118a1565b905081810360a0830152611b288184866118a1565b90509a9950505050505050505050565b6000604082019050611b4d6000830185611874565b611b5a6020830184611a69565b9392505050565b6000606082019050611b766000830186611874565b611b836020830185611a69565b611b906040830184611892565b949350505050565b600060a082019050611bad600083018a611874565b611bba6020830189611a69565b8181036040830152611bcd8187896118a1565b9050611bdc6060830186611a69565b8181036080830152611bef8184866118a1565b905098975050505050505050565b6000602082019050611c126000830184611883565b92915050565b60006060820190508181036000830152611c338187896118a1565b9050611c426020830186611a69565b8181036040830152611c558184866118a1565b90509695505050505050565b60006020820190508181036000830152611c7a81611907565b9050919050565b60006020820190508181036000830152611c9a8161192a565b9050919050565b60006020820190508181036000830152611cbb818461194d565b905092915050565b60006020820190508181036000830152611cdd81846119ca565b905092915050565b6000602082019050611cfa6000830184611a69565b92915050565b60008083356001602003843603038112611d1d57611d1c611ece565b5b80840192508235915067ffffffffffffffff821115611d3f57611d3e611ec4565b5b602083019250600182023603831315611d5b57611d5a611ed8565b5b509250929050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611dac82611e3f565b9150611db783611e3f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611dec57611deb611e8b565b5b828201905092915050565b6000611e0282611e1f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015611e76578082015181840152602081019050611e5b565b83811115611e85576000848401525b50505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b611f5381611df7565b8114611f5e57600080fd5b50565b611f6a81611e15565b8114611f7557600080fd5b50565b611f8181611e3f565b8114611f8c57600080fd5b5056fea2646970667358221220af09dec3099b33c22fceeb145766f8056225d0604e40f061de22f5e64b79e8b564736f6c63430008070033"; type ZetaConnectorNonEthConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/evm/testing/AttackerContract.sol/AttackerContract__factory.ts b/typechain-types/factories/contracts/evm/testing/AttackerContract.sol/AttackerContract__factory.ts new file mode 100644 index 00000000..ac4ab406 --- /dev/null +++ b/typechain-types/factories/contracts/evm/testing/AttackerContract.sol/AttackerContract__factory.ts @@ -0,0 +1,196 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + BigNumberish, + Overrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../../../common"; +import type { + AttackerContract, + AttackerContractInterface, +} from "../../../../../contracts/evm/testing/AttackerContract.sol/AttackerContract"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "victimContractAddress_", + type: "address", + }, + { + internalType: "address", + name: "wzeta", + type: "address", + }, + { + internalType: "uint256", + name: "victimMethod", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "victimContractAddress", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + stateMutability: "payable", + type: "receive", + }, +] as const; + +const _bytecode = + "0x60806040523480156200001157600080fd5b50604051620009ae380380620009ae8339818101604052810190620000379190620001a0565b826000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff1663095ea7b360008054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401620000f492919062000250565b602060405180830381600087803b1580156200010f57600080fd5b505af115801562000124573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200014a9190620001fc565b50806001819055505050506200031a565b6000815190506200016c81620002cc565b92915050565b6000815190506200018381620002e6565b92915050565b6000815190506200019a8162000300565b92915050565b600080600060608486031215620001bc57620001bb620002c7565b5b6000620001cc868287016200015b565b9350506020620001df868287016200015b565b9250506040620001f28682870162000189565b9150509250925092565b600060208284031215620002155762000214620002c7565b5b6000620002258482850162000172565b91505092915050565b62000239816200027d565b82525050565b6200024a81620002bd565b82525050565b60006040820190506200026760008301856200022e565b6200027660208301846200023f565b9392505050565b60006200028a826200029d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600080fd5b620002d7816200027d565b8114620002e357600080fd5b50565b620002f18162000291565b8114620002fd57600080fd5b50565b6200030b81620002bd565b81146200031757600080fd5b50565b610684806200032a6000396000f3fe6080604052600436106100435760003560e01c806323b872dd1461004f57806370a082311461008c57806389bc0bb7146100c9578063a9059cbb146100f45761004a565b3661004a57005b600080fd5b34801561005b57600080fd5b506100766004803603810190610071919061034c565b610131565b60405161008391906104b3565b60405180910390f35b34801561009857600080fd5b506100b360048036038101906100ae919061031f565b610146565b6040516100c0919061051d565b60405180910390f35b3480156100d557600080fd5b506100de610159565b6040516100eb9190610461565b60405180910390f35b34801561010057600080fd5b5061011b6004803603810190610116919061039f565b61017d565b60405161012891906104b3565b60405180910390f35b600061013b610191565b600190509392505050565b6000610150610191565b60009050919050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610187610191565b6001905092915050565b6001805414156101a8576101a36101bf565b6101bd565b600260015414156101bc576101bb61024f565b5b5b565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e609055e3060006040518363ffffffff1660e01b815260040161021b9291906104ce565b600060405180830381600087803b15801561023557600080fd5b505af1158015610249573d6000803e3d6000fd5b50505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d9caed1273f39fd6e51aad88f6f4ce6ab8827279cfffb922663060006040518463ffffffff1660e01b81526004016102c19392919061047c565b600060405180830381600087803b1580156102db57600080fd5b505af11580156102ef573d6000803e3d6000fd5b50505050565b60008135905061030481610620565b92915050565b60008135905061031981610637565b92915050565b600060208284031215610335576103346105a3565b5b6000610343848285016102f5565b91505092915050565b600080600060608486031215610365576103646105a3565b5b6000610373868287016102f5565b9350506020610384868287016102f5565b92505060406103958682870161030a565b9150509250925092565b600080604083850312156103b6576103b56105a3565b5b60006103c4858286016102f5565b92505060206103d58582860161030a565b9150509250929050565b6103e881610549565b82525050565b6103f78161055b565b82525050565b61040681610591565b82525050565b6000610419600483610538565b9150610424826105a8565b602082019050919050565b600061043c602a83610538565b9150610447826105d1565b604082019050919050565b61045b81610587565b82525050565b600060208201905061047660008301846103df565b92915050565b600060608201905061049160008301866103df565b61049e60208301856103df565b6104ab60408301846103fd565b949350505050565b60006020820190506104c860008301846103ee565b92915050565b600060808201905081810360008301526104e78161042f565b90506104f660208301856103df565b61050360408301846103fd565b81810360608301526105148161040c565b90509392505050565b60006020820190506105326000830184610452565b92915050565b600082825260208201905092915050565b600061055482610567565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061059c82610587565b9050919050565b600080fd5b7f3078303000000000000000000000000000000000000000000000000000000000600082015250565b7f307866333946643665353161616438384636463463653661423838323732373960008201527f6366664662393232363600000000000000000000000000000000000000000000602082015250565b61062981610549565b811461063457600080fd5b50565b61064081610587565b811461064b57600080fd5b5056fea264697066735822122075954d652b0eb8d814b91524c47a04c537d638cec0eda3ca0e4ee67767e1a37064736f6c63430008070033"; + +type AttackerContractConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: AttackerContractConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class AttackerContract__factory extends ContractFactory { + constructor(...args: AttackerContractConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + victimContractAddress_: PromiseOrValue, + wzeta: PromiseOrValue, + victimMethod: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + victimContractAddress_, + wzeta, + victimMethod, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + victimContractAddress_: PromiseOrValue, + wzeta: PromiseOrValue, + victimMethod: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction( + victimContractAddress_, + wzeta, + victimMethod, + overrides || {} + ); + } + override attach(address: string): AttackerContract { + return super.attach(address) as AttackerContract; + } + override connect(signer: Signer): AttackerContract__factory { + return super.connect(signer) as AttackerContract__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): AttackerContractInterface { + return new utils.Interface(_abi) as AttackerContractInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): AttackerContract { + return new Contract(address, _abi, signerOrProvider) as AttackerContract; + } +} diff --git a/typechain-types/factories/contracts/evm/testing/AttackerContract.sol/Victim__factory.ts b/typechain-types/factories/contracts/evm/testing/AttackerContract.sol/Victim__factory.ts new file mode 100644 index 00000000..f5c1ecf7 --- /dev/null +++ b/typechain-types/factories/contracts/evm/testing/AttackerContract.sol/Victim__factory.ts @@ -0,0 +1,74 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + Victim, + VictimInterface, +} from "../../../../../contracts/evm/testing/AttackerContract.sol/Victim"; + +const _abi = [ + { + inputs: [ + { + internalType: "bytes", + name: "recipient", + type: "bytes", + }, + { + internalType: "address", + name: "asset", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "message", + type: "bytes", + }, + ], + name: "deposit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "address", + name: "asset", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "withdraw", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class Victim__factory { + static readonly abi = _abi; + static createInterface(): VictimInterface { + return new utils.Interface(_abi) as VictimInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): Victim { + return new Contract(address, _abi, signerOrProvider) as Victim; + } +} diff --git a/typechain-types/factories/contracts/evm/testing/AttackerContract.sol/index.ts b/typechain-types/factories/contracts/evm/testing/AttackerContract.sol/index.ts new file mode 100644 index 00000000..61a3ee2a --- /dev/null +++ b/typechain-types/factories/contracts/evm/testing/AttackerContract.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { AttackerContract__factory } from "./AttackerContract__factory"; +export { Victim__factory } from "./Victim__factory"; diff --git a/typechain-types/factories/contracts/evm/testing/ERC20Mock__factory.ts b/typechain-types/factories/contracts/evm/testing/ERC20Mock__factory.ts new file mode 100644 index 00000000..342357d0 --- /dev/null +++ b/typechain-types/factories/contracts/evm/testing/ERC20Mock__factory.ts @@ -0,0 +1,386 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + BigNumberish, + Overrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../../common"; +import type { + ERC20Mock, + ERC20MockInterface, +} from "../../../../contracts/evm/testing/ERC20Mock"; + +const _abi = [ + { + inputs: [ + { + internalType: "string", + name: "name", + type: "string", + }, + { + internalType: "string", + name: "symbol", + type: "string", + }, + { + internalType: "address", + name: "creator", + type: "address", + }, + { + internalType: "uint256", + name: "initialSupply", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "decimals", + outputs: [ + { + internalType: "uint8", + name: "", + type: "uint8", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "subtractedValue", + type: "uint256", + }, + ], + name: "decreaseAllowance", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "addedValue", + type: "uint256", + }, + ], + name: "increaseAllowance", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "name", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "symbol", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +const _bytecode = + "0x60806040523480156200001157600080fd5b5060405162001beb38038062001beb833981810160405281019062000037919062000393565b838381600390805190602001906200005192919062000237565b5080600490805190602001906200006a92919062000237565b505050620000ac8262000082620000b660201b60201c565b60ff16600a620000939190620005e2565b83620000a091906200071f565b620000bf60201b60201c565b505050506200097c565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000132576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000129906200047b565b60405180910390fd5b62000146600083836200022d60201b60201c565b80600260008282546200015a91906200052a565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200020d91906200049d565b60405180910390a362000229600083836200023260201b60201c565b5050565b505050565b505050565b8280546200024590620007f4565b90600052602060002090601f016020900481019282620002695760008555620002b5565b82601f106200028457805160ff1916838001178555620002b5565b82800160010185558215620002b5579182015b82811115620002b457825182559160200191906001019062000297565b5b509050620002c49190620002c8565b5090565b5b80821115620002e3576000816000905550600101620002c9565b5090565b6000620002fe620002f884620004e3565b620004ba565b9050828152602081018484840111156200031d576200031c620008f2565b5b6200032a848285620007be565b509392505050565b600081519050620003438162000948565b92915050565b600082601f830112620003615762000360620008ed565b5b815162000373848260208601620002e7565b91505092915050565b6000815190506200038d8162000962565b92915050565b60008060008060808587031215620003b057620003af620008fc565b5b600085015167ffffffffffffffff811115620003d157620003d0620008f7565b5b620003df8782880162000349565b945050602085015167ffffffffffffffff811115620004035762000402620008f7565b5b620004118782880162000349565b9350506040620004248782880162000332565b925050606062000437878288016200037c565b91505092959194509250565b600062000452601f8362000519565b91506200045f826200091f565b602082019050919050565b6200047581620007b4565b82525050565b60006020820190508181036000830152620004968162000443565b9050919050565b6000602082019050620004b460008301846200046a565b92915050565b6000620004c6620004d9565b9050620004d482826200082a565b919050565b6000604051905090565b600067ffffffffffffffff821115620005015762000500620008be565b5b6200050c8262000901565b9050602081019050919050565b600082825260208201905092915050565b60006200053782620007b4565b91506200054483620007b4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156200057c576200057b62000860565b5b828201905092915050565b6000808291508390505b6001851115620005d957808604811115620005b157620005b062000860565b5b6001851615620005c15780820291505b8081029050620005d18562000912565b945062000591565b94509492505050565b6000620005ef82620007b4565b9150620005fc83620007b4565b92506200062b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000633565b905092915050565b60008262000645576001905062000718565b8162000655576000905062000718565b81600181146200066e57600281146200067957620006af565b600191505062000718565b60ff8411156200068e576200068d62000860565b5b8360020a915084821115620006a857620006a762000860565b5b5062000718565b5060208310610133831016604e8410600b8410161715620006e95782820a905083811115620006e357620006e262000860565b5b62000718565b620006f8848484600162000587565b9250905081840481111562000712576200071162000860565b5b81810290505b9392505050565b60006200072c82620007b4565b91506200073983620007b4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000775576200077462000860565b5b828202905092915050565b60006200078d8262000794565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b83811015620007de578082015181840152602081019050620007c1565b83811115620007ee576000848401525b50505050565b600060028204905060018216806200080d57607f821691505b602082108114156200082457620008236200088f565b5b50919050565b620008358262000901565b810181811067ffffffffffffffff82111715620008575762000856620008be565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b620009538162000780565b81146200095f57600080fd5b50565b6200096d81620007b4565b81146200097957600080fd5b50565b61125f806200098c6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461016857806370a082311461019857806395d89b41146101c8578063a457c2d7146101e6578063a9059cbb14610216578063dd62ed3e14610246576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100fc57806323b872dd1461011a578063313ce5671461014a575b600080fd5b6100b6610276565b6040516100c39190610d20565b60405180910390f35b6100e660048036038101906100e19190610b6a565b610308565b6040516100f39190610d05565b60405180910390f35b61010461032b565b6040516101119190610e22565b60405180910390f35b610134600480360381019061012f9190610b17565b610335565b6040516101419190610d05565b60405180910390f35b610152610364565b60405161015f9190610e3d565b60405180910390f35b610182600480360381019061017d9190610b6a565b61036d565b60405161018f9190610d05565b60405180910390f35b6101b260048036038101906101ad9190610aaa565b6103a4565b6040516101bf9190610e22565b60405180910390f35b6101d06103ec565b6040516101dd9190610d20565b60405180910390f35b61020060048036038101906101fb9190610b6a565b61047e565b60405161020d9190610d05565b60405180910390f35b610230600480360381019061022b9190610b6a565b6104f5565b60405161023d9190610d05565b60405180910390f35b610260600480360381019061025b9190610ad7565b610518565b60405161026d9190610e22565b60405180910390f35b60606003805461028590610f52565b80601f01602080910402602001604051908101604052809291908181526020018280546102b190610f52565b80156102fe5780601f106102d3576101008083540402835291602001916102fe565b820191906000526020600020905b8154815290600101906020018083116102e157829003601f168201915b5050505050905090565b60008061031361059f565b90506103208185856105a7565b600191505092915050565b6000600254905090565b60008061034061059f565b905061034d858285610772565b6103588585856107fe565b60019150509392505050565b60006012905090565b60008061037861059f565b905061039981858561038a8589610518565b6103949190610e74565b6105a7565b600191505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6060600480546103fb90610f52565b80601f016020809104026020016040519081016040528092919081815260200182805461042790610f52565b80156104745780601f1061044957610100808354040283529160200191610474565b820191906000526020600020905b81548152906001019060200180831161045757829003601f168201915b5050505050905090565b60008061048961059f565b905060006104978286610518565b9050838110156104dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104d390610e02565b60405180910390fd5b6104e982868684036105a7565b60019250505092915050565b60008061050061059f565b905061050d8185856107fe565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060e90610de2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415610687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067e90610d62565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516107659190610e22565b60405180910390a3505050565b600061077e8484610518565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146107f857818110156107ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e190610d82565b60405180910390fd5b6107f784848484036105a7565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561086e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086590610dc2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156108de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d590610d42565b60405180910390fd5b6108e9838383610a76565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561096f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161096690610da2565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610a5d9190610e22565b60405180910390a3610a70848484610a7b565b50505050565b505050565b505050565b600081359050610a8f816111fb565b92915050565b600081359050610aa481611212565b92915050565b600060208284031215610ac057610abf610fe2565b5b6000610ace84828501610a80565b91505092915050565b60008060408385031215610aee57610aed610fe2565b5b6000610afc85828601610a80565b9250506020610b0d85828601610a80565b9150509250929050565b600080600060608486031215610b3057610b2f610fe2565b5b6000610b3e86828701610a80565b9350506020610b4f86828701610a80565b9250506040610b6086828701610a95565b9150509250925092565b60008060408385031215610b8157610b80610fe2565b5b6000610b8f85828601610a80565b9250506020610ba085828601610a95565b9150509250929050565b610bb381610edc565b82525050565b6000610bc482610e58565b610bce8185610e63565b9350610bde818560208601610f1f565b610be781610fe7565b840191505092915050565b6000610bff602383610e63565b9150610c0a82610ff8565b604082019050919050565b6000610c22602283610e63565b9150610c2d82611047565b604082019050919050565b6000610c45601d83610e63565b9150610c5082611096565b602082019050919050565b6000610c68602683610e63565b9150610c73826110bf565b604082019050919050565b6000610c8b602583610e63565b9150610c968261110e565b604082019050919050565b6000610cae602483610e63565b9150610cb98261115d565b604082019050919050565b6000610cd1602583610e63565b9150610cdc826111ac565b604082019050919050565b610cf081610f08565b82525050565b610cff81610f12565b82525050565b6000602082019050610d1a6000830184610baa565b92915050565b60006020820190508181036000830152610d3a8184610bb9565b905092915050565b60006020820190508181036000830152610d5b81610bf2565b9050919050565b60006020820190508181036000830152610d7b81610c15565b9050919050565b60006020820190508181036000830152610d9b81610c38565b9050919050565b60006020820190508181036000830152610dbb81610c5b565b9050919050565b60006020820190508181036000830152610ddb81610c7e565b9050919050565b60006020820190508181036000830152610dfb81610ca1565b9050919050565b60006020820190508181036000830152610e1b81610cc4565b9050919050565b6000602082019050610e376000830184610ce7565b92915050565b6000602082019050610e526000830184610cf6565b92915050565b600081519050919050565b600082825260208201905092915050565b6000610e7f82610f08565b9150610e8a83610f08565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115610ebf57610ebe610f84565b5b828201905092915050565b6000610ed582610ee8565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015610f3d578082015181840152602081019050610f22565b83811115610f4c576000848401525b50505050565b60006002820490506001821680610f6a57607f821691505b60208210811415610f7e57610f7d610fb3565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b61120481610eca565b811461120f57600080fd5b50565b61121b81610f08565b811461122657600080fd5b5056fea26469706673582212206e7d4645203c528cb4c5c20b28a6d1615134cd17e709cf6083e931dfc154394964736f6c63430008070033"; + +type ERC20MockConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ERC20MockConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class ERC20Mock__factory extends ContractFactory { + constructor(...args: ERC20MockConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + name: PromiseOrValue, + symbol: PromiseOrValue, + creator: PromiseOrValue, + initialSupply: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + name, + symbol, + creator, + initialSupply, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + name: PromiseOrValue, + symbol: PromiseOrValue, + creator: PromiseOrValue, + initialSupply: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction( + name, + symbol, + creator, + initialSupply, + overrides || {} + ); + } + override attach(address: string): ERC20Mock { + return super.attach(address) as ERC20Mock; + } + override connect(signer: Signer): ERC20Mock__factory { + return super.connect(signer) as ERC20Mock__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ERC20MockInterface { + return new utils.Interface(_abi) as ERC20MockInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ERC20Mock { + return new Contract(address, _abi, signerOrProvider) as ERC20Mock; + } +} diff --git a/typechain-types/factories/contracts/evm/testing/ZetaInteractorMock__factory.ts b/typechain-types/factories/contracts/evm/testing/ZetaInteractorMock__factory.ts index fb258d53..62972d9a 100644 --- a/typechain-types/factories/contracts/evm/testing/ZetaInteractorMock__factory.ts +++ b/typechain-types/factories/contracts/evm/testing/ZetaInteractorMock__factory.ts @@ -281,7 +281,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c06040523480156200001157600080fd5b506040516200123c3803806200123c833981810160405281019062000037919062000228565b80620000586200004c6200010760201b60201c565b6200010f60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000c0576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b46608081815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620002ad565b600033905090565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556200014a816200014d60201b620005bd1760201c565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620002228162000293565b92915050565b6000602082840312156200024157620002406200028e565b5b6000620002518482850162000211565b91505092915050565b600062000267826200026e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200029e816200025a565b8114620002aa57600080fd5b50565b60805160a05160601c610f5f620002dd6000396000818161049b0152610683015260006103690152610f5f6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806379ba50971161006657806379ba50971461013157806383f3084f1461013b5780638da5cb5b14610159578063e30c397814610177578063f2fde38b146101955761009e565b80632618143f146100a35780633749c51a146100d35780633ff0693c146100ef5780634fd3f7d71461010b578063715018a614610127575b600080fd5b6100bd60048036038101906100b891906109ea565b6101b1565b6040516100ca9190610c03565b60405180910390f35b6100ed60048036038101906100e89190610958565b610251565b005b610109600480360381019061010491906109a1565b6102e7565b005b61012560048036038101906101209190610a17565b6103c8565b005b61012f6103f8565b005b61013961040c565b005b610143610499565b6040516101509190610c25565b60405180910390f35b6101616104bd565b60405161016e9190610be8565b60405180910390f35b61017f6104e6565b60405161018c9190610be8565b60405180910390f35b6101af60048036038101906101aa919061092b565b610510565b005b600260205280600052604060002060009150905080546101d090610de4565b80601f01602080910402602001604051908101604052809291908181526020018280546101fc90610de4565b80156102495780601f1061021e57610100808354040283529160200191610249565b820191906000526020600020905b81548152906001019060200180831161022c57829003601f168201915b505050505081565b8061025a610681565b600260008260200135815260200190815260200160002060405161027e9190610bd1565b60405180910390208180600001906102969190610c80565b6040516102a4929190610bb8565b6040518091039020146102e3576040517fb473eb0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b806102f0610681565b3073ffffffffffffffffffffffffffffffffffffffff1681600001602081019061031a919061092b565b73ffffffffffffffffffffffffffffffffffffffff1614610367576040517fc03e9c3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000008160200135146103c4576040517fc03e9c3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6103d0610713565b81816002600086815260200190815260200160002091906103f29291906107ca565b50505050565b610400610713565b61040a6000610791565b565b60006104166107c2565b90508073ffffffffffffffffffffffffffffffffffffffff166104376104e6565b73ffffffffffffffffffffffffffffffffffffffff161461048d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161048490610c40565b60405180910390fd5b61049681610791565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610518610713565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff166105786104bd565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461071157336040517fcbd9d2e00000000000000000000000000000000000000000000000000000000081526004016107089190610be8565b60405180910390fd5b565b61071b6107c2565b73ffffffffffffffffffffffffffffffffffffffff166107396104bd565b73ffffffffffffffffffffffffffffffffffffffff161461078f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078690610c60565b60405180910390fd5b565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556107bf816105bd565b50565b600033905090565b8280546107d690610de4565b90600052602060002090601f0160209004810192826107f8576000855561083f565b82601f1061081157803560ff191683800117855561083f565b8280016001018555821561083f579182015b8281111561083e578235825591602001919060010190610823565b5b50905061084c9190610850565b5090565b5b80821115610869576000816000905550600101610851565b5090565b60008135905061087c81610efb565b92915050565b60008083601f84011261089857610897610e4a565b5b8235905067ffffffffffffffff8111156108b5576108b4610e45565b5b6020830191508360018202830111156108d1576108d0610e5e565b5b9250929050565b600060a082840312156108ee576108ed610e54565b5b81905092915050565b600060c0828403121561090d5761090c610e54565b5b81905092915050565b60008135905061092581610f12565b92915050565b60006020828403121561094157610940610e6d565b5b600061094f8482850161086d565b91505092915050565b60006020828403121561096e5761096d610e6d565b5b600082013567ffffffffffffffff81111561098c5761098b610e68565b5b610998848285016108d8565b91505092915050565b6000602082840312156109b7576109b6610e6d565b5b600082013567ffffffffffffffff8111156109d5576109d4610e68565b5b6109e1848285016108f7565b91505092915050565b600060208284031215610a00576109ff610e6d565b5b6000610a0e84828501610916565b91505092915050565b600080600060408486031215610a3057610a2f610e6d565b5b6000610a3e86828701610916565b935050602084013567ffffffffffffffff811115610a5f57610a5e610e68565b5b610a6b86828701610882565b92509250509250925092565b610a8081610d30565b82525050565b6000610a928385610d14565b9350610a9f838584610da2565b82840190509392505050565b6000610ab682610cf8565b610ac08185610d03565b9350610ad0818560208601610db1565b610ad981610e72565b840191505092915050565b60008154610af181610de4565b610afb8186610d14565b94506001821660008114610b165760018114610b2757610b5a565b60ff19831686528186019350610b5a565b610b3085610ce3565b60005b83811015610b5257815481890152600182019150602081019050610b33565b838801955050505b50505092915050565b610b6c81610d6c565b82525050565b6000610b7f602983610d1f565b9150610b8a82610e83565b604082019050919050565b6000610ba2602083610d1f565b9150610bad82610ed2565b602082019050919050565b6000610bc5828486610a86565b91508190509392505050565b6000610bdd8284610ae4565b915081905092915050565b6000602082019050610bfd6000830184610a77565b92915050565b60006020820190508181036000830152610c1d8184610aab565b905092915050565b6000602082019050610c3a6000830184610b63565b92915050565b60006020820190508181036000830152610c5981610b72565b9050919050565b60006020820190508181036000830152610c7981610b95565b9050919050565b60008083356001602003843603038112610c9d57610c9c610e59565b5b80840192508235915067ffffffffffffffff821115610cbf57610cbe610e4f565b5b602083019250600182023603831315610cdb57610cda610e63565b5b509250929050565b60008190508160005260206000209050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610d3b82610d42565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610d7782610d7e565b9050919050565b6000610d8982610d90565b9050919050565b6000610d9b82610d42565b9050919050565b82818337600083830152505050565b60005b83811015610dcf578082015181840152602081019050610db4565b83811115610dde576000848401525b50505050565b60006002820490506001821680610dfc57607f821691505b60208210811415610e1057610e0f610e16565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060008201527f6e6577206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b610f0481610d30565b8114610f0f57600080fd5b50565b610f1b81610d62565b8114610f2657600080fd5b5056fea26469706673582212206999e36457fead1d5e7b5a125ef2e0a49dcff212174326676d6fd53cff4e990364736f6c63430008070033"; + "0x60c06040523480156200001157600080fd5b50604051620011dc380380620011dc833981810160405281019062000037919062000228565b80620000586200004c6200010760201b60201c565b6200010f60201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620000c0576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b46608081815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff1660601b815250505050620002ad565b600033905090565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556200014a816200014d60201b620005601760201c565b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050620002228162000293565b92915050565b6000602082840312156200024157620002406200028e565b5b6000620002518482850162000211565b91505092915050565b600062000267826200026e565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6200029e816200025a565b8114620002aa57600080fd5b50565b60805160a05160601c610f02620002da6000396000818161043e0152610626015260005050610f026000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806379ba50971161006657806379ba50971461013157806383f3084f1461013b5780638da5cb5b14610159578063e30c397814610177578063f2fde38b146101955761009e565b80632618143f146100a35780633749c51a146100d35780633ff0693c146100ef5780634fd3f7d71461010b578063715018a614610127575b600080fd5b6100bd60048036038101906100b8919061098d565b6101b1565b6040516100ca9190610ba6565b60405180910390f35b6100ed60048036038101906100e891906108fb565b610251565b005b61010960048036038101906101049190610944565b6102e7565b005b610125600480360381019061012091906109ba565b61036b565b005b61012f61039b565b005b6101396103af565b005b61014361043c565b6040516101509190610bc8565b60405180910390f35b610161610460565b60405161016e9190610b8b565b60405180910390f35b61017f610489565b60405161018c9190610b8b565b60405180910390f35b6101af60048036038101906101aa91906108ce565b6104b3565b005b600260205280600052604060002060009150905080546101d090610d87565b80601f01602080910402602001604051908101604052809291908181526020018280546101fc90610d87565b80156102495780601f1061021e57610100808354040283529160200191610249565b820191906000526020600020905b81548152906001019060200180831161022c57829003601f168201915b505050505081565b8061025a610624565b600260008260200135815260200190815260200160002060405161027e9190610b74565b60405180910390208180600001906102969190610c23565b6040516102a4929190610b5b565b6040518091039020146102e3576040517fb473eb0a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b806102f0610624565b3073ffffffffffffffffffffffffffffffffffffffff1681600001602081019061031a91906108ce565b73ffffffffffffffffffffffffffffffffffffffff1614610367576040517fc03e9c3f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6103736106b6565b818160026000868152602001908152602001600020919061039592919061076d565b50505050565b6103a36106b6565b6103ad6000610734565b565b60006103b9610765565b90508073ffffffffffffffffffffffffffffffffffffffff166103da610489565b73ffffffffffffffffffffffffffffffffffffffff1614610430576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161042790610be3565b60405180910390fd5b61043981610734565b50565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6104bb6106b6565b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1661051b610460565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146106b457336040517fcbd9d2e00000000000000000000000000000000000000000000000000000000081526004016106ab9190610b8b565b60405180910390fd5b565b6106be610765565b73ffffffffffffffffffffffffffffffffffffffff166106dc610460565b73ffffffffffffffffffffffffffffffffffffffff1614610732576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072990610c03565b60405180910390fd5b565b600160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905561076281610560565b50565b600033905090565b82805461077990610d87565b90600052602060002090601f01602090048101928261079b57600085556107e2565b82601f106107b457803560ff19168380011785556107e2565b828001600101855582156107e2579182015b828111156107e15782358255916020019190600101906107c6565b5b5090506107ef91906107f3565b5090565b5b8082111561080c5760008160009055506001016107f4565b5090565b60008135905061081f81610e9e565b92915050565b60008083601f84011261083b5761083a610ded565b5b8235905067ffffffffffffffff81111561085857610857610de8565b5b60208301915083600182028301111561087457610873610e01565b5b9250929050565b600060a0828403121561089157610890610df7565b5b81905092915050565b600060c082840312156108b0576108af610df7565b5b81905092915050565b6000813590506108c881610eb5565b92915050565b6000602082840312156108e4576108e3610e10565b5b60006108f284828501610810565b91505092915050565b60006020828403121561091157610910610e10565b5b600082013567ffffffffffffffff81111561092f5761092e610e0b565b5b61093b8482850161087b565b91505092915050565b60006020828403121561095a57610959610e10565b5b600082013567ffffffffffffffff81111561097857610977610e0b565b5b6109848482850161089a565b91505092915050565b6000602082840312156109a3576109a2610e10565b5b60006109b1848285016108b9565b91505092915050565b6000806000604084860312156109d3576109d2610e10565b5b60006109e1868287016108b9565b935050602084013567ffffffffffffffff811115610a0257610a01610e0b565b5b610a0e86828701610825565b92509250509250925092565b610a2381610cd3565b82525050565b6000610a358385610cb7565b9350610a42838584610d45565b82840190509392505050565b6000610a5982610c9b565b610a638185610ca6565b9350610a73818560208601610d54565b610a7c81610e15565b840191505092915050565b60008154610a9481610d87565b610a9e8186610cb7565b94506001821660008114610ab95760018114610aca57610afd565b60ff19831686528186019350610afd565b610ad385610c86565b60005b83811015610af557815481890152600182019150602081019050610ad6565b838801955050505b50505092915050565b610b0f81610d0f565b82525050565b6000610b22602983610cc2565b9150610b2d82610e26565b604082019050919050565b6000610b45602083610cc2565b9150610b5082610e75565b602082019050919050565b6000610b68828486610a29565b91508190509392505050565b6000610b808284610a87565b915081905092915050565b6000602082019050610ba06000830184610a1a565b92915050565b60006020820190508181036000830152610bc08184610a4e565b905092915050565b6000602082019050610bdd6000830184610b06565b92915050565b60006020820190508181036000830152610bfc81610b15565b9050919050565b60006020820190508181036000830152610c1c81610b38565b9050919050565b60008083356001602003843603038112610c4057610c3f610dfc565b5b80840192508235915067ffffffffffffffff821115610c6257610c61610df2565b5b602083019250600182023603831315610c7e57610c7d610e06565b5b509250929050565b60008190508160005260206000209050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b6000610cde82610ce5565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b6000610d1a82610d21565b9050919050565b6000610d2c82610d33565b9050919050565b6000610d3e82610ce5565b9050919050565b82818337600083830152505050565b60005b83811015610d72578082015181840152602081019050610d57565b83811115610d81576000848401525b50505050565b60006002820490506001821680610d9f57607f821691505b60208210811415610db357610db2610db9565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060008201527f6e6577206f776e65720000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b610ea781610cd3565b8114610eb257600080fd5b50565b610ebe81610d05565b8114610ec957600080fd5b5056fea264697066735822122063babae00441a1f6e87dfa1b12f25265331734088794be43384b60938347fc3864736f6c63430008070033"; type ZetaInteractorMockConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/evm/testing/index.ts b/typechain-types/factories/contracts/evm/testing/index.ts index 32ab8513..d20dc41b 100644 --- a/typechain-types/factories/contracts/evm/testing/index.ts +++ b/typechain-types/factories/contracts/evm/testing/index.ts @@ -1,6 +1,8 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ +export * as attackerContractSol from "./AttackerContract.sol"; export * as testUniswapV3ContractsSol from "./TestUniswapV3Contracts.sol"; +export { ERC20Mock__factory } from "./ERC20Mock__factory"; export { ZetaInteractorMock__factory } from "./ZetaInteractorMock__factory"; export { ZetaReceiverMock__factory } from "./ZetaReceiverMock__factory"; diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ISwapRouterPancake__factory.ts b/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ISwapRouterPancake__factory.ts new file mode 100644 index 00000000..dfe09ffc --- /dev/null +++ b/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ISwapRouterPancake__factory.ts @@ -0,0 +1,146 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + ISwapRouterPancake, + ISwapRouterPancakeInterface, +} from "../../../../../contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ISwapRouterPancake"; + +const _abi = [ + { + inputs: [ + { + components: [ + { + internalType: "bytes", + name: "path", + type: "bytes", + }, + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amountIn", + type: "uint256", + }, + { + internalType: "uint256", + name: "amountOutMinimum", + type: "uint256", + }, + ], + internalType: "struct ISwapRouterPancake.ExactInputParams", + name: "params", + type: "tuple", + }, + ], + name: "exactInput", + outputs: [ + { + internalType: "uint256", + name: "amountOut", + type: "uint256", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + components: [ + { + internalType: "address", + name: "tokenIn", + type: "address", + }, + { + internalType: "address", + name: "tokenOut", + type: "address", + }, + { + internalType: "uint24", + name: "fee", + type: "uint24", + }, + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amountIn", + type: "uint256", + }, + { + internalType: "uint256", + name: "amountOutMinimum", + type: "uint256", + }, + { + internalType: "uint160", + name: "sqrtPriceLimitX96", + type: "uint160", + }, + ], + internalType: "struct ISwapRouterPancake.ExactInputSingleParams", + name: "params", + type: "tuple", + }, + ], + name: "exactInputSingle", + outputs: [ + { + internalType: "uint256", + name: "amountOut", + type: "uint256", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "int256", + name: "amount0Delta", + type: "int256", + }, + { + internalType: "int256", + name: "amount1Delta", + type: "int256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "uniswapV3SwapCallback", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class ISwapRouterPancake__factory { + static readonly abi = _abi; + static createInterface(): ISwapRouterPancakeInterface { + return new utils.Interface(_abi) as ISwapRouterPancakeInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ISwapRouterPancake { + return new Contract(address, _abi, signerOrProvider) as ISwapRouterPancake; + } +} diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/WETH9__factory.ts b/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/WETH9__factory.ts new file mode 100644 index 00000000..b91d6b2c --- /dev/null +++ b/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/WETH9__factory.ts @@ -0,0 +1,36 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + WETH9, + WETH9Interface, +} from "../../../../../contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/WETH9"; + +const _abi = [ + { + inputs: [ + { + internalType: "uint256", + name: "wad", + type: "uint256", + }, + ], + name: "withdraw", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class WETH9__factory { + static readonly abi = _abi; + static createInterface(): WETH9Interface { + return new utils.Interface(_abi) as WETH9Interface; + } + static connect(address: string, signerOrProvider: Signer | Provider): WETH9 { + return new Contract(address, _abi, signerOrProvider) as WETH9; + } +} diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerPancakeV3__factory.ts b/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerPancakeV3__factory.ts new file mode 100644 index 00000000..7f1ba318 --- /dev/null +++ b/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerPancakeV3__factory.ts @@ -0,0 +1,462 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { + Signer, + utils, + Contract, + ContractFactory, + BigNumberish, + Overrides, +} from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../../../common"; +import type { + ZetaTokenConsumerPancakeV3, + ZetaTokenConsumerPancakeV3Interface, +} from "../../../../../contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerPancakeV3"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "zetaToken_", + type: "address", + }, + { + internalType: "address", + name: "pancakeV3Router_", + type: "address", + }, + { + internalType: "address", + name: "uniswapV3Factory_", + type: "address", + }, + { + internalType: "address", + name: "WETH9Address_", + type: "address", + }, + { + internalType: "uint24", + name: "zetaPoolFee_", + type: "uint24", + }, + { + internalType: "uint24", + name: "tokenPoolFee_", + type: "uint24", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [], + name: "ErrorSendingETH", + type: "error", + }, + { + inputs: [], + name: "InputCantBeZero", + type: "error", + }, + { + inputs: [], + name: "InvalidAddress", + type: "error", + }, + { + inputs: [], + name: "ReentrancyError", + type: "error", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "amountIn", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "amountOut", + type: "uint256", + }, + ], + name: "EthExchangedForZeta", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "token", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amountIn", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "amountOut", + type: "uint256", + }, + ], + name: "TokenExchangedForZeta", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "amountIn", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "amountOut", + type: "uint256", + }, + ], + name: "ZetaExchangedForEth", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "token", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amountIn", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "amountOut", + type: "uint256", + }, + ], + name: "ZetaExchangedForToken", + type: "event", + }, + { + inputs: [], + name: "WETH9Address", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "destinationAddress", + type: "address", + }, + { + internalType: "uint256", + name: "minAmountOut", + type: "uint256", + }, + { + internalType: "uint256", + name: "zetaTokenAmount", + type: "uint256", + }, + ], + name: "getEthFromZeta", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "destinationAddress", + type: "address", + }, + { + internalType: "uint256", + name: "minAmountOut", + type: "uint256", + }, + { + internalType: "address", + name: "outputToken", + type: "address", + }, + { + internalType: "uint256", + name: "zetaTokenAmount", + type: "uint256", + }, + ], + name: "getTokenFromZeta", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "destinationAddress", + type: "address", + }, + { + internalType: "uint256", + name: "minAmountOut", + type: "uint256", + }, + ], + name: "getZetaFromEth", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "payable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "destinationAddress", + type: "address", + }, + { + internalType: "uint256", + name: "minAmountOut", + type: "uint256", + }, + { + internalType: "address", + name: "inputToken", + type: "address", + }, + { + internalType: "uint256", + name: "inputTokenAmount", + type: "uint256", + }, + ], + name: "getZetaFromToken", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "hasZetaLiquidity", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "pancakeV3Router", + outputs: [ + { + internalType: "contract ISwapRouterPancake", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "tokenPoolFee", + outputs: [ + { + internalType: "uint24", + name: "", + type: "uint24", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "uniswapV3Factory", + outputs: [ + { + internalType: "contract IUniswapV3Factory", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "zetaPoolFee", + outputs: [ + { + internalType: "uint24", + name: "", + type: "uint24", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "zetaToken", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + stateMutability: "payable", + type: "receive", + }, +] as const; + +const _bytecode = + "0x6101406040523480156200001257600080fd5b506040516200288c3803806200288c83398181016040528101906200003891906200028a565b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff161480620000a05750600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80620000d85750600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80620001105750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1562000148576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8573ffffffffffffffffffffffffffffffffffffffff1660e08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508473ffffffffffffffffffffffffffffffffffffffff166101008173ffffffffffffffffffffffffffffffffffffffff1660601b815250508373ffffffffffffffffffffffffffffffffffffffff166101208173ffffffffffffffffffffffffffffffffffffffff1660601b815250508273ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1660601b815250508162ffffff1660808162ffffff1660e81b815250508062ffffff1660a08162ffffff1660e81b81525050505050505050620003a2565b6000815190506200026d816200036e565b92915050565b600081519050620002848162000388565b92915050565b60008060008060008060c08789031215620002aa57620002a962000369565b5b6000620002ba89828a016200025c565b9650506020620002cd89828a016200025c565b9550506040620002e089828a016200025c565b9450506060620002f389828a016200025c565b93505060806200030689828a0162000273565b92505060a06200031989828a0162000273565b9150509295509295509295565b600062000333826200033a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b600080fd5b620003798162000326565b81146200038557600080fd5b50565b62000393816200035a565b81146200039f57600080fd5b50565b60805160e81c60a05160e81c60c05160601c60e05160601c6101005160601c6101205160601c6123b6620004d660003960008181610d340152610d7f01526000818161045c0152818161067c015281816107a8015281816109b401528181610b13015281816110f80152818161124401526113530152600081816103ae0152818161054e015281816107350152818161096a015281816109d601528181610a2901528181610ddc015281816110ae0152818161111a015261116d015260008181610372015281816106f301528181610a6501528181610bc001528181610dbb015281816111af01526113770152600081816106d201528181610d5801526111d00152600081816103ea015281816107140152818161089d01528181610aa101528181610dfd015261118e01526123b66000f3fe6080604052600436106100a05760003560e01c80635b549182116100645780635b549182146101ac5780635d9dfdde146101d757806380801f8414610202578063a53fb10b1461022d578063c27745dd1461026a578063c469cf1414610295576100a7565b8063013b2ff8146100ac57806321e093b1146100dc5780632405620a146101075780633cbd70051461014457806354c49a2a1461016f576100a7565b366100a757005b600080fd5b6100c660048036038101906100c191906118c0565b6102c0565b6040516100d39190612030565b60405180910390f35b3480156100e857600080fd5b506100f161054c565b6040516100fe9190611dd3565b60405180910390f35b34801561011357600080fd5b5061012e60048036038101906101299190611900565b610570565b60405161013b9190612030565b60405180910390f35b34801561015057600080fd5b5061015961089b565b6040516101669190612015565b60405180910390f35b34801561017b57600080fd5b5061019660048036038101906101919190611967565b6108bf565b6040516101a39190612030565b60405180910390f35b3480156101b857600080fd5b506101c1610d32565b6040516101ce9190611f1b565b60405180910390f35b3480156101e357600080fd5b506101ec610d56565b6040516101f99190612015565b60405180910390f35b34801561020e57600080fd5b50610217610d7a565b6040516102249190611ee5565b60405180910390f35b34801561023957600080fd5b50610254600480360381019061024f9190611900565b610f6b565b6040516102619190612030565b60405180910390f35b34801561027657600080fd5b5061027f611351565b60405161028c9190611f00565b60405180910390f35b3480156102a157600080fd5b506102aa611375565b6040516102b79190611dd3565b60405180910390f35b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610328576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000341415610363576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006040518060e001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff168152602001348152602001848152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166304e45aaf34846040518363ffffffff1660e01b81526004016104b49190611ffa565b6020604051808303818588803b1580156104cd57600080fd5b505af11580156104e1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906105069190611a14565b90507f87890b0a30955b1db16cc894fbe24779ae05d9f337bfe8b6dfc0809b5bf9da11348260405161053992919061204b565b60405180910390a1809250505092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806105d85750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561060f576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600082141561064a576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6106773330848673ffffffffffffffffffffffffffffffffffffffff16611399909392919063ffffffff16565b6106c27f0000000000000000000000000000000000000000000000000000000000000000838573ffffffffffffffffffffffffffffffffffffffff166114229092919063ffffffff16565b60006040518060800160405280857f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000604051602001610768959493929190611d48565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b858183f836040518263ffffffff1660e01b81526004016107ff9190611fd8565b602060405180830381600087803b15801561081957600080fd5b505af115801561082d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108519190611a14565b90507f017190d3d99ee6d8dd0604ef1e71ff9802810c6485f57c9b2ed6169848dd119f85858360405161088693929190611eae565b60405180910390a18092505050949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60008073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610927576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000821415610962576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6109af3330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611399909392919063ffffffff16565b610a1a7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166114229092919063ffffffff16565b60006040518060e001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1681526020017f000000000000000000000000000000000000000000000000000000000000000062ffffff1681526020013073ffffffffffffffffffffffffffffffffffffffff168152602001848152602001858152602001600073ffffffffffffffffffffffffffffffffffffffff16815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166304e45aaf836040518263ffffffff1660e01b8152600401610b6a9190611ffa565b602060405180830381600087803b158015610b8457600080fd5b505af1158015610b98573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bbc9190611a14565b90507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff1660e01b8152600401610c179190612030565b600060405180830381600087803b158015610c3157600080fd5b505af1158015610c45573d6000803e3d6000fd5b505050507f74e171117e91660f493740924d8bad0caf48dc4fbccb767fb05935397a2c17ae8482604051610c7a92919061204b565b60405180910390a160008673ffffffffffffffffffffffffffffffffffffffff1682604051610ca890611dbe565b60006040518083038185875af1925050503d8060008114610ce5576040519150601f19603f3d011682016040523d82523d6000602084013e610cea565b606091505b5050905080610d25576040517f3794aeaf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8193505050509392505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16631698ee827f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000006040518463ffffffff1660e01b8152600401610e3a93929190611e17565b60206040518083038186803b158015610e5257600080fd5b505afa158015610e66573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8a9190611893565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610ecb576000915050610f68565b600081905060008173ffffffffffffffffffffffffffffffffffffffff16631a6865026040518163ffffffff1660e01b815260040160206040518083038186803b158015610f1857600080fd5b505afa158015610f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f5091906119e7565b6fffffffffffffffffffffffffffffffff1611925050505b90565b60008060009054906101000a900460ff1615610fb3576040517f29f745a700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016000806101000a81548160ff021916908315150217905550600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614806110345750600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b1561106b576040517fe6c4247b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008214156110a6576040517fb813f54900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110f33330847f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611399909392919063ffffffff16565b61115e7f0000000000000000000000000000000000000000000000000000000000000000837f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166114229092919063ffffffff16565b600060405180608001604052807f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000089604051602001611204959493929190611d48565b60405160208183030381529060405281526020018773ffffffffffffffffffffffffffffffffffffffff16815260200184815260200186815250905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663b858183f836040518263ffffffff1660e01b815260040161129b9190611fd8565b602060405180830381600087803b1580156112b557600080fd5b505af11580156112c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ed9190611a14565b90507f0a7cb8f6e1d29e616c1209a3f418c17b3a9137005377f6dd072217b1ede2573b85858360405161132293929190611eae565b60405180910390a1809250505060008060006101000a81548160ff021916908315150217905550949350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b61141c846323b872dd60e01b8585856040516024016113ba93929190611e4e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611580565b50505050565b60008114806114bb575060008373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e30856040518363ffffffff1660e01b8152600401611469929190611dee565b60206040518083038186803b15801561148157600080fd5b505afa158015611495573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b99190611a14565b145b6114fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f190611fb8565b60405180910390fd5b61157b8363095ea7b360e01b8484604051602401611519929190611e85565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611580565b505050565b60006115e2826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166116479092919063ffffffff16565b9050600081511115611642578080602001905181019061160291906119ba565b611641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163890611f98565b60405180910390fd5b5b505050565b6060611656848460008561165f565b90509392505050565b6060824710156116a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169b90611f58565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff1685876040516116cd9190611da7565b60006040518083038185875af1925050503d806000811461170a576040519150601f19603f3d011682016040523d82523d6000602084013e61170f565b606091505b50915091506117208783838761172c565b92505050949350505050565b6060831561178f5760008351141561178757611747856117a2565b611786576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177d90611f78565b60405180910390fd5b5b82905061179a565b61179983836117c5565b5b949350505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b6000825111156117d85781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180c9190611f36565b60405180910390fd5b60008135905061182481612324565b92915050565b60008151905061183981612324565b92915050565b60008151905061184e8161233b565b92915050565b60008151905061186381612352565b92915050565b60008135905061187881612369565b92915050565b60008151905061188d81612369565b92915050565b6000602082840312156118a9576118a86121db565b5b60006118b78482850161182a565b91505092915050565b600080604083850312156118d7576118d66121db565b5b60006118e585828601611815565b92505060206118f685828601611869565b9150509250929050565b6000806000806080858703121561191a576119196121db565b5b600061192887828801611815565b945050602061193987828801611869565b935050604061194a87828801611815565b925050606061195b87828801611869565b91505092959194509250565b6000806000606084860312156119805761197f6121db565b5b600061198e86828701611815565b935050602061199f86828701611869565b92505060406119b086828701611869565b9150509250925092565b6000602082840312156119d0576119cf6121db565b5b60006119de8482850161183f565b91505092915050565b6000602082840312156119fd576119fc6121db565b5b6000611a0b84828501611854565b91505092915050565b600060208284031215611a2a57611a296121db565b5b6000611a388482850161187e565b91505092915050565b611a4a816120b7565b82525050565b611a59816120b7565b82525050565b611a70611a6b826120b7565b6121a5565b82525050565b611a7f816120c9565b82525050565b6000611a9082612074565b611a9a818561208a565b9350611aaa818560208601612172565b611ab3816121e0565b840191505092915050565b6000611ac982612074565b611ad3818561209b565b9350611ae3818560208601612172565b80840191505092915050565b611af88161212a565b82525050565b611b078161213c565b82525050565b6000611b188261207f565b611b2281856120a6565b9350611b32818560208601612172565b611b3b816121e0565b840191505092915050565b6000611b536026836120a6565b9150611b5e8261220b565b604082019050919050565b6000611b7660008361209b565b9150611b818261225a565b600082019050919050565b6000611b99601d836120a6565b9150611ba48261225d565b602082019050919050565b6000611bbc602a836120a6565b9150611bc782612286565b604082019050919050565b6000611bdf6036836120a6565b9150611bea826122d5565b604082019050919050565b60006080830160008301518482036000860152611c128282611a85565b9150506020830151611c276020860182611a41565b506040830151611c3a6040860182611d2a565b506060830151611c4d6060860182611d2a565b508091505092915050565b60e082016000820151611c6e6000850182611a41565b506020820151611c816020850182611a41565b506040820151611c946040850182611cf5565b506060820151611ca76060850182611a41565b506080820151611cba6080850182611d2a565b5060a0820151611ccd60a0850182611d2a565b5060c0820151611ce060c0850182611ce6565b50505050565b611cef816120f1565b82525050565b611cfe81612111565b82525050565b611d0d81612111565b82525050565b611d24611d1f82612111565b6121c9565b82525050565b611d3381612120565b82525050565b611d4281612120565b82525050565b6000611d548288611a5f565b601482019150611d648287611d13565b600382019150611d748286611a5f565b601482019150611d848285611d13565b600382019150611d948284611a5f565b6014820191508190509695505050505050565b6000611db38284611abe565b915081905092915050565b6000611dc982611b69565b9150819050919050565b6000602082019050611de86000830184611a50565b92915050565b6000604082019050611e036000830185611a50565b611e106020830184611a50565b9392505050565b6000606082019050611e2c6000830186611a50565b611e396020830185611a50565b611e466040830184611d04565b949350505050565b6000606082019050611e636000830186611a50565b611e706020830185611a50565b611e7d6040830184611d39565b949350505050565b6000604082019050611e9a6000830185611a50565b611ea76020830184611d39565b9392505050565b6000606082019050611ec36000830186611a50565b611ed06020830185611d39565b611edd6040830184611d39565b949350505050565b6000602082019050611efa6000830184611a76565b92915050565b6000602082019050611f156000830184611aef565b92915050565b6000602082019050611f306000830184611afe565b92915050565b60006020820190508181036000830152611f508184611b0d565b905092915050565b60006020820190508181036000830152611f7181611b46565b9050919050565b60006020820190508181036000830152611f9181611b8c565b9050919050565b60006020820190508181036000830152611fb181611baf565b9050919050565b60006020820190508181036000830152611fd181611bd2565b9050919050565b60006020820190508181036000830152611ff28184611bf5565b905092915050565b600060e08201905061200f6000830184611c58565b92915050565b600060208201905061202a6000830184611d04565b92915050565b60006020820190506120456000830184611d39565b92915050565b60006040820190506120606000830185611d39565b61206d6020830184611d39565b9392505050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006120c2826120f1565b9050919050565b60008115159050919050565b60006fffffffffffffffffffffffffffffffff82169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062ffffff82169050919050565b6000819050919050565b60006121358261214e565b9050919050565b60006121478261214e565b9050919050565b600061215982612160565b9050919050565b600061216b826120f1565b9050919050565b60005b83811015612190578082015181840152602081019050612175565b8381111561219f576000848401525b50505050565b60006121b0826121b7565b9050919050565b60006121c2826121fe565b9050919050565b60006121d4826121f1565b9050919050565b600080fd5b6000601f19601f8301169050919050565b60008160e81b9050919050565b60008160601b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b50565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60008201527f20746f206e6f6e2d7a65726f20616c6c6f77616e636500000000000000000000602082015250565b61232d816120b7565b811461233857600080fd5b50565b612344816120c9565b811461234f57600080fd5b50565b61235b816120d5565b811461236657600080fd5b50565b61237281612120565b811461237d57600080fd5b5056fea264697066735822122027f90d12abe6bc83d01268f9d1f2b1f06cb3a1291fe43afcacc978ec0c07420664736f6c63430008070033"; + +type ZetaTokenConsumerPancakeV3ConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: ZetaTokenConsumerPancakeV3ConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class ZetaTokenConsumerPancakeV3__factory extends ContractFactory { + constructor(...args: ZetaTokenConsumerPancakeV3ConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + zetaToken_: PromiseOrValue, + pancakeV3Router_: PromiseOrValue, + uniswapV3Factory_: PromiseOrValue, + WETH9Address_: PromiseOrValue, + zetaPoolFee_: PromiseOrValue, + tokenPoolFee_: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + zetaToken_, + pancakeV3Router_, + uniswapV3Factory_, + WETH9Address_, + zetaPoolFee_, + tokenPoolFee_, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + zetaToken_: PromiseOrValue, + pancakeV3Router_: PromiseOrValue, + uniswapV3Factory_: PromiseOrValue, + WETH9Address_: PromiseOrValue, + zetaPoolFee_: PromiseOrValue, + tokenPoolFee_: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction( + zetaToken_, + pancakeV3Router_, + uniswapV3Factory_, + WETH9Address_, + zetaPoolFee_, + tokenPoolFee_, + overrides || {} + ); + } + override attach(address: string): ZetaTokenConsumerPancakeV3 { + return super.attach(address) as ZetaTokenConsumerPancakeV3; + } + override connect(signer: Signer): ZetaTokenConsumerPancakeV3__factory { + return super.connect(signer) as ZetaTokenConsumerPancakeV3__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): ZetaTokenConsumerPancakeV3Interface { + return new utils.Interface(_abi) as ZetaTokenConsumerPancakeV3Interface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ZetaTokenConsumerPancakeV3 { + return new Contract( + address, + _abi, + signerOrProvider + ) as ZetaTokenConsumerPancakeV3; + } +} diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerUniV3Errors__factory.ts b/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerUniV3Errors__factory.ts new file mode 100644 index 00000000..f207c3c6 --- /dev/null +++ b/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerUniV3Errors__factory.ts @@ -0,0 +1,45 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + ZetaTokenConsumerUniV3Errors, + ZetaTokenConsumerUniV3ErrorsInterface, +} from "../../../../../contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerUniV3Errors"; + +const _abi = [ + { + inputs: [], + name: "ErrorSendingETH", + type: "error", + }, + { + inputs: [], + name: "InputCantBeZero", + type: "error", + }, + { + inputs: [], + name: "ReentrancyError", + type: "error", + }, +] as const; + +export class ZetaTokenConsumerUniV3Errors__factory { + static readonly abi = _abi; + static createInterface(): ZetaTokenConsumerUniV3ErrorsInterface { + return new utils.Interface(_abi) as ZetaTokenConsumerUniV3ErrorsInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): ZetaTokenConsumerUniV3Errors { + return new Contract( + address, + _abi, + signerOrProvider + ) as ZetaTokenConsumerUniV3Errors; + } +} diff --git a/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/index.ts b/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/index.ts new file mode 100644 index 00000000..e4bff3ee --- /dev/null +++ b/typechain-types/factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/index.ts @@ -0,0 +1,7 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { ISwapRouterPancake__factory } from "./ISwapRouterPancake__factory"; +export { WETH9__factory } from "./WETH9__factory"; +export { ZetaTokenConsumerPancakeV3__factory } from "./ZetaTokenConsumerPancakeV3__factory"; +export { ZetaTokenConsumerUniV3Errors__factory } from "./ZetaTokenConsumerUniV3Errors__factory"; diff --git a/typechain-types/factories/contracts/evm/tools/index.ts b/typechain-types/factories/contracts/evm/tools/index.ts index 961b142b..8f3bf27d 100644 --- a/typechain-types/factories/contracts/evm/tools/index.ts +++ b/typechain-types/factories/contracts/evm/tools/index.ts @@ -2,6 +2,7 @@ /* tslint:disable */ /* eslint-disable */ export * as immutableCreate2FactorySol from "./ImmutableCreate2Factory.sol"; +export * as zetaTokenConsumerPancakeV3StrategySol from "./ZetaTokenConsumerPancakeV3.strategy.sol"; export * as zetaTokenConsumerTridentStrategySol from "./ZetaTokenConsumerTrident.strategy.sol"; export * as zetaTokenConsumerUniV2StrategySol from "./ZetaTokenConsumerUniV2.strategy.sol"; export * as zetaTokenConsumerUniV3StrategySol from "./ZetaTokenConsumerUniV3.strategy.sol"; diff --git a/typechain-types/factories/contracts/zevm/ZRC20.sol/ZRC20__factory.ts b/typechain-types/factories/contracts/zevm/ZRC20.sol/ZRC20__factory.ts index ed39b388..d517d8a9 100644 --- a/typechain-types/factories/contracts/zevm/ZRC20.sol/ZRC20__factory.ts +++ b/typechain-types/factories/contracts/zevm/ZRC20.sol/ZRC20__factory.ts @@ -426,30 +426,6 @@ const _abi = [ stateMutability: "view", type: "function", }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "decreaseAllowance", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, { inputs: [ { @@ -474,30 +450,6 @@ const _abi = [ stateMutability: "nonpayable", type: "function", }, - { - inputs: [ - { - internalType: "address", - name: "spender", - type: "address", - }, - { - internalType: "uint256", - name: "amount", - type: "uint256", - }, - ], - name: "increaseAllowance", - outputs: [ - { - internalType: "bool", - name: "", - type: "bool", - }, - ], - stateMutability: "nonpayable", - type: "function", - }, { inputs: [], name: "name", @@ -674,7 +626,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60c06040523480156200001157600080fd5b50604051620029ab380380620029ab833981810160405281019062000037919062000319565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8660069080519060200190620000c99291906200018f565b508560079080519060200190620000e29291906200018f565b5084600860006101000a81548160ff021916908360ff16021790555083608081815250508260028111156200011c576200011b62000556565b5b60a081600281111562000134576200013362000556565b5b60f81b8152505081600181905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505062000667565b8280546200019d90620004ea565b90600052602060002090601f016020900481019282620001c157600085556200020d565b82601f10620001dc57805160ff19168380011785556200020d565b828001600101855582156200020d579182015b828111156200020c578251825591602001919060010190620001ef565b5b5090506200021c919062000220565b5090565b5b808211156200023b57600081600090555060010162000221565b5090565b600062000256620002508462000433565b6200040a565b905082815260208101848484011115620002755762000274620005e8565b5b62000282848285620004b4565b509392505050565b6000815190506200029b8162000608565b92915050565b600081519050620002b28162000622565b92915050565b600082601f830112620002d057620002cf620005e3565b5b8151620002e28482602086016200023f565b91505092915050565b600081519050620002fc8162000633565b92915050565b60008151905062000313816200064d565b92915050565b600080600080600080600060e0888a0312156200033b576200033a620005f2565b5b600088015167ffffffffffffffff8111156200035c576200035b620005ed565b5b6200036a8a828b01620002b8565b975050602088015167ffffffffffffffff8111156200038e576200038d620005ed565b5b6200039c8a828b01620002b8565b9650506040620003af8a828b0162000302565b9550506060620003c28a828b01620002eb565b9450506080620003d58a828b01620002a1565b93505060a0620003e88a828b01620002eb565b92505060c0620003fb8a828b016200028a565b91505092959891949750929550565b60006200041662000429565b905062000424828262000520565b919050565b6000604051905090565b600067ffffffffffffffff821115620004515762000450620005b4565b5b6200045c82620005f7565b9050602081019050919050565b600062000476826200047d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015620004d4578082015181840152602081019050620004b7565b83811115620004e4576000848401525b50505050565b600060028204905060018216806200050357607f821691505b602082108114156200051a576200051962000585565b5b50919050565b6200052b82620005f7565b810181811067ffffffffffffffff821117156200054d576200054c620005b4565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b620006138162000469565b81146200061f57600080fd5b50565b600381106200063057600080fd5b50565b6200063e816200049d565b81146200064a57600080fd5b50565b6200065881620004a7565b81146200066457600080fd5b50565b60805160a05160f81c61230d6200069e60003960006109f101526000818161093b01528181610e210152610f56015261230d6000f3fe608060405234801561001057600080fd5b50600436106101585760003560e01c806385e1f4d0116100c3578063c835d7cc1161007c578063c835d7cc1461041b578063d9eeebed14610437578063dd62ed3e14610456578063eddeb12314610486578063f2441b32146104a2578063f687d12a146104c057610158565b806385e1f4d01461033157806395d89b411461034f578063a3413d031461036d578063a457c2d71461038b578063a9059cbb146103bb578063c7012626146103eb57610158565b8063395093511161011557806339509351146102355780633ce4a5bc1461026557806342966c681461028357806347e7ef24146102b35780634d8943bb146102e357806370a082311461030157610158565b806306fdde031461015d578063091d27881461017b578063095ea7b31461019957806318160ddd146101c957806323b872dd146101e7578063313ce56714610217575b600080fd5b6101656104dc565b6040516101729190611e83565b60405180910390f35b61018361056e565b6040516101909190611ea5565b60405180910390f35b6101b360048036038101906101ae9190611b44565b610574565b6040516101c09190611dd1565b60405180910390f35b6101d1610592565b6040516101de9190611ea5565b60405180910390f35b61020160048036038101906101fc9190611af1565b61059c565b60405161020e9190611dd1565b60405180910390f35b61021f610694565b60405161022c9190611ec0565b60405180910390f35b61024f600480360381019061024a9190611b44565b6106ab565b60405161025c9190611dd1565b60405180910390f35b61026d610751565b60405161027a9190611d56565b60405180910390f35b61029d60048036038101906102989190611c0d565b610769565b6040516102aa9190611dd1565b60405180910390f35b6102cd60048036038101906102c89190611b44565b61077e565b6040516102da9190611dd1565b60405180910390f35b6102eb6108ea565b6040516102f89190611ea5565b60405180910390f35b61031b60048036038101906103169190611a57565b6108f0565b6040516103289190611ea5565b60405180910390f35b610339610939565b6040516103469190611ea5565b60405180910390f35b61035761095d565b6040516103649190611e83565b60405180910390f35b6103756109ef565b6040516103829190611e68565b60405180910390f35b6103a560048036038101906103a09190611b44565b610a13565b6040516103b29190611dd1565b60405180910390f35b6103d560048036038101906103d09190611b44565b610b76565b6040516103e29190611dd1565b60405180910390f35b61040560048036038101906104009190611bb1565b610b94565b6040516104129190611dd1565b60405180910390f35b61043560048036038101906104309190611a57565b610cea565b005b61043f610ddd565b60405161044d929190611da8565b60405180910390f35b610470600480360381019061046b9190611ab1565b61104a565b60405161047d9190611ea5565b60405180910390f35b6104a0600480360381019061049b9190611c0d565b6110d1565b005b6104aa61118b565b6040516104b79190611d56565b60405180910390f35b6104da60048036038101906104d59190611c0d565b6111af565b005b6060600680546104eb90612109565b80601f016020809104026020016040519081016040528092919081815260200182805461051790612109565b80156105645780601f1061053957610100808354040283529160200191610564565b820191906000526020600020905b81548152906001019060200180831161054757829003601f168201915b5050505050905090565b60015481565b6000610588610581611269565b8484611271565b6001905092915050565b6000600554905090565b60006105a984848461142a565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006105f4611269565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508281101561066b576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61068885610677611269565b85846106839190612019565b611271565b60019150509392505050565b6000600860009054906101000a900460ff16905090565b600081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006106f7611269565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107409190611f69565b925050819055506001905092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b60006107753383611686565b60019050919050565b600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561081c575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610853576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61085d838361183e565b8273ffffffffffffffffffffffffffffffffffffffff167f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab373735b14bb79463307aacbed86daf3322b1e6226ab6040516020016108ba9190611d3b565b604051602081830303815290604052846040516108d8929190611dec565b60405180910390a26001905092915050565b60025481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606007805461096c90612109565b80601f016020809104026020016040519081016040528092919081815260200182805461099890612109565b80156109e55780601f106109ba576101008083540402835291602001916109e5565b820191906000526020600020905b8154815290600101906020018083116109c857829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610a5f611269565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610ad2576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b1c611269565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b659190612019565b925050819055506001905092915050565b6000610b8a610b83611269565b848461142a565b6001905092915050565b6000806000610ba1610ddd565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b8152600401610bf693929190611d71565b602060405180830381600087803b158015610c1057600080fd5b505af1158015610c24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c489190611b84565b610c7e576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c883385611686565b3373ffffffffffffffffffffffffffffffffffffffff167f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955868684600254604051610cd69493929190611e1c565b60405180910390a260019250505092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d63576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae81604051610dd29190611d56565b60405180910390a150565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630be155477f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610e5c9190611ea5565b60206040518083038186803b158015610e7457600080fd5b505afa158015610e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eac9190611a84565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610f15576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7fd7afb7f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610f919190611ea5565b60206040518083038186803b158015610fa957600080fd5b505afa158015610fbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fe19190611c3a565b9050600081141561101e576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600254600154836110319190611fbf565b61103b9190611f69565b90508281945094505050509091565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461114a576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f816040516111809190611ea5565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611228576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001819055507fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a8160405161125e9190611ea5565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156112d8576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561133f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161141d9190611ea5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611491576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156114f8576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611576576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816115829190612019565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116149190611f69565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516116789190611ea5565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156116ed576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561176b576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816117779190612019565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600560008282546117cc9190612019565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516118319190611ea5565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156118a5576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546118b79190611f69565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461190d9190611f69565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516119729190611ea5565b60405180910390a35050565b600061199161198c84611f00565b611edb565b9050828152602081018484840111156119ad576119ac612251565b5b6119b88482856120c7565b509392505050565b6000813590506119cf81612292565b92915050565b6000815190506119e481612292565b92915050565b6000815190506119f9816122a9565b92915050565b600082601f830112611a1457611a1361224c565b5b8135611a2484826020860161197e565b91505092915050565b600081359050611a3c816122c0565b92915050565b600081519050611a51816122c0565b92915050565b600060208284031215611a6d57611a6c61225b565b5b6000611a7b848285016119c0565b91505092915050565b600060208284031215611a9a57611a9961225b565b5b6000611aa8848285016119d5565b91505092915050565b60008060408385031215611ac857611ac761225b565b5b6000611ad6858286016119c0565b9250506020611ae7858286016119c0565b9150509250929050565b600080600060608486031215611b0a57611b0961225b565b5b6000611b18868287016119c0565b9350506020611b29868287016119c0565b9250506040611b3a86828701611a2d565b9150509250925092565b60008060408385031215611b5b57611b5a61225b565b5b6000611b69858286016119c0565b9250506020611b7a85828601611a2d565b9150509250929050565b600060208284031215611b9a57611b9961225b565b5b6000611ba8848285016119ea565b91505092915050565b60008060408385031215611bc857611bc761225b565b5b600083013567ffffffffffffffff811115611be657611be5612256565b5b611bf2858286016119ff565b9250506020611c0385828601611a2d565b9150509250929050565b600060208284031215611c2357611c2261225b565b5b6000611c3184828501611a2d565b91505092915050565b600060208284031215611c5057611c4f61225b565b5b6000611c5e84828501611a42565b91505092915050565b611c708161204d565b82525050565b611c87611c828261204d565b61216c565b82525050565b611c968161205f565b82525050565b6000611ca782611f31565b611cb18185611f47565b9350611cc18185602086016120d6565b611cca81612260565b840191505092915050565b611cde816120b5565b82525050565b6000611cef82611f3c565b611cf98185611f58565b9350611d098185602086016120d6565b611d1281612260565b840191505092915050565b611d268161209e565b82525050565b611d35816120a8565b82525050565b6000611d478284611c76565b60148201915081905092915050565b6000602082019050611d6b6000830184611c67565b92915050565b6000606082019050611d866000830186611c67565b611d936020830185611c67565b611da06040830184611d1d565b949350505050565b6000604082019050611dbd6000830185611c67565b611dca6020830184611d1d565b9392505050565b6000602082019050611de66000830184611c8d565b92915050565b60006040820190508181036000830152611e068185611c9c565b9050611e156020830184611d1d565b9392505050565b60006080820190508181036000830152611e368187611c9c565b9050611e456020830186611d1d565b611e526040830185611d1d565b611e5f6060830184611d1d565b95945050505050565b6000602082019050611e7d6000830184611cd5565b92915050565b60006020820190508181036000830152611e9d8184611ce4565b905092915050565b6000602082019050611eba6000830184611d1d565b92915050565b6000602082019050611ed56000830184611d2c565b92915050565b6000611ee5611ef6565b9050611ef1828261213b565b919050565b6000604051905090565b600067ffffffffffffffff821115611f1b57611f1a61221d565b5b611f2482612260565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611f748261209e565b9150611f7f8361209e565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611fb457611fb3612190565b5b828201905092915050565b6000611fca8261209e565b9150611fd58361209e565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561200e5761200d612190565b5b828202905092915050565b60006120248261209e565b915061202f8361209e565b92508282101561204257612041612190565b5b828203905092915050565b60006120588261207e565b9050919050565b60008115159050919050565b60008190506120798261227e565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006120c08261206b565b9050919050565b82818337600083830152505050565b60005b838110156120f45780820151818401526020810190506120d9565b83811115612103576000848401525b50505050565b6000600282049050600182168061212157607f821691505b60208210811415612135576121346121ee565b5b50919050565b61214482612260565b810181811067ffffffffffffffff821117156121635761216261221d565b5b80604052505050565b60006121778261217e565b9050919050565b600061218982612271565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b6003811061228f5761228e6121bf565b5b50565b61229b8161204d565b81146122a657600080fd5b50565b6122b28161205f565b81146122bd57600080fd5b50565b6122c98161209e565b81146122d457600080fd5b5056fea26469706673582212208357de1ed0d4d2f796fce64a99317bee3c27736e62c98ae3a61ca8b37436fbc564736f6c63430008070033"; + "0x60c06040523480156200001157600080fd5b506040516200272c3803806200272c833981810160405281019062000037919062000319565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614620000b1576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8660069080519060200190620000c99291906200018f565b508560079080519060200190620000e29291906200018f565b5084600860006101000a81548160ff021916908360ff16021790555083608081815250508260028111156200011c576200011b62000556565b5b60a081600281111562000134576200013362000556565b5b60f81b8152505081600181905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505062000667565b8280546200019d90620004ea565b90600052602060002090601f016020900481019282620001c157600085556200020d565b82601f10620001dc57805160ff19168380011785556200020d565b828001600101855582156200020d579182015b828111156200020c578251825591602001919060010190620001ef565b5b5090506200021c919062000220565b5090565b5b808211156200023b57600081600090555060010162000221565b5090565b600062000256620002508462000433565b6200040a565b905082815260208101848484011115620002755762000274620005e8565b5b62000282848285620004b4565b509392505050565b6000815190506200029b8162000608565b92915050565b600081519050620002b28162000622565b92915050565b600082601f830112620002d057620002cf620005e3565b5b8151620002e28482602086016200023f565b91505092915050565b600081519050620002fc8162000633565b92915050565b60008151905062000313816200064d565b92915050565b600080600080600080600060e0888a0312156200033b576200033a620005f2565b5b600088015167ffffffffffffffff8111156200035c576200035b620005ed565b5b6200036a8a828b01620002b8565b975050602088015167ffffffffffffffff8111156200038e576200038d620005ed565b5b6200039c8a828b01620002b8565b9650506040620003af8a828b0162000302565b9550506060620003c28a828b01620002eb565b9450506080620003d58a828b01620002a1565b93505060a0620003e88a828b01620002eb565b92505060c0620003fb8a828b016200028a565b91505092959891949750929550565b60006200041662000429565b905062000424828262000520565b919050565b6000604051905090565b600067ffffffffffffffff821115620004515762000450620005b4565b5b6200045c82620005f7565b9050602081019050919050565b600062000476826200047d565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60005b83811015620004d4578082015181840152602081019050620004b7565b83811115620004e4576000848401525b50505050565b600060028204905060018216806200050357607f821691505b602082108114156200051a576200051962000585565b5b50919050565b6200052b82620005f7565b810181811067ffffffffffffffff821117156200054d576200054c620005b4565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b620006138162000469565b81146200061f57600080fd5b50565b600381106200063057600080fd5b50565b6200063e816200049d565b81146200064a57600080fd5b50565b6200065881620004a7565b81146200066457600080fd5b50565b60805160a05160f81c61208e6200069e60003960006108d501526000818161081f01528181610ba20152610cd7015261208e6000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c806385e1f4d0116100b8578063c835d7cc1161007c578063c835d7cc146103a5578063d9eeebed146103c1578063dd62ed3e146103e0578063eddeb12314610410578063f2441b321461042c578063f687d12a1461044a57610142565b806385e1f4d0146102eb57806395d89b4114610309578063a3413d0314610327578063a9059cbb14610345578063c70126261461037557610142565b8063313ce5671161010a578063313ce567146102015780633ce4a5bc1461021f57806342966c681461023d57806347e7ef241461026d5780634d8943bb1461029d57806370a08231146102bb57610142565b806306fdde0314610147578063091d278814610165578063095ea7b31461018357806318160ddd146101b357806323b872dd146101d1575b600080fd5b61014f610466565b60405161015c9190611c04565b60405180910390f35b61016d6104f8565b60405161017a9190611c26565b60405180910390f35b61019d600480360381019061019891906118c5565b6104fe565b6040516101aa9190611b52565b60405180910390f35b6101bb61051c565b6040516101c89190611c26565b60405180910390f35b6101eb60048036038101906101e69190611872565b610526565b6040516101f89190611b52565b60405180910390f35b61020961061e565b6040516102169190611c41565b60405180910390f35b610227610635565b6040516102349190611ad7565b60405180910390f35b6102576004803603810190610252919061198e565b61064d565b6040516102649190611b52565b60405180910390f35b610287600480360381019061028291906118c5565b610662565b6040516102949190611b52565b60405180910390f35b6102a56107ce565b6040516102b29190611c26565b60405180910390f35b6102d560048036038101906102d091906117d8565b6107d4565b6040516102e29190611c26565b60405180910390f35b6102f361081d565b6040516103009190611c26565b60405180910390f35b610311610841565b60405161031e9190611c04565b60405180910390f35b61032f6108d3565b60405161033c9190611be9565b60405180910390f35b61035f600480360381019061035a91906118c5565b6108f7565b60405161036c9190611b52565b60405180910390f35b61038f600480360381019061038a9190611932565b610915565b60405161039c9190611b52565b60405180910390f35b6103bf60048036038101906103ba91906117d8565b610a6b565b005b6103c9610b5e565b6040516103d7929190611b29565b60405180910390f35b6103fa60048036038101906103f59190611832565b610dcb565b6040516104079190611c26565b60405180910390f35b61042a6004803603810190610425919061198e565b610e52565b005b610434610f0c565b6040516104419190611ad7565b60405180910390f35b610464600480360381019061045f919061198e565b610f30565b005b60606006805461047590611e8a565b80601f01602080910402602001604051908101604052809291908181526020018280546104a190611e8a565b80156104ee5780601f106104c3576101008083540402835291602001916104ee565b820191906000526020600020905b8154815290600101906020018083116104d157829003601f168201915b5050505050905090565b60015481565b600061051261050b610fea565b8484610ff2565b6001905092915050565b6000600554905090565b60006105338484846111ab565b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061057e610fea565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156105f5576040517f10bad14700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61061285610601610fea565b858461060d9190611d9a565b610ff2565b60019150509392505050565b6000600860009054906101000a900460ff16905090565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b60006106593383611407565b60019050919050565b600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610700575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614155b15610737576040517fddb5de5e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61074183836115bf565b8273ffffffffffffffffffffffffffffffffffffffff167f67fc7bdaed5b0ec550d8706b87d60568ab70c6b781263c70101d54cd1564aab373735b14bb79463307aacbed86daf3322b1e6226ab60405160200161079e9190611abc565b604051602081830303815290604052846040516107bc929190611b6d565b60405180910390a26001905092915050565b60025481565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606007805461085090611e8a565b80601f016020809104026020016040519081016040528092919081815260200182805461087c90611e8a565b80156108c95780601f1061089e576101008083540402835291602001916108c9565b820191906000526020600020905b8154815290600101906020018083116108ac57829003601f168201915b5050505050905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b600061090b610904610fea565b84846111ab565b6001905092915050565b6000806000610922610b5e565b915091508173ffffffffffffffffffffffffffffffffffffffff166323b872dd3373735b14bb79463307aacbed86daf3322b1e6226ab846040518463ffffffff1660e01b815260040161097793929190611af2565b602060405180830381600087803b15801561099157600080fd5b505af11580156109a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109c99190611905565b6109ff576040517f0a7cd6d600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a093385611407565b3373ffffffffffffffffffffffffffffffffffffffff167f9ffbffc04a397460ee1dbe8c9503e098090567d6b7f4b3c02a8617d800b6d955868684600254604051610a579493929190611b9d565b60405180910390a260019250505092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ae4576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd55614e962c5fd6ece71614f6348d702468a997a394dd5e5c1677950226d97ae81604051610b539190611ad7565b60405180910390a150565b60008060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630be155477f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610bdd9190611c26565b60206040518083038186803b158015610bf557600080fd5b505afa158015610c09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2d9190611805565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610c96576040517f78fff39600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d7fd7afb7f00000000000000000000000000000000000000000000000000000000000000006040518263ffffffff1660e01b8152600401610d129190611c26565b60206040518083038186803b158015610d2a57600080fd5b505afa158015610d3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d6291906119bb565b90506000811415610d9f576040517fe661aed000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060025460015483610db29190611d40565b610dbc9190611cea565b90508281945094505050509091565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610ecb576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806002819055507fef13af88e424b5d15f49c77758542c1938b08b8b95b91ed0751f98ba99000d8f81604051610f019190611c26565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610fa9576040517f2b2add3d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001819055507fff5788270f43bfc1ca41c503606d2594aa3023a1a7547de403a3e2f146a4a80a81604051610fdf9190611c26565b60405180910390a150565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611059576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156110c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161119e9190611c26565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611212576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611279576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156112f7576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816113039190611d9a565b600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113959190611cea565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516113f99190611c26565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561146e576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156114ec576040517ffe382aa700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816114f89190611d9a565b600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816005600082825461154d9190611d9a565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516115b29190611c26565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611626576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600560008282546116389190611cea565b9250508190555080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461168e9190611cea565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516116f39190611c26565b60405180910390a35050565b600061171261170d84611c81565b611c5c565b90508281526020810184848401111561172e5761172d611fd2565b5b611739848285611e48565b509392505050565b60008135905061175081612013565b92915050565b60008151905061176581612013565b92915050565b60008151905061177a8161202a565b92915050565b600082601f83011261179557611794611fcd565b5b81356117a58482602086016116ff565b91505092915050565b6000813590506117bd81612041565b92915050565b6000815190506117d281612041565b92915050565b6000602082840312156117ee576117ed611fdc565b5b60006117fc84828501611741565b91505092915050565b60006020828403121561181b5761181a611fdc565b5b600061182984828501611756565b91505092915050565b6000806040838503121561184957611848611fdc565b5b600061185785828601611741565b925050602061186885828601611741565b9150509250929050565b60008060006060848603121561188b5761188a611fdc565b5b600061189986828701611741565b93505060206118aa86828701611741565b92505060406118bb868287016117ae565b9150509250925092565b600080604083850312156118dc576118db611fdc565b5b60006118ea85828601611741565b92505060206118fb858286016117ae565b9150509250929050565b60006020828403121561191b5761191a611fdc565b5b60006119298482850161176b565b91505092915050565b6000806040838503121561194957611948611fdc565b5b600083013567ffffffffffffffff81111561196757611966611fd7565b5b61197385828601611780565b9250506020611984858286016117ae565b9150509250929050565b6000602082840312156119a4576119a3611fdc565b5b60006119b2848285016117ae565b91505092915050565b6000602082840312156119d1576119d0611fdc565b5b60006119df848285016117c3565b91505092915050565b6119f181611dce565b82525050565b611a08611a0382611dce565b611eed565b82525050565b611a1781611de0565b82525050565b6000611a2882611cb2565b611a328185611cc8565b9350611a42818560208601611e57565b611a4b81611fe1565b840191505092915050565b611a5f81611e36565b82525050565b6000611a7082611cbd565b611a7a8185611cd9565b9350611a8a818560208601611e57565b611a9381611fe1565b840191505092915050565b611aa781611e1f565b82525050565b611ab681611e29565b82525050565b6000611ac882846119f7565b60148201915081905092915050565b6000602082019050611aec60008301846119e8565b92915050565b6000606082019050611b0760008301866119e8565b611b1460208301856119e8565b611b216040830184611a9e565b949350505050565b6000604082019050611b3e60008301856119e8565b611b4b6020830184611a9e565b9392505050565b6000602082019050611b676000830184611a0e565b92915050565b60006040820190508181036000830152611b878185611a1d565b9050611b966020830184611a9e565b9392505050565b60006080820190508181036000830152611bb78187611a1d565b9050611bc66020830186611a9e565b611bd36040830185611a9e565b611be06060830184611a9e565b95945050505050565b6000602082019050611bfe6000830184611a56565b92915050565b60006020820190508181036000830152611c1e8184611a65565b905092915050565b6000602082019050611c3b6000830184611a9e565b92915050565b6000602082019050611c566000830184611aad565b92915050565b6000611c66611c77565b9050611c728282611ebc565b919050565b6000604051905090565b600067ffffffffffffffff821115611c9c57611c9b611f9e565b5b611ca582611fe1565b9050602081019050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000611cf582611e1f565b9150611d0083611e1f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115611d3557611d34611f11565b5b828201905092915050565b6000611d4b82611e1f565b9150611d5683611e1f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615611d8f57611d8e611f11565b5b828202905092915050565b6000611da582611e1f565b9150611db083611e1f565b925082821015611dc357611dc2611f11565b5b828203905092915050565b6000611dd982611dff565b9050919050565b60008115159050919050565b6000819050611dfa82611fff565b919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b6000611e4182611dec565b9050919050565b82818337600083830152505050565b60005b83811015611e75578082015181840152602081019050611e5a565b83811115611e84576000848401525b50505050565b60006002820490506001821680611ea257607f821691505b60208210811415611eb657611eb5611f6f565b5b50919050565b611ec582611fe1565b810181811067ffffffffffffffff82111715611ee457611ee3611f9e565b5b80604052505050565b6000611ef882611eff565b9050919050565b6000611f0a82611ff2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b600381106120105761200f611f40565b5b50565b61201c81611dce565b811461202757600080fd5b50565b61203381611de0565b811461203e57600080fd5b50565b61204a81611e1f565b811461205557600080fd5b5056fea2646970667358221220edaf9ed98354e71aa84b95b4433f47537dd491d72f649020c367c23ec482327064736f6c63430008070033"; type ZRC20ConstructorParams = | [signer?: Signer] diff --git a/typechain-types/factories/contracts/zevm/ConnectorZEVM.sol/WZETA__factory.ts b/typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/WZETA__factory.ts similarity index 95% rename from typechain-types/factories/contracts/zevm/ConnectorZEVM.sol/WZETA__factory.ts rename to typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/WZETA__factory.ts index 83fd3571..e4a3c435 100644 --- a/typechain-types/factories/contracts/zevm/ConnectorZEVM.sol/WZETA__factory.ts +++ b/typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/WZETA__factory.ts @@ -7,7 +7,7 @@ import type { Provider } from "@ethersproject/providers"; import type { WZETA, WZETAInterface, -} from "../../../../contracts/zevm/ConnectorZEVM.sol/WZETA"; +} from "../../../../contracts/zevm/ZetaConnectorZEVM.sol/WZETA"; const _abi = [ { diff --git a/typechain-types/factories/contracts/zevm/ConnectorZEVM.sol/ZetaConnectorZEVM__factory.ts b/typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/ZetaConnectorZEVM__factory.ts similarity index 96% rename from typechain-types/factories/contracts/zevm/ConnectorZEVM.sol/ZetaConnectorZEVM__factory.ts rename to typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/ZetaConnectorZEVM__factory.ts index e4d04ec8..12df41bf 100644 --- a/typechain-types/factories/contracts/zevm/ConnectorZEVM.sol/ZetaConnectorZEVM__factory.ts +++ b/typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/ZetaConnectorZEVM__factory.ts @@ -7,14 +7,14 @@ import type { PromiseOrValue } from "../../../../common"; import type { ZetaConnectorZEVM, ZetaConnectorZEVMInterface, -} from "../../../../contracts/zevm/ConnectorZEVM.sol/ZetaConnectorZEVM"; +} from "../../../../contracts/zevm/ZetaConnectorZEVM.sol/ZetaConnectorZEVM"; const _abi = [ { inputs: [ { internalType: "address", - name: "_wzeta", + name: "wzeta_", type: "address", }, ], @@ -200,7 +200,7 @@ const _abi = [ ] as const; const _bytecode = - "0x608060405234801561001057600080fd5b50604051610a51380380610a518339818101604052810190610032919061008d565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610108565b600081519050610087816100f1565b92915050565b6000602082840312156100a3576100a26100ec565b5b60006100b184828501610078565b91505092915050565b60006100c5826100cc565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6100fa816100ba565b811461010557600080fd5b50565b61093a806101176000396000f3fe6080604052600436106100425760003560e01c8062173d46146100d35780633ce4a5bc146100fe578063eb3bacbd14610129578063ec02690114610152576100ce565b366100ce5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146100cc576040517f6e6b6de700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156100df57600080fd5b506100e861017b565b6040516100f591906106e5565b60405180910390f35b34801561010a57600080fd5b5061011361019f565b60405161012091906106e5565b60405180910390f35b34801561013557600080fd5b50610150600480360381019061014b91906105bf565b6101b7565b005b34801561015e57600080fd5b5061017960048036038101906101749190610619565b6102aa565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610230576040517fea02b3f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7325870b05f8f3412c318a35fc6a74feca51ea15811ec7a257676ca4db9d41768160405161029f91906106e5565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd333084608001356040518463ffffffff1660e01b815260040161030b93929190610700565b602060405180830381600087803b15801561032557600080fd5b505af1158015610339573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035d91906105ec565b610393576040517fa8c6fd4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d82608001356040518263ffffffff1660e01b81526004016103f091906107b3565b600060405180830381600087803b15801561040a57600080fd5b505af115801561041e573d6000803e3d6000fd5b50505050600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168260800135604051610460906106d0565b60006040518083038185875af1925050503d806000811461049d576040519150601f19603f3d011682016040523d82523d6000602084013e6104a2565b606091505b50509050806104dd576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e43285806020019061052b91906107ce565b8760800135886040013589806060019061054591906107ce565b8b8060a0019061055591906107ce565b60405161056a99989796959493929190610737565b60405180910390a35050565b600081359050610585816108d6565b92915050565b60008151905061059a816108ed565b92915050565b600060c082840312156105b6576105b56108a9565b5b81905092915050565b6000602082840312156105d5576105d46108bd565b5b60006105e384828501610576565b91505092915050565b600060208284031215610602576106016108bd565b5b60006106108482850161058b565b91505092915050565b60006020828403121561062f5761062e6108bd565b5b600082013567ffffffffffffffff81111561064d5761064c6108b8565b5b610659848285016105a0565b91505092915050565b61066b8161084d565b82525050565b600061067d8385610831565b935061068a838584610895565b610693836108c2565b840190509392505050565b60006106ab600083610842565b91506106b6826108d3565b600082019050919050565b6106ca8161088b565b82525050565b60006106db8261069e565b9150819050919050565b60006020820190506106fa6000830184610662565b92915050565b60006060820190506107156000830186610662565b6107226020830185610662565b61072f60408301846106c1565b949350505050565b600060c08201905061074c600083018c610662565b818103602083015261075f818a8c610671565b905061076e60408301896106c1565b61077b60608301886106c1565b818103608083015261078e818688610671565b905081810360a08301526107a3818486610671565b90509a9950505050505050505050565b60006020820190506107c860008301846106c1565b92915050565b600080833560016020038436030381126107eb576107ea6108ae565b5b80840192508235915067ffffffffffffffff82111561080d5761080c6108a4565b5b602083019250600182023603831315610829576108286108b3565b5b509250929050565b600082825260208201905092915050565b600081905092915050565b60006108588261086b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b50565b6108df8161084d565b81146108ea57600080fd5b50565b6108f68161085f565b811461090157600080fd5b5056fea2646970667358221220de77795070b6e9d863f949e5ff84ae67c6e2c498e6ffb04996698d04fcebe44864736f6c63430008070033"; + "0x608060405234801561001057600080fd5b50604051610a51380380610a518339818101604052810190610032919061008d565b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050610108565b600081519050610087816100f1565b92915050565b6000602082840312156100a3576100a26100ec565b5b60006100b184828501610078565b91505092915050565b60006100c5826100cc565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b6100fa816100ba565b811461010557600080fd5b50565b61093a806101176000396000f3fe6080604052600436106100425760003560e01c8062173d46146100d35780633ce4a5bc146100fe578063eb3bacbd14610129578063ec02690114610152576100ce565b366100ce5760008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146100cc576040517f6e6b6de700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b005b600080fd5b3480156100df57600080fd5b506100e861017b565b6040516100f591906106e5565b60405180910390f35b34801561010a57600080fd5b5061011361019f565b60405161012091906106e5565b60405180910390f35b34801561013557600080fd5b50610150600480360381019061014b91906105bf565b6101b7565b005b34801561015e57600080fd5b5061017960048036038101906101749190610619565b6102aa565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b73735b14bb79463307aacbed86daf3322b1e6226ab81565b73735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610230576040517fea02b3f300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f7325870b05f8f3412c318a35fc6a74feca51ea15811ec7a257676ca4db9d41768160405161029f91906106e5565b60405180910390a150565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd333084608001356040518463ffffffff1660e01b815260040161030b93929190610700565b602060405180830381600087803b15801561032557600080fd5b505af1158015610339573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061035d91906105ec565b610393576040517fa8c6fd4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d82608001356040518263ffffffff1660e01b81526004016103f091906107b3565b600060405180830381600087803b15801561040a57600080fd5b505af115801561041e573d6000803e3d6000fd5b50505050600073735b14bb79463307aacbed86daf3322b1e6226ab73ffffffffffffffffffffffffffffffffffffffff168260800135604051610460906106d0565b60006040518083038185875af1925050503d806000811461049d576040519150601f19603f3d011682016040523d82523d6000602084013e6104a2565b606091505b50509050806104dd576040517fc7ffc47b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600001353373ffffffffffffffffffffffffffffffffffffffff167f7ec1c94701e09b1652f3e1d307e60c4b9ebf99aff8c2079fd1d8c585e031c4e43285806020019061052b91906107ce565b8760800135886040013589806060019061054591906107ce565b8b8060a0019061055591906107ce565b60405161056a99989796959493929190610737565b60405180910390a35050565b600081359050610585816108d6565b92915050565b60008151905061059a816108ed565b92915050565b600060c082840312156105b6576105b56108a9565b5b81905092915050565b6000602082840312156105d5576105d46108bd565b5b60006105e384828501610576565b91505092915050565b600060208284031215610602576106016108bd565b5b60006106108482850161058b565b91505092915050565b60006020828403121561062f5761062e6108bd565b5b600082013567ffffffffffffffff81111561064d5761064c6108b8565b5b610659848285016105a0565b91505092915050565b61066b8161084d565b82525050565b600061067d8385610831565b935061068a838584610895565b610693836108c2565b840190509392505050565b60006106ab600083610842565b91506106b6826108d3565b600082019050919050565b6106ca8161088b565b82525050565b60006106db8261069e565b9150819050919050565b60006020820190506106fa6000830184610662565b92915050565b60006060820190506107156000830186610662565b6107226020830185610662565b61072f60408301846106c1565b949350505050565b600060c08201905061074c600083018c610662565b818103602083015261075f818a8c610671565b905061076e60408301896106c1565b61077b60608301886106c1565b818103608083015261078e818688610671565b905081810360a08301526107a3818486610671565b90509a9950505050505050505050565b60006020820190506107c860008301846106c1565b92915050565b600080833560016020038436030381126107eb576107ea6108ae565b5b80840192508235915067ffffffffffffffff82111561080d5761080c6108a4565b5b602083019250600182023603831315610829576108286108b3565b5b509250929050565b600082825260208201905092915050565b600081905092915050565b60006108588261086b565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b50565b6108df8161084d565b81146108ea57600080fd5b50565b6108f68161085f565b811461090157600080fd5b5056fea26469706673582212209cb0a71343946ce3fb0c8378bb2c769fc506ceab04e93e858de3b8c13a0e1deb64736f6c63430008070033"; type ZetaConnectorZEVMConstructorParams = | [signer?: Signer] @@ -220,16 +220,16 @@ export class ZetaConnectorZEVM__factory extends ContractFactory { } override deploy( - _wzeta: PromiseOrValue, + wzeta_: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): Promise { - return super.deploy(_wzeta, overrides || {}) as Promise; + return super.deploy(wzeta_, overrides || {}) as Promise; } override getDeployTransaction( - _wzeta: PromiseOrValue, + wzeta_: PromiseOrValue, overrides?: Overrides & { from?: PromiseOrValue } ): TransactionRequest { - return super.getDeployTransaction(_wzeta, overrides || {}); + return super.getDeployTransaction(wzeta_, overrides || {}); } override attach(address: string): ZetaConnectorZEVM { return super.attach(address) as ZetaConnectorZEVM; diff --git a/typechain-types/factories/contracts/zevm/ConnectorZEVM.sol/index.ts b/typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/index.ts similarity index 100% rename from typechain-types/factories/contracts/zevm/ConnectorZEVM.sol/index.ts rename to typechain-types/factories/contracts/zevm/ZetaConnectorZEVM.sol/index.ts diff --git a/typechain-types/factories/contracts/zevm/index.ts b/typechain-types/factories/contracts/zevm/index.ts index 05952015..1d36cb0b 100644 --- a/typechain-types/factories/contracts/zevm/index.ts +++ b/typechain-types/factories/contracts/zevm/index.ts @@ -1,9 +1,10 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ -export * as connectorZevmSol from "./ConnectorZEVM.sol"; export * as interfacesSol from "./Interfaces.sol"; export * as systemContractSol from "./SystemContract.sol"; export * as wzetaSol from "./WZETA.sol"; export * as zrc20Sol from "./ZRC20.sol"; +export * as zetaConnectorZevmSol from "./ZetaConnectorZEVM.sol"; export * as interfaces from "./interfaces"; +export * as testing from "./testing"; diff --git a/typechain-types/factories/contracts/zevm/interfaces/IWZETA.sol/IWETH9__factory.ts b/typechain-types/factories/contracts/zevm/interfaces/IWZETA.sol/IWETH9__factory.ts new file mode 100644 index 00000000..91148899 --- /dev/null +++ b/typechain-types/factories/contracts/zevm/interfaces/IWZETA.sol/IWETH9__factory.ts @@ -0,0 +1,264 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + IWETH9, + IWETH9Interface, +} from "../../../../../contracts/zevm/interfaces/IWZETA.sol/IWETH9"; + +const _abi = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "dst", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "wad", + type: "uint256", + }, + ], + name: "Deposit", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "src", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "wad", + type: "uint256", + }, + ], + name: "Withdrawal", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "wad", + type: "uint256", + }, + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "deposit", + outputs: [], + stateMutability: "payable", + type: "function", + }, + { + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "wad", + type: "uint256", + }, + ], + name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "wad", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "wad", + type: "uint256", + }, + ], + name: "withdraw", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +] as const; + +export class IWETH9__factory { + static readonly abi = _abi; + static createInterface(): IWETH9Interface { + return new utils.Interface(_abi) as IWETH9Interface; + } + static connect(address: string, signerOrProvider: Signer | Provider): IWETH9 { + return new Contract(address, _abi, signerOrProvider) as IWETH9; + } +} diff --git a/typechain-types/factories/contracts/zevm/interfaces/IWZETA.sol/index.ts b/typechain-types/factories/contracts/zevm/interfaces/IWZETA.sol/index.ts new file mode 100644 index 00000000..d3b0ed8d --- /dev/null +++ b/typechain-types/factories/contracts/zevm/interfaces/IWZETA.sol/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { IWETH9__factory } from "./IWETH9__factory"; diff --git a/typechain-types/factories/contracts/zevm/interfaces/index.ts b/typechain-types/factories/contracts/zevm/interfaces/index.ts index 57e32557..0b7ab835 100644 --- a/typechain-types/factories/contracts/zevm/interfaces/index.ts +++ b/typechain-types/factories/contracts/zevm/interfaces/index.ts @@ -1,6 +1,7 @@ /* Autogenerated file. Do not edit manually. */ /* tslint:disable */ /* eslint-disable */ +export * as iwzetaSol from "./IWZETA.sol"; export { IUniswapV2Router01__factory } from "./IUniswapV2Router01__factory"; export { IUniswapV2Router02__factory } from "./IUniswapV2Router02__factory"; export { IZRC20__factory } from "./IZRC20__factory"; diff --git a/typechain-types/factories/contracts/zevm/testing/SystemContractMock.sol/SystemContractErrors__factory.ts b/typechain-types/factories/contracts/zevm/testing/SystemContractMock.sol/SystemContractErrors__factory.ts new file mode 100644 index 00000000..2b4a91bf --- /dev/null +++ b/typechain-types/factories/contracts/zevm/testing/SystemContractMock.sol/SystemContractErrors__factory.ts @@ -0,0 +1,50 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from "ethers"; +import type { Provider } from "@ethersproject/providers"; +import type { + SystemContractErrors, + SystemContractErrorsInterface, +} from "../../../../../contracts/zevm/testing/SystemContractMock.sol/SystemContractErrors"; + +const _abi = [ + { + inputs: [], + name: "CallerIsNotFungibleModule", + type: "error", + }, + { + inputs: [], + name: "CantBeIdenticalAddresses", + type: "error", + }, + { + inputs: [], + name: "CantBeZeroAddress", + type: "error", + }, + { + inputs: [], + name: "InvalidTarget", + type: "error", + }, +] as const; + +export class SystemContractErrors__factory { + static readonly abi = _abi; + static createInterface(): SystemContractErrorsInterface { + return new utils.Interface(_abi) as SystemContractErrorsInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): SystemContractErrors { + return new Contract( + address, + _abi, + signerOrProvider + ) as SystemContractErrors; + } +} diff --git a/typechain-types/factories/contracts/zevm/testing/SystemContractMock.sol/SystemContractMock__factory.ts b/typechain-types/factories/contracts/zevm/testing/SystemContractMock.sol/SystemContractMock__factory.ts new file mode 100644 index 00000000..f4f16134 --- /dev/null +++ b/typechain-types/factories/contracts/zevm/testing/SystemContractMock.sol/SystemContractMock__factory.ts @@ -0,0 +1,398 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; +import type { Provider, TransactionRequest } from "@ethersproject/providers"; +import type { PromiseOrValue } from "../../../../../common"; +import type { + SystemContractMock, + SystemContractMockInterface, +} from "../../../../../contracts/zevm/testing/SystemContractMock.sol/SystemContractMock"; + +const _abi = [ + { + inputs: [ + { + internalType: "address", + name: "wzeta_", + type: "address", + }, + { + internalType: "address", + name: "uniswapv2Factory_", + type: "address", + }, + { + internalType: "address", + name: "uniswapv2Router02_", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + inputs: [], + name: "CallerIsNotFungibleModule", + type: "error", + }, + { + inputs: [], + name: "CantBeIdenticalAddresses", + type: "error", + }, + { + inputs: [], + name: "CantBeZeroAddress", + type: "error", + }, + { + inputs: [], + name: "InvalidTarget", + type: "error", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "", + type: "uint256", + }, + { + indexed: false, + internalType: "address", + name: "", + type: "address", + }, + ], + name: "SetGasCoin", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "SetGasPrice", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "uint256", + name: "", + type: "uint256", + }, + { + indexed: false, + internalType: "address", + name: "", + type: "address", + }, + ], + name: "SetGasZetaPool", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "address", + name: "", + type: "address", + }, + ], + name: "SetWZeta", + type: "event", + }, + { + anonymous: false, + inputs: [], + name: "SystemContractDeployed", + type: "event", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "gasCoinZRC20ByChainId", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "gasPriceByChainId", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "gasZetaPoolByChainId", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "target", + type: "address", + }, + { + internalType: "address", + name: "zrc20", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "message", + type: "bytes", + }, + ], + name: "onCrossChainCall", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "chainID", + type: "uint256", + }, + { + internalType: "address", + name: "zrc20", + type: "address", + }, + ], + name: "setGasCoinZRC20", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "chainID", + type: "uint256", + }, + { + internalType: "uint256", + name: "price", + type: "uint256", + }, + ], + name: "setGasPrice", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "addr", + type: "address", + }, + ], + name: "setWZETAContractAddress", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "uniswapv2FactoryAddress", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "factory", + type: "address", + }, + { + internalType: "address", + name: "tokenA", + type: "address", + }, + { + internalType: "address", + name: "tokenB", + type: "address", + }, + ], + name: "uniswapv2PairFor", + outputs: [ + { + internalType: "address", + name: "pair", + type: "address", + }, + ], + stateMutability: "pure", + type: "function", + }, + { + inputs: [], + name: "uniswapv2Router02Address", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "wZetaContractAddress", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, +] as const; + +const _bytecode = + "0x60806040523480156200001157600080fd5b50604051620010d7380380620010d7833981810160405281019062000037919062000146565b82600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f80699e81136d69cb8367ad52a994e25c722a86da654b561d0c14b61a777e7ac560405160405180910390a1505050620001f5565b6000815190506200014081620001db565b92915050565b600080600060608486031215620001625762000161620001d6565b5b600062000172868287016200012f565b935050602062000185868287016200012f565b925050604062000198868287016200012f565b9150509250925092565b6000620001af82620001b6565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600080fd5b620001e681620001a2565b8114620001f257600080fd5b50565b610ed280620002056000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806397770dff1161007157806397770dff14610166578063a7cb050714610182578063c63585cc1461019e578063d7fd7afb146101ce578063d936a012146101fe578063ee2815ba1461021c576100a9565b80630be15547146100ae5780633c669d55146100de578063513a9c05146100fa578063569541b91461012a578063842da36d14610148575b600080fd5b6100c860048036038101906100c3919061094d565b610238565b6040516100d59190610bce565b60405180910390f35b6100f860048036038101906100f39190610898565b61026b565b005b610114600480360381019061010f919061094d565b6103b8565b6040516101219190610bce565b60405180910390f35b6101326103eb565b60405161013f9190610bce565b60405180910390f35b610150610411565b60405161015d9190610bce565b60405180910390f35b610180600480360381019061017b9190610818565b610437565b005b61019c600480360381019061019791906109ba565b6104d4565b005b6101b860048036038101906101b39190610845565b610528565b6040516101c59190610bce565b60405180910390f35b6101e860048036038101906101e3919061094d565b61059a565b6040516101f59190610c67565b60405180910390f35b6102066105b2565b6040516102139190610bce565b60405180910390f35b6102366004803603810190610231919061097a565b6105d8565b005b60016020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060405180606001604052806040518060200160405280600081525081526020013373ffffffffffffffffffffffffffffffffffffffff1681526020014681525090508473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb87866040518363ffffffff1660e01b81526004016102ea929190610be9565b602060405180830381600087803b15801561030457600080fd5b505af1158015610318573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061033c9190610920565b508573ffffffffffffffffffffffffffffffffffffffff1663de43156e82878787876040518663ffffffff1660e01b815260040161037e959493929190610c12565b600060405180830381600087803b15801561039857600080fd5b505af11580156103ac573d6000803e3d6000fd5b50505050505050505050565b60026020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fdba79d534382d1a8ae108e4c8ecb27c6ae42ab8b91d44eedf88bd329f3868d5e600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516104c99190610bce565b60405180910390a150565b80600080848152602001908152602001600020819055507f49f492222906ac486c3c1401fa545626df1f0c0e5a77a05597ea2ed66af9850d828260405161051c929190610cab565b60405180910390a15050565b60008060006105378585610667565b9150915085828260405160200161054f929190610b60565b60405160208183030381529060405280519060200120604051602001610576929190610b8c565b6040516020818303038152906040528051906020012060001c925050509392505050565b60006020528060005260406000206000915090505481565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd1b36d30f6248e97c473b4d1348ca164a4ef6759022f54a58ec200326c39c45d828260405161065b929190610c82565b60405180910390a15050565b6000808273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156106d0576040517fcb1e7cfe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161061070a57828461070d565b83835b8092508193505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561077c576040517f78b507da00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9250929050565b60008135905061079281610e57565b92915050565b6000815190506107a781610e6e565b92915050565b60008083601f8401126107c3576107c2610dd3565b5b8235905067ffffffffffffffff8111156107e0576107df610dce565b5b6020830191508360018202830111156107fc576107fb610dd8565b5b9250929050565b60008135905061081281610e85565b92915050565b60006020828403121561082e5761082d610de2565b5b600061083c84828501610783565b91505092915050565b60008060006060848603121561085e5761085d610de2565b5b600061086c86828701610783565b935050602061087d86828701610783565b925050604061088e86828701610783565b9150509250925092565b6000806000806000608086880312156108b4576108b3610de2565b5b60006108c288828901610783565b95505060206108d388828901610783565b94505060406108e488828901610803565b935050606086013567ffffffffffffffff81111561090557610904610ddd565b5b610911888289016107ad565b92509250509295509295909350565b60006020828403121561093657610935610de2565b5b600061094484828501610798565b91505092915050565b60006020828403121561096357610962610de2565b5b600061097184828501610803565b91505092915050565b6000806040838503121561099157610990610de2565b5b600061099f85828601610803565b92505060206109b085828601610783565b9150509250929050565b600080604083850312156109d1576109d0610de2565b5b60006109df85828601610803565b92505060206109f085828601610803565b9150509250929050565b610a0381610d0c565b82525050565b610a1281610d0c565b82525050565b610a29610a2482610d0c565b610da0565b82525050565b610a40610a3b82610d2a565b610db2565b82525050565b6000610a528385610cf0565b9350610a5f838584610d5e565b610a6883610de7565b840190509392505050565b6000610a7e82610cd4565b610a888185610cdf565b9350610a98818560208601610d6d565b610aa181610de7565b840191505092915050565b6000610ab9602083610d01565b9150610ac482610e05565b602082019050919050565b6000610adc600183610d01565b9150610ae782610e2e565b600182019050919050565b60006060830160008301518482036000860152610b0f8282610a73565b9150506020830151610b2460208601826109fa565b506040830151610b376040860182610b42565b508091505092915050565b610b4b81610d54565b82525050565b610b5a81610d54565b82525050565b6000610b6c8285610a18565b601482019150610b7c8284610a18565b6014820191508190509392505050565b6000610b9782610acf565b9150610ba38285610a18565b601482019150610bb38284610a2f565b602082019150610bc282610aac565b91508190509392505050565b6000602082019050610be36000830184610a09565b92915050565b6000604082019050610bfe6000830185610a09565b610c0b6020830184610b51565b9392505050565b60006080820190508181036000830152610c2c8188610af2565b9050610c3b6020830187610a09565b610c486040830186610b51565b8181036060830152610c5b818486610a46565b90509695505050505050565b6000602082019050610c7c6000830184610b51565b92915050565b6000604082019050610c976000830185610b51565b610ca46020830184610a09565b9392505050565b6000604082019050610cc06000830185610b51565b610ccd6020830184610b51565b9392505050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b6000610d1782610d34565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015610d8b578082015181840152602081019050610d70565b83811115610d9a576000848401525b50505050565b6000610dab82610dbc565b9050919050565b6000819050919050565b6000610dc782610df8565b9050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b60008160601b9050919050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f600082015250565b7fff00000000000000000000000000000000000000000000000000000000000000600082015250565b610e6081610d0c565b8114610e6b57600080fd5b50565b610e7781610d1e565b8114610e8257600080fd5b50565b610e8e81610d54565b8114610e9957600080fd5b5056fea26469706673582212203fa9d55135c7f24f7b5da3516688ef5fb78d92d28a850d2fe6d6fc3799422af364736f6c63430008070033"; + +type SystemContractMockConstructorParams = + | [signer?: Signer] + | ConstructorParameters; + +const isSuperArgs = ( + xs: SystemContractMockConstructorParams +): xs is ConstructorParameters => xs.length > 1; + +export class SystemContractMock__factory extends ContractFactory { + constructor(...args: SystemContractMockConstructorParams) { + if (isSuperArgs(args)) { + super(...args); + } else { + super(_abi, _bytecode, args[0]); + } + } + + override deploy( + wzeta_: PromiseOrValue, + uniswapv2Factory_: PromiseOrValue, + uniswapv2Router02_: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): Promise { + return super.deploy( + wzeta_, + uniswapv2Factory_, + uniswapv2Router02_, + overrides || {} + ) as Promise; + } + override getDeployTransaction( + wzeta_: PromiseOrValue, + uniswapv2Factory_: PromiseOrValue, + uniswapv2Router02_: PromiseOrValue, + overrides?: Overrides & { from?: PromiseOrValue } + ): TransactionRequest { + return super.getDeployTransaction( + wzeta_, + uniswapv2Factory_, + uniswapv2Router02_, + overrides || {} + ); + } + override attach(address: string): SystemContractMock { + return super.attach(address) as SystemContractMock; + } + override connect(signer: Signer): SystemContractMock__factory { + return super.connect(signer) as SystemContractMock__factory; + } + + static readonly bytecode = _bytecode; + static readonly abi = _abi; + static createInterface(): SystemContractMockInterface { + return new utils.Interface(_abi) as SystemContractMockInterface; + } + static connect( + address: string, + signerOrProvider: Signer | Provider + ): SystemContractMock { + return new Contract(address, _abi, signerOrProvider) as SystemContractMock; + } +} diff --git a/typechain-types/factories/contracts/zevm/testing/SystemContractMock.sol/index.ts b/typechain-types/factories/contracts/zevm/testing/SystemContractMock.sol/index.ts new file mode 100644 index 00000000..006bdc5d --- /dev/null +++ b/typechain-types/factories/contracts/zevm/testing/SystemContractMock.sol/index.ts @@ -0,0 +1,5 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { SystemContractErrors__factory } from "./SystemContractErrors__factory"; +export { SystemContractMock__factory } from "./SystemContractMock__factory"; diff --git a/typechain-types/factories/contracts/zevm/testing/index.ts b/typechain-types/factories/contracts/zevm/testing/index.ts new file mode 100644 index 00000000..ffbe5a26 --- /dev/null +++ b/typechain-types/factories/contracts/zevm/testing/index.ts @@ -0,0 +1,4 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export * as systemContractMockSol from "./SystemContractMock.sol"; diff --git a/typechain-types/hardhat.d.ts b/typechain-types/hardhat.d.ts index 9480990e..d0d85364 100644 --- a/typechain-types/hardhat.d.ts +++ b/typechain-types/hardhat.d.ts @@ -176,6 +176,18 @@ declare module "hardhat/types/runtime" { name: "ZetaNonEthInterface", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "AttackerContract", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "Victim", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ERC20Mock", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "INonfungiblePositionManager", signerOrOptions?: ethers.Signer | FactoryOptions @@ -212,6 +224,22 @@ declare module "hardhat/types/runtime" { name: "ZetaInteractor", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "ISwapRouterPancake", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "WETH9", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ZetaTokenConsumerPancakeV3", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ZetaTokenConsumerUniV3Errors", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "WETH9", signerOrOptions?: ethers.Signer | FactoryOptions @@ -264,14 +292,6 @@ declare module "hardhat/types/runtime" { name: "ZetaConnectorNonEth", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; - getContractFactory( - name: "WZETA", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; - getContractFactory( - name: "ZetaConnectorZEVM", - signerOrOptions?: ethers.Signer | FactoryOptions - ): Promise; getContractFactory( name: "ISystem", signerOrOptions?: ethers.Signer | FactoryOptions @@ -292,6 +312,10 @@ declare module "hardhat/types/runtime" { name: "IUniswapV2Router02", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "IWETH9", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "IZRC20", signerOrOptions?: ethers.Signer | FactoryOptions @@ -308,10 +332,26 @@ declare module "hardhat/types/runtime" { name: "SystemContractErrors", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "SystemContractErrors", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "SystemContractMock", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "WETH9", signerOrOptions?: ethers.Signer | FactoryOptions ): Promise; + getContractFactory( + name: "WZETA", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; + getContractFactory( + name: "ZetaConnectorZEVM", + signerOrOptions?: ethers.Signer | FactoryOptions + ): Promise; getContractFactory( name: "ZRC20", signerOrOptions?: ethers.Signer | FactoryOptions @@ -526,6 +566,21 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "AttackerContract", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "Victim", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ERC20Mock", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "INonfungiblePositionManager", address: string, @@ -571,6 +626,26 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "ISwapRouterPancake", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "WETH9", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ZetaTokenConsumerPancakeV3", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ZetaTokenConsumerUniV3Errors", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "WETH9", address: string, @@ -636,16 +711,6 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; - getContractAt( - name: "WZETA", - address: string, - signer?: ethers.Signer - ): Promise; - getContractAt( - name: "ZetaConnectorZEVM", - address: string, - signer?: ethers.Signer - ): Promise; getContractAt( name: "ISystem", address: string, @@ -671,6 +736,11 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "IWETH9", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "IZRC20", address: string, @@ -691,11 +761,31 @@ declare module "hardhat/types/runtime" { address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "SystemContractErrors", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "SystemContractMock", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "WETH9", address: string, signer?: ethers.Signer ): Promise; + getContractAt( + name: "WZETA", + address: string, + signer?: ethers.Signer + ): Promise; + getContractAt( + name: "ZetaConnectorZEVM", + address: string, + signer?: ethers.Signer + ): Promise; getContractAt( name: "ZRC20", address: string, diff --git a/typechain-types/index.ts b/typechain-types/index.ts index 9d7b4460..688a7938 100644 --- a/typechain-types/index.ts +++ b/typechain-types/index.ts @@ -86,6 +86,12 @@ export type { ZetaTokenConsumer } from "./contracts/evm/interfaces/ZetaInterface export { ZetaTokenConsumer__factory } from "./factories/contracts/evm/interfaces/ZetaInterfaces.sol/ZetaTokenConsumer__factory"; export type { ZetaNonEthInterface } from "./contracts/evm/interfaces/ZetaNonEthInterface"; export { ZetaNonEthInterface__factory } from "./factories/contracts/evm/interfaces/ZetaNonEthInterface__factory"; +export type { AttackerContract } from "./contracts/evm/testing/AttackerContract.sol/AttackerContract"; +export { AttackerContract__factory } from "./factories/contracts/evm/testing/AttackerContract.sol/AttackerContract__factory"; +export type { Victim } from "./contracts/evm/testing/AttackerContract.sol/Victim"; +export { Victim__factory } from "./factories/contracts/evm/testing/AttackerContract.sol/Victim__factory"; +export type { ERC20Mock } from "./contracts/evm/testing/ERC20Mock"; +export { ERC20Mock__factory } from "./factories/contracts/evm/testing/ERC20Mock__factory"; export type { INonfungiblePositionManager } from "./contracts/evm/testing/TestUniswapV3Contracts.sol/INonfungiblePositionManager"; export { INonfungiblePositionManager__factory } from "./factories/contracts/evm/testing/TestUniswapV3Contracts.sol/INonfungiblePositionManager__factory"; export type { IPoolInitializer } from "./contracts/evm/testing/TestUniswapV3Contracts.sol/IPoolInitializer"; @@ -102,8 +108,14 @@ export type { IPoolRouter } from "./contracts/evm/tools/interfaces/TridentIPoolR export { IPoolRouter__factory } from "./factories/contracts/evm/tools/interfaces/TridentIPoolRouter.sol/IPoolRouter__factory"; export type { ZetaInteractor } from "./contracts/evm/tools/ZetaInteractor"; export { ZetaInteractor__factory } from "./factories/contracts/evm/tools/ZetaInteractor__factory"; -export type { WETH9 } from "./contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/WETH9"; -export { WETH9__factory } from "./factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/WETH9__factory"; +export type { ISwapRouterPancake } from "./contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ISwapRouterPancake"; +export { ISwapRouterPancake__factory } from "./factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ISwapRouterPancake__factory"; +export type { WETH9 } from "./contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/WETH9"; +export { WETH9__factory } from "./factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/WETH9__factory"; +export type { ZetaTokenConsumerPancakeV3 } from "./contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerPancakeV3"; +export { ZetaTokenConsumerPancakeV3__factory } from "./factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerPancakeV3__factory"; +export type { ZetaTokenConsumerUniV3Errors } from "./contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerUniV3Errors"; +export { ZetaTokenConsumerUniV3Errors__factory } from "./factories/contracts/evm/tools/ZetaTokenConsumerPancakeV3.strategy.sol/ZetaTokenConsumerUniV3Errors__factory"; export type { ZetaTokenConsumerTrident } from "./contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTrident"; export { ZetaTokenConsumerTrident__factory } from "./factories/contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTrident__factory"; export type { ZetaTokenConsumerTridentErrors } from "./contracts/evm/tools/ZetaTokenConsumerTrident.strategy.sol/ZetaTokenConsumerTridentErrors"; @@ -114,8 +126,6 @@ export type { ZetaTokenConsumerUniV2Errors } from "./contracts/evm/tools/ZetaTok export { ZetaTokenConsumerUniV2Errors__factory } from "./factories/contracts/evm/tools/ZetaTokenConsumerUniV2.strategy.sol/ZetaTokenConsumerUniV2Errors__factory"; export type { ZetaTokenConsumerUniV3 } from "./contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3"; export { ZetaTokenConsumerUniV3__factory } from "./factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3__factory"; -export type { ZetaTokenConsumerUniV3Errors } from "./contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3Errors"; -export { ZetaTokenConsumerUniV3Errors__factory } from "./factories/contracts/evm/tools/ZetaTokenConsumerUniV3.strategy.sol/ZetaTokenConsumerUniV3Errors__factory"; export type { ZetaEth } from "./contracts/evm/Zeta.eth.sol/ZetaEth"; export { ZetaEth__factory } from "./factories/contracts/evm/Zeta.eth.sol/ZetaEth__factory"; export type { ZetaNonEth } from "./contracts/evm/Zeta.non-eth.sol/ZetaNonEth"; @@ -126,22 +136,26 @@ export type { ZetaConnectorEth } from "./contracts/evm/ZetaConnector.eth.sol/Zet export { ZetaConnectorEth__factory } from "./factories/contracts/evm/ZetaConnector.eth.sol/ZetaConnectorEth__factory"; export type { ZetaConnectorNonEth } from "./contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth"; export { ZetaConnectorNonEth__factory } from "./factories/contracts/evm/ZetaConnector.non-eth.sol/ZetaConnectorNonEth__factory"; -export type { WZETA } from "./contracts/zevm/ConnectorZEVM.sol/WZETA"; -export { WZETA__factory } from "./factories/contracts/zevm/ConnectorZEVM.sol/WZETA__factory"; -export type { ZetaConnectorZEVM } from "./contracts/zevm/ConnectorZEVM.sol/ZetaConnectorZEVM"; -export { ZetaConnectorZEVM__factory } from "./factories/contracts/zevm/ConnectorZEVM.sol/ZetaConnectorZEVM__factory"; export type { ISystem } from "./contracts/zevm/Interfaces.sol/ISystem"; export { ISystem__factory } from "./factories/contracts/zevm/Interfaces.sol/ISystem__factory"; export type { IZRC20 } from "./contracts/zevm/Interfaces.sol/IZRC20"; export { IZRC20__factory } from "./factories/contracts/zevm/Interfaces.sol/IZRC20__factory"; export type { IZRC20Metadata } from "./contracts/zevm/Interfaces.sol/IZRC20Metadata"; export { IZRC20Metadata__factory } from "./factories/contracts/zevm/Interfaces.sol/IZRC20Metadata__factory"; +export type { IWETH9 } from "./contracts/zevm/interfaces/IWZETA.sol/IWETH9"; +export { IWETH9__factory } from "./factories/contracts/zevm/interfaces/IWZETA.sol/IWETH9__factory"; export type { ZContract } from "./contracts/zevm/interfaces/ZContract"; export { ZContract__factory } from "./factories/contracts/zevm/interfaces/ZContract__factory"; export type { SystemContract } from "./contracts/zevm/SystemContract.sol/SystemContract"; export { SystemContract__factory } from "./factories/contracts/zevm/SystemContract.sol/SystemContract__factory"; export type { SystemContractErrors } from "./contracts/zevm/SystemContract.sol/SystemContractErrors"; export { SystemContractErrors__factory } from "./factories/contracts/zevm/SystemContract.sol/SystemContractErrors__factory"; +export type { SystemContractMock } from "./contracts/zevm/testing/SystemContractMock.sol/SystemContractMock"; +export { SystemContractMock__factory } from "./factories/contracts/zevm/testing/SystemContractMock.sol/SystemContractMock__factory"; +export type { WZETA } from "./contracts/zevm/ZetaConnectorZEVM.sol/WZETA"; +export { WZETA__factory } from "./factories/contracts/zevm/ZetaConnectorZEVM.sol/WZETA__factory"; +export type { ZetaConnectorZEVM } from "./contracts/zevm/ZetaConnectorZEVM.sol/ZetaConnectorZEVM"; +export { ZetaConnectorZEVM__factory } from "./factories/contracts/zevm/ZetaConnectorZEVM.sol/ZetaConnectorZEVM__factory"; export type { ZRC20 } from "./contracts/zevm/ZRC20.sol/ZRC20"; export { ZRC20__factory } from "./factories/contracts/zevm/ZRC20.sol/ZRC20__factory"; export type { ZRC20Errors } from "./contracts/zevm/ZRC20.sol/ZRC20Errors"; diff --git a/yarn.lock b/yarn.lock index fb3f9ed8..0d1edcad 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1443,6 +1443,21 @@ resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-toolbox/-/hardhat-toolbox-2.0.2.tgz#ec95f23b53cb4e71a1a7091380fa223aad18f156" integrity sha512-vnN1AzxbvpSx9pfdRHbUzTRIXpMLPXnUlkW855VaDk6N1pwRaQ2gNzEmFAABk4lWf11E00PKwFd/q27HuwYrYg== +"@nomicfoundation/hardhat-verify@2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@nomicfoundation/hardhat-verify/-/hardhat-verify-2.0.3.tgz#173557f8cfa53c8c9da23a326f54d24fe459ae68" + integrity sha512-ESbRu9by53wu6VvgwtMtm108RSmuNsVqXtzg061D+/4R7jaWh/Wl/8ve+p6SdDX7vA1Z3L02hDO1Q3BY4luLXQ== + dependencies: + "@ethersproject/abi" "^5.1.2" + "@ethersproject/address" "^5.0.2" + cbor "^8.1.0" + chalk "^2.4.2" + debug "^4.1.1" + lodash.clonedeep "^4.5.0" + semver "^6.3.0" + table "^6.8.0" + undici "^5.14.0" + "@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.1": version "0.1.1" resolved "https://registry.yarnpkg.com/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.1.tgz#4c858096b1c17fe58a474fe81b46815f93645c15" @@ -1514,19 +1529,6 @@ 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.0.3": - version "3.0.3" - resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-etherscan/-/hardhat-etherscan-3.0.3.tgz#ca54a03351f3de41f9f5240e37bea9d64fa24e64" - integrity sha512-OfNtUKc/ZwzivmZnnpwWREfaYncXteKHskn3yDnz+fPBZ6wfM4GR+d5RwjREzYFWE+o5iR9ruXhWw/8fejWM9g== - dependencies: - "@ethersproject/abi" "^5.1.2" - "@ethersproject/address" "^5.0.2" - cbor "^5.0.2" - debug "^4.1.1" - fs-extra "^7.0.1" - semver "^6.3.0" - undici "^4.14.1" - "@nomiclabs/hardhat-waffle@^2.0.3": version "2.0.5" resolved "https://registry.yarnpkg.com/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.5.tgz#97c217f1db795395c04404291937edb528f3f218" @@ -2076,15 +2078,12 @@ "@uniswap/v3-core" "1.0.0" base64-sol "1.0.1" -"@zetachain/addresses@^0.0.9": - version "0.0.9" - resolved "https://registry.yarnpkg.com/@zetachain/addresses/-/addresses-0.0.9.tgz#d8ad93242590c0a6d028be8f515ad9f84fd588c2" - integrity sha512-MA/kD8a2NY5xJMFjwPj1oph6P3O7l0g23QB3QTgcBs4DdmwubvTVH6S6/e8CWzLFojTP5qBiqIWBsU0iHP/HFg== - -"@zetachain/networks@^0.0.1": - version "0.0.1" - resolved "https://registry.yarnpkg.com/@zetachain/networks/-/networks-0.0.1.tgz#825b27cfb96cd156c079503de4253c8adf580275" - integrity sha512-p646aIgX/3IHkauZlOZBKirRCMY+hyo3Og3IfJGC3tNkqjADt0wrcnizJrRIlXWVJGnlAW7tJPyXPzcfBh2Bwg== +"@zetachain/networks@4.0.0-rc1": + version "4.0.0-rc1" + resolved "https://registry.yarnpkg.com/@zetachain/networks/-/networks-4.0.0-rc1.tgz#0ec6efabaa78d7124f5adb9218f25d85e252087b" + integrity sha512-Zl8cZc5PdKI46KZqPeIu7DmpSqUkXN07L9Yxy/Lp233L9pZKWUVr7RnEq2HUaN9F6gqtxlofNtKBFopphm1pEQ== + dependencies: + dotenv "^16.1.4" abbrev@1: version "1.1.1" @@ -2218,6 +2217,16 @@ ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" +ajv@^8.0.1: + version "8.12.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" + integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + amdefine@>=0.0.4: version "1.0.1" resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" @@ -2446,6 +2455,11 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + async-each@^1.0.0: version "1.0.6" resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.6.tgz#52f1d9403818c179b7561e11a5d1b77eb2160e77" @@ -2500,6 +2514,15 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== +axios@^1.6.5: + version "1.6.5" + resolved "https://registry.yarnpkg.com/axios/-/axios-1.6.5.tgz#2c090da14aeeab3770ad30c3a1461bc970fb0cd8" + integrity sha512-Ii012v05KEVuUoFWmMW/UQv9aRIc3ZwkWDcM+h5Il8izZCtRVpDUfwpoFf7eOtajT3QiGR4yDUx7lPqHJULgbg== + dependencies: + follow-redirects "^1.15.4" + form-data "^4.0.0" + proxy-from-env "^1.1.0" + babel-runtime@^6.9.2: version "6.26.0" resolved "https://registry.yarnpkg.com/babel-runtime/-/babel-runtime-6.26.0.tgz#965c7058668e82b55d7bfe04ff2337bc8b5647fe" @@ -2567,7 +2590,7 @@ bigint-crypto-utils@^3.0.23: resolved "https://registry.yarnpkg.com/bigint-crypto-utils/-/bigint-crypto-utils-3.2.2.tgz#e30a49ec38357c6981cd3da5aaa6480b1f752ee4" integrity sha512-U1RbE3aX9ayCUVcIPHuPDPKcK3SFOXf93J1UK/iHlJuQB7bhagPIX06/CLpLEsDThJ7KA4Dhrnzynl+d2weTiw== -bignumber.js@^9.0.0, bignumber.js@^9.0.1: +bignumber.js@^9.0.0: version "9.1.1" resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.1.1.tgz#c4df7dc496bd849d4c9464344c1aa74228b4dac6" integrity sha512-pHm4LsMJ6lzgNGVfZHjMoO8sdoRhOzOH4MLmY65Jg70bpxCKu5iOHNJyfF6OyvYw7t8Fpf35RuzUyqnQsj8Vig== @@ -2861,13 +2884,12 @@ catering@^2.0.0, catering@^2.1.0, catering@^2.1.1: resolved "https://registry.yarnpkg.com/catering/-/catering-2.1.1.tgz#66acba06ed5ee28d5286133982a927de9a04b510" integrity sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w== -cbor@^5.0.2: - version "5.2.0" - resolved "https://registry.yarnpkg.com/cbor/-/cbor-5.2.0.tgz#4cca67783ccd6de7b50ab4ed62636712f287a67c" - integrity sha512-5IMhi9e1QU76ppa5/ajP1BmMWZ2FHkhAhjeVKQ/EFCgYSEaeVaoGtL7cxJskf9oCCk+XjzaIdc3IuU/dbA/o2A== +cbor@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/cbor/-/cbor-8.1.0.tgz#cfc56437e770b73417a2ecbfc9caf6b771af60d5" + integrity sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg== dependencies: - bignumber.js "^9.0.1" - nofilter "^1.0.4" + nofilter "^3.1.0" chai-as-promised@^7.1.1: version "7.1.1" @@ -3546,6 +3568,11 @@ dotenv@^16.0.0: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.0.3.tgz#115aec42bac5053db3c456db30cc243a5a836a07" integrity sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ== +dotenv@^16.1.4: + version "16.3.1" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.3.1.tgz#369034de7d7e5b120972693352a3bf112172cc3e" + integrity sha512-IPzF4w4/Rd94bA9imS68tZBaYyBWSCE47V1RGuMrB94iyTOIEwRmVL2x/4An+6mETpLrKJ5hQkB8W4kFAadeIQ== + drbg.js@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/drbg.js/-/drbg.js-1.0.1.tgz#3e36b6c42b37043823cdbc332d58f31e2445480b" @@ -4494,6 +4521,11 @@ follow-redirects@^1.12.1: resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== +follow-redirects@^1.15.4: + version "1.15.4" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.4.tgz#cdc7d308bf6493126b17ea2191ea0ccf3e535adf" + integrity sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw== + for-each@^0.3.3: version "0.3.3" resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.3.tgz#69b447e88a0a5d32c3e7084f3f1710034b21376e" @@ -4536,6 +4568,15 @@ form-data@^3.0.0: combined-stream "^1.0.8" mime-types "^2.1.12" +form-data@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" + integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@~2.3.2: version "2.3.3" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" @@ -5757,6 +5798,11 @@ json-schema-traverse@^0.4.1: resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +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" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-schema@0.4.0, json-schema@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" @@ -6068,6 +6114,11 @@ lodash.camelcase@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA== +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ== + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" @@ -6078,6 +6129,11 @@ lodash.startcase@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.startcase/-/lodash.startcase-4.4.0.tgz#9436e34ed26093ed7ffae1936144350915d9add8" integrity sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg== +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw== + lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.16, lodash@^4.17.19, lodash@^4.17.21: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" @@ -6637,10 +6693,10 @@ node-gyp-build@^4.2.0, node-gyp-build@^4.3.0: resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.6.0.tgz#0c52e4cbf54bbd28b709820ef7b6a3c2d6209055" integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ== -nofilter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-1.0.4.tgz#78d6f4b6a613e7ced8b015cec534625f7667006e" - integrity sha512-N8lidFp+fCz+TD51+haYdbDGrcBWwuHX40F5+z0qkUjMJ5Tp+rdSuAkMJ9N9eoolDlEVTf6u5icM+cNKkKW2mA== +nofilter@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/nofilter/-/nofilter-3.1.0.tgz#c757ba68801d41ff930ba2ec55bab52ca184aa66" + integrity sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g== nopt@3.x: version "3.0.6" @@ -7106,6 +7162,11 @@ promise@^8.0.0: dependencies: asap "~2.0.6" +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" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + prr@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" @@ -7432,7 +7493,7 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== -require-from-string@^2.0.0: +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" integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== @@ -7808,6 +7869,15 @@ slash@^4.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + smartwrap@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/smartwrap/-/smartwrap-2.0.2.tgz#7e25d3dd58b51c6ca4aba3a9e391650ea62698a4" @@ -8250,6 +8320,17 @@ table-layout@^1.0.2: typical "^5.2.0" wordwrapjs "^4.0.0" +table@^6.8.0: + version "6.8.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf" + integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA== + 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" + term-size@^2.1.0: version "2.2.1" resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.1.tgz#2a6a54840432c2fb6320fea0f415531e90189f54" @@ -8588,11 +8669,6 @@ unbox-primitive@^1.0.2: has-symbols "^1.0.3" which-boxed-primitive "^1.0.2" -undici@^4.14.1: - version "4.16.0" - resolved "https://registry.yarnpkg.com/undici/-/undici-4.16.0.tgz#469bb87b3b918818d3d7843d91a1d08da357d5ff" - integrity sha512-tkZSECUYi+/T1i4u+4+lwZmQgLXd4BLGlrc7KZPcLIW7Jpq99+Xpc30ONv7nS6F5UNOxp/HBZSSL9MafUrvJbw== - undici@^5.14.0: version "5.21.2" resolved "https://registry.yarnpkg.com/undici/-/undici-5.21.2.tgz#329f628aaea3f1539a28b9325dccc72097d29acd"